Affichage d'une seule valeur requête PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage d'une seule valeur requête PHP

Re: Affichage d'une seule valeur requête PHP

par Invité » 26 nov. 2009, 15:09

Je tiens à completer l'info :

J'ai l'impression qu'il n'y aucun lien entre le Film affiché et l'horaire.

En somme, si l'horaire du 1er film affiché est "vide" alors il m'affiche l'horaire du 2nd film dans la case qui est réservé au 1er film !

Est-ce un problème lié à mon code PHP ?

Merci

Re: Affichage d'une seule valeur requête PHP

par Invité » 26 nov. 2009, 14:26

Bonjour,

Je suis désolé d'avoir pris du temps pour répondre.

En fait, aucun message d'erreur n'apparait. Je n'arrive pas à obtenir le résultat que je souhaite parce que (je pense que) la logique dans laquelle j'ai édité mon code (PHP et/ou requête Mysql) n'est pas "adéquate".

Je voudrai dans un tableau afficher les éléments suivants :

Titre du Film
Heure de la prochaine séance

Jusqu'à présent, voila comme j'ai codé en PHP pour obtenir mon tableau avec la liste des films :
<?php include("Connections/cinesoft_bdd.php");
	echo '<table border="1">';


$titre= mysql_query("SELECT film.* FROM film ORDER BY etat");
$nb_titre = mysql_num_rows($titre);
if($nb_titre)
 {
    echo '<tr>';
   while($row = mysql_fetch_array($titre)) 
   	{         
		 echo '<td>'.$row["Titre"].'</td>';
  
     }
	echo '</tr>';	
}
En dessous, je voudrai afficher les horaires (en comparons avec l'heure actuelle) de la prochaine séance pour chaque film affiché, en suivant cet algorithme :
Afficher une seule valeur de "Film_Seance.Horaire" QUI REPOND A : Film_Seance.Horaire > $horaire_actuel (obtenue par le code suivant

Code : Tout sélectionner

$localtime = localtime(); $minute = $localtime[1]; $heure = $localtime[2]; $horaire_actuel=($heure.':' .$minute);
Or avec le code que j'ai mis :
$heure_seance= mysql_query("SELECT seance.Horaire, film_seance.IDFilm FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND seance.Horaire > '$horaire_actuel' GROUP BY film_seance.IDFilm ORDER BY Film.Etat");
avec un affichage comme suit :
$nb_seance = mysql_num_rows($heure_seance);
if(isset($nb_seance))
 {
 
    echo '<tr>';
   while($row = mysql_fetch_array($heure_seance)) 
   {    
		// if (($heure.':' .$minute)<$row["Horaire"])
		 //	{
			 echo '<td>Prochaine séance : '.$row["Horaire"].' </td>';
		//	 }else{
		//	 echo '<td>Aucune séance</td>';
			// }
			 
			 
		 
		 
  
    }
	echo '</tr>';	
}
Le résultat retourné est :
La véritable histoire du Chat Botté | Twilight : Tentation | Alf Mabrouk
Prochaine séance : 19:45
Le résultat est bon, car il m'affiche uniquement la séance qui répond à la condition "> heure actuelle", par contre, il n'affiche pas les séances (qui répondent à la condition) pour les films suivants (Twilight et Alf Mabrouk).

J'espère avec été clair dans la description de mon problème.

Merci encore pour votre aide.

Re: Affichage d'une seule valeur requête PHP

par ouckileou » 22 nov. 2009, 21:36

Tu as fait ça :
EDIT: test ta requête dans ta base de donnée jusqu'à ce qu'elle fonctionne.
Là tu verras le message d'erreur qui te sera très utile, ainsi qu'à nous pour t'aider... les étapes à suivre pour débugguer son listées dans un post-it en haut du forum, merci de le lire :!:

Re: Affichage d'une seule valeur requête PHP

par Invité » 22 nov. 2009, 20:33

Hello,

Franchement, j'ai tout essayé, je n'arrive pas à obtenir le résultat souhaité.

Une petite aide s'impose :(

Merci

Re: Affichage d'une seule valeur requête PHP

par Yosh » 19 nov. 2009, 17:55

Parfait, l'idée est bonne !!!

En insérant ce code :
$heure_seance= mysql_query("SELECT seance.Horaire FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND film.IDFilm IN (SELECT seance.Horaire FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND '$horaire_actuel' < seance.Horaire ORDER BY film.etat, seance.Horaire ASC LIMIT 0,1)" );
J'ai l'erreur suivante :

Code : Tout sélectionner

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\cinesoft\front\index.php on line 83
Je n'ai pas encore vu sur les tuto, mais je pense que la synthaxe du "IN" n'est pas correcte ?
Non, le soucis vient surement du fait que le IN compare (ici) film.IDFilm avec seance.Horaire...

Il te faut comparer l'id du film dans la requête avec un id de film dans ta sous requête.

EDIT: test ta requête dans ta base de donnée jusqu'à ce qu'elle fonctionne.

Re: Affichage d'une seule valeur requête PHP

par Invité » 19 nov. 2009, 17:11

Parfait, l'idée est bonne !!!

En insérant ce code :
$heure_seance= mysql_query("SELECT seance.Horaire FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND film.IDFilm IN (SELECT seance.Horaire FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND '$horaire_actuel' < seance.Horaire ORDER BY film.etat, seance.Horaire ASC LIMIT 0,1)" );
J'ai l'erreur suivante :

Code : Tout sélectionner

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\cinesoft\front\index.php on line 83
Je n'ai pas encore vu sur les tuto, mais je pense que la synthaxe du "IN" n'est pas correcte ?

Re: Affichage d'une seule valeur requête PHP

par Yosh » 19 nov. 2009, 17:03

Tu cherche à affiché pour chaque film, la première séance donc.

Effectivement le LIMIT à sa limte ^^

Plus concrètement, passe par une sous-requête qui elle ne te renvoie que la première séance pour chaque film, je ferais qq chose du genre:
SELECT film_libelle, seance.Horaire FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND film.IDFilm IN (SELECT film.IDFilm FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND '$horaire_actuel' < seance.Horaire ORDER BY film.etat, seance.Horaire ASC LIMIT 0,1)
Ici, la requête principal va lister tous les films, et pour chaque film tu va récupérer l'horaire suivant.

PS: pas tester mais un truc dans ce genre devrait fonctionner

Re: Affichage d'une seule valeur requête PHP

par Invité » 19 nov. 2009, 16:10

Merci pour l'info, le souci c'est quand j'applique le code suivant (voir en dessous), seul l'horaire du 1er film apparait !
$localtime = localtime();
$minute =  $localtime[1];
$heure =  $localtime[2];

$horaire_actuel=($heure.':' .$minute);

$heure_seance= mysql_query("SELECT seance.Horaire FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND '$horaire_actuel' < seance.Horaire ORDER BY film.etat, seance.Horaire ASC LIMIT 0,1" );
$nb_seance = mysql_num_rows($heure_seance);
if(isset($nb_seance))
 {
 
    echo '<tr>';
   while($row = mysql_fetch_array($heure_seance)) 
   {    
		// if (($heure.':' .$minute)<$row["Horaire"])
		 //	{
			 echo '<td>Prochaine séance : '.$row["Horaire"].'</td>';
		//	 }else{
		//	 echo '<td>Aucune séance</td>';
			// }
			 
			 
		 
		 
  
    }
	echo '</tr>';	
}

Re: Affichage d'une seule valeur requête PHP

par Yosh » 19 nov. 2009, 15:33

L'option TOP ne fonctionne que sous MSSQL, pour MYSQL il te faut faire un LIMIT 0,1 (cf la documentation officiel) et n'oublie pas de trier sur la date (ici sur l'horaire) afin de récupérer seulement le prochain horaire.

Affichage d'une seule valeur requête PHP

par Paradox_Ma » 19 nov. 2009, 15:13

Bonjour,

Je suis en train de développer une interface qui me permet d'afficher les films et l'heure de LA prochaine séance. Avec le code ci-dessous, j'arrive à obtenir les prochaines séances des films, mais je voudrai en fait récupérer uniquement la 1ére séance.
$heure_seance= mysql_query("SELECT seance.Horaire FROM film, film_seance, seance WHERE film.IDFilm=film_seance.IDFilm AND seance.IDSeance = film_seance.IDSeance AND '$horaire_actuel' < seance.Horaire ORDER BY film.etat, seance.Horaire ASC" );
$nb_seance = mysql_num_rows($heure_seance);
if(isset($nb_seance))
 {
 
    echo '<tr>';
   while($row = mysql_fetch_array($heure_seance)) 
   {    
		// if (($heure.':' .$minute)<$row["Horaire"])
		 //	{
			 echo '<td>Prochaine séance : '.$row["Horaire"].'</td>';
		//	 }else{
		//	 echo '<td>Aucune séance</td>';
			// }
			 
			 
		 
		 
  
    }
	echo '</tr>';	
}
J'ai essaye le TOP 1, mais ça ne fonctionne pas.

Merci