Page 1 sur 2

Liste déroulante et recherche Mysql

Posté : 15 déc. 2005, 14:54
par epilogg
Salut tout le monde !

J'ai regardé les différents sujets portant sur mon cas, ainsi que le tutorial de php débutant sur la fonction 'where' mais j'ai quelques problèmes.

Sur une premiere page, j'ai une liste déroulante dont les entrées correspondent à une table composée de deux champs "codelieux" et "libellelieux". Sur mon autre table, j'ai mes événements et j'ai rapporté le codelieux sur cette table. chaque événement a donc en face de lui un codelieux (dans le but de pouvoir afficher les événements qui passent dans un meme lieu).

Sur la premiere page donc j'ai ce code :
 <select name="genre">  
 <?php  
mysql_connect('localhost','root','') or die('Erreur de connexion');  
mysql_select_db('v3_essai') or die('Base inexistante');  
$sql = 'SELECT * FROM lieux;';  
$query = mysql_query($sql) or die( 'Erreur' );  
$nb = mysql_fetch_array($query);  
if ( !$nb[0] ) {  
echo '<option>Aucun lieux</option>';  
} else {  
while ( $list = mysql_fetch_array( $query ) ) {  
echo '<option value="'.$list['codelieux'].'">'.$list['libellelieux'].'</option>';  

}  
}  
 mysql_close();  
?>  
</select>  
ca fonctionne bien, j'ai bien mes lieux qui apparaissent dans la liste déroulante (mais j'ai pas trouver les instructions à faire pour mettre un bouton "valider")

