Liste déroulante et recherche Mysql

Eléphant du PHP | 90 Messages

15 déc. 2005, 14:54

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

Eléphanteau du PHP | 12 Messages

15 déc. 2005, 15:36

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.

Eléphant du PHP | 90 Messages

15 déc. 2005, 17:18

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();
?>


Invité
Invité n'ayant pas de compte PHPfrance

15 déc. 2005, 18:37

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:

Eléphant du PHP | 90 Messages

15 déc. 2005, 18:38

<<< invité précédent

Eléphanteau du PHP | 12 Messages

15 déc. 2005, 19:32

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();
?> 

Eléphant du PHP | 90 Messages

15 déc. 2005, 20:16

toujours le meme probleme : page blanche, nada #-o

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 déc. 2005, 20:24

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 90 Messages

15 déc. 2005, 20:54

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
Modifié en dernier par epilogg le 15 déc. 2005, 21:01, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 déc. 2005, 21:01

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 !

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 déc. 2005, 21:10

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 90 Messages

15 déc. 2005, 21:13

Merci! je tente
et
désolé pour le cafouillage :roll: :lol:

Eléphant du PHP | 90 Messages

15 déc. 2005, 21:23

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

Eléphant du PHP | 90 Messages

15 déc. 2005, 21:32

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:

Eléphant du PHP | 90 Messages

16 déc. 2005, 11:07

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...