c'est la que commence les ennuis. je sais pas quoi mettre sur ma page cible pour afficher la requete lieux ainsi que les événements qui y correspondent. J'ai ce code (toujours du tutos de phpdeb)
 mysql_connect('localhost','root','');
		mysql_select_db('v3_essai');
	
	   	$sql= "SELECT * FROM lieux WHERE $list['codelieux'];";
		$query = mysql_query($sql) or die( 'Erreur' );  
		$nb = mysql_fetch_array($query);  
		if ( $nb>0 ) {  
		echo 'Aucun événement';  
		 else {  
		while ( $list = mysql_fetch_array( $query ) ) {  
		//traitement du résultat  
		}
		}

    mysql_close(); 
mais je le capte pas trop, je sais pas ou définir mes variables, fin bref je suis bien paumé. Vos précieux conseils me seraient très utiles :-" merci

Posté : 15 déc. 2005, 15:36
par sunmx
salut,
tout dabord il te faut mettre les balises de formulaire sur ta 1ere page.
Et mettre un bouton submit.

Code : Tout sélectionner

<form name="form" method="post" action="ma_page2.php"> <select name="maliste"> <!-- extraction de ta liste --> </select> <input type="submit" name="submit" value="Envoyer" /> </form>
Ensuite sur ta page 2 :

Tu récuperes l'information envoyer :

$codeLieu = $_POST["maliste"];
$sql= "SELECT * FROM lieux WHERE codelieux='$codeLieu'"; 

voila fais les modifications là.

Je repasse tout à l'heure.

Posté : 15 déc. 2005, 17:18
par epilogg
salut sunmx, désolé je devais faire autre chose, j'ai repris depuis une petite demi heure. Pour la premiere page c'est ok, j'ai bien mon bouton envoyer qui envoie bien. Sur la deuxième ca a l'air de le faire j'ai juste un petit problème d'affichage, je suis toujours un peu paumé des les variables, des trucs que je comprends pas bien, voila ce que ca donne :
 
 <?php  
mysql_connect('localhost','root','') or die('Erreur de connexion');  
mysql_select_db('v3_essai') or die('Base inexistante');  
$codeLieu = $_POST["maliste"];
$sql= "SELECT * FROM lieux WHERE codelieux='$codeLieu'";
$query = mysql_query($sql) or die( 'Erreur' );  
$nb = mysql_fetch_array($query); 
echo  '$maliste';
mysql_close();
?>


Posté : 15 déc. 2005, 18:37
par Invité
j'en suis la... :(

page recherche.php
<form name="form" method="post" action="agenda/recherche2.php">
<select name="maliste">
<!-- extraction de ta liste -->

 <?php  
mysql_connect('localhost','root','') or die('Erreur de connexion');  
mysql_select_db('v3_essai') or die('Base inexistante');  
$sql = 'SELECT * FROM lieux;';  
$query = mysql_query($sql) or die( 'Erreur' );  
$nb = mysql_fetch_array($query);  
if ( !$nb[0] ) {  
echo '<option>Aucun lieux</option>';  
} else {  
while ( $list = mysql_fetch_array( $query ) ) {  
echo '<option value="'.$list['codelieux'].'">'.$list['libellelieux'].'</option>';  

}  
}  
 mysql_close();  
?> 
</select>

<input type="submit" name="submit" value="Envoyer" />
</form>
(ca a l'air de bien fonctionner)

page recherche2.php, j'ai pas réussi à afficher, alors je l'ai fait à ma sauce, sachant que les codelieux de la table lieux devraient me balancer le contenu correspond, c'est à dire les champs heure, type et prix de la table ag_fev1

 <?php  
mysql_connect('localhost','root','') or die('Erreur de connexion');  
mysql_select_db('v3_essai') or die('Base inexistante');  

$codeLieu = $_POST["maliste"];
$requete= "SELECT heure, type, prix FROM ag_fev1 WHERE codelieux='$codeLieu'";

$var = mysql_query($requete) or die( 'Erreur' );  

while ($data=mysql_fetch_($var));
{ 

		echo '<tr><td width="90" height="40" valign="top" class="maclass1">' . $data['heure'] . '</td>'; 
        echo '<td width="350" valign="top" class="maclass1">' . $data['type'] . '</td>'; 
        echo '<td width="90" valign="top" class="maclass1">' . $data['prix'] . '</td></tr>'; 
                  

}
mysql_close();
?>

ca donne rien, j'ai une page blanche... ca doit venir d'un mauvais appel de variable mais je vois pas, de l'aide siiiouplait  :roll:

Posté : 15 déc. 2005, 18:38
par epilogg
<<< invité précédent

Posté : 15 déc. 2005, 19:32
par sunmx
Essaye plutôt ca :
 <?php
mysql_connect('localhost','root','') or die('Erreur de connexion');
mysql_select_db('v3_essai') or die('Base inexistante');

$codeLieu = $_POST["maliste"];
$requete= "SELECT * FROM ag_fev1 WHERE codelieux='$codeLieu'";

$var = mysql_query($requete) or die( 'Erreur' );

while ($data=mysql_fetch_array($var));
{

echo '<tr><td width="90" height="40" valign="top" class="maclass1">' . $data['heure'] . '</td>';
echo '<td width="350" valign="top" class="maclass1">' . $data['type'] . '</td>';
echo '<td width="90" valign="top" class="maclass1">' . $data['prix'] . '</td></tr>';


}
mysql_close();
?> 

Posté : 15 déc. 2005, 20:16
par epilogg
toujours le meme probleme : page blanche, nada #-o

Posté : 15 déc. 2005, 20:24
par Truc
Salut, 2 conseils:

1. regarde le code source de la page comportant la liste déroulante (select) pour verifier les données (interprétation des variables).

2.affiche la requete générée sur la 2eme page avec un echo juste apres l'avoir définie. =>
echo $requete;
et exécute (copier/coller)dans phpmyadmin pour verifier si tu as un retour.

au passage reste avec la séléction des champs que tu as besoin (heure, type, prix) dans le SELECT a la place de *, bonne habitude a garder :wink:

Posté : 15 déc. 2005, 20:54
par epilogg
au niveau du code source, ca me semble pas mal, il met bien le codelieux et le libellelieux

Code : Tout sélectionner

<form name="form" method="post" action="agenda/recherche2.php"> <select name="maliste"> <!-- extraction de ta liste --> <option value="chab">Le Chabada</option><option value="IM">Institut Municipal</option><option value="AC">Autrement Café</option><option value="TRC">T'es Rock Coco</option><option value="TD">Théâtre des Dames</option><option value="JB">Salle Jacques Brel</option><option value="AJD">Atelier Jean Dasté</option><option value="CDC">Centre des Congrès</option><option value="TCB">Théâtre du Champ de Bataille</option><option value="GT">Grand Théâtre</option> </select> <input type="submit" name="submit" value="Envoyer" /> </form>
quand j'affiche la requete il me dit ca (c'est démonstratif un ordinateur quand meme :lol: )

SELECT * FROM ag_fev1 WHERE codelieux='chab'

ca a l'air bon aussi, ce que je comprends pas c'est que nulle part dans le code php de ma page 2, j'ai une instruction qui lui dit d'afficher les champs heure, type prix des lignes ou le champs "codelieux" est présent... :-k

Posté : 15 déc. 2005, 21:01
par Truc
ca a l'air bon aussi, ce que je comprends pas c'est que nulle part dans le code php de ma page 2 le champ "libellelieux" n'apparait.
un truc qui dirait pour codelieux=chab afficher libellelieux= Le Chabada (le champs correspondant dans ma table lieux) :-k
le champ "libellelieux" vient de la table "lieux" dans la 1ere page... ce champ est_t_il aussi présent dans la table "ag_fev1" ? pour réafficher en fonction du code ("codelieux").

sinon sur la 1ere page seul les valeur qui se trouve dans l'attribut "value" de la balsie <option> sont passées a la page suivante.

je comprend pas tre bien ou tu veut en venir non plus ?! :-k
si tu as le code (chab) alors tu devrai afficher les donnée (heure, type, prix) ayant ce code !

Posté : 15 déc. 2005, 21:10
par Truc
tu as édité ton post c'est un peu plus compréhensible comme ça :wink:

mais la condition existe bien dans la requete avec la clause WHERE, donc les champs comportant ce code seront séléctionnés par la requete.

teste avec un affichage simple:
$codeLieu = $_POST["maliste"];
$requete= "SELECT heure, type, prix FROM ag_fev1 WHERE codelieux='".$codeLieu."'";

$var = mysql_query($requete) or die( 'Erreur' );

while ($data=mysql_fetch_array($var));
{
echo  $data['type'] . '<br />';
echo  $data['prix'] . '<br />';
echo  $data['heure'] . '<br />';
} 
il ne devrai pas y avoir de problemes si la table est bien remplie.

Posté : 15 déc. 2005, 21:13
par epilogg
Merci! je tente
et
désolé pour le cafouillage :roll: :lol:

Posté : 15 déc. 2005, 21:23
par epilogg
ca fait ch...suer p$$$$ toujours une page blanche. je vois pas d'ou ca peut venir, je suis sur de ma base de données

Posté : 15 déc. 2005, 21:32
par epilogg
je vais arrêter la pour aujourd'hui... la tête basse, les épaules lourdes : vaincu !
Merci pour vos tuyaux... et certainement à demain :ordi: :wink:

Posté : 16 déc. 2005, 11:07
par epilogg
Bonjour!

Bon ben je reprends ou j'en étais. c'est à dire, deux tables :

1 - Lieux qui contient les champs 'codelieux' et 'libellelieux'

2 - ag_fev1 qui contient les champs 'heure, type, prix et codelieux'

sur ma premiere page, j'ai une liste déroulante qui affiche les "libellelieux" de ma table lieux et qui doit poster le choix de l'internaute à la page 2. ca fonctionne nickel :

<form name="form" method="post" action="agenda/recherche2.php">
<select name="maliste">
<!-- extraction de ta liste -->

 <?php  
mysql_connect('localhost','root','') or die('Erreur de connexion');  
mysql_select_db('v3_essai') or die('Base inexistante');  
$sql = 'SELECT codelieux, libellelieux FROM lieux;';  
$query = mysql_query($sql) or die( 'Erreur' );  
$nb = mysql_fetch_array($query);  
if ( !$nb[0] ) {  
echo '<option>Aucun lieux</option>';  
} else {  
while ( $list = mysql_fetch_array( $query ) ) {  
echo '<option value="'.$list['codelieux'].'">'.$list['libellelieux'].'</option>';  

}  
}  
 mysql_close();  
?> 
</select>

<input type="submit" name="submit" value="Envoyer" />
</form> 
La ou j'ai un probleme, c'est sur la page 2 :


<?php
mysql_connect('localhost','root','') or die('Erreur de connexion');
mysql_select_db('v3_essai') or die('Base inexistante');

$codeLieu = $_POST["maliste"];
$requete= "SELECT heure, type, prix FROM ag_fev1 WHERE codelieux='".$codeLieu."'";

$var = mysql_query($requete) or die( 'Erreur' );

while ($data=mysql_fetch_assoc($var));
{
echo  $data['type'] . '<br />';
echo  $data['prix'] . '<br />';
echo  $data['heure'] . '<br />';

}
mysql_close();
?> 
je voudrais qu'il m'affiche les champs heure, type et prix qui correspondent au codelieux, mais quand je fais l'aperçu, il me met une page blanche et dans les sources j'ai juste trois balises " <br /><br /><br /> " (pourtant que je fais un echo $requete, ca a l'air ok). Vous voyez une erreur quelque part ? je comprends pas...