Affichage de résultat d'une bd avec php

Fermé
maguy - 11 janv. 2011 à 14:52
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 11 janv. 2011 à 16:23
Bonjour,

J'aurais une question sur un code:
Quand l'utilisateur choisit "Nouvelle-Zélande" comme pays, j'aimerais que les 2 villes et hotels correspondant à Nouvelle-Zélande dans la DB s'affichent en-dessous du formulaire (notamment avec la photo).

J'ai essayé de la ligne 181 jusqu'à la 199, mais quand je clique sur "Valider" dans le
navigateur, rien ne se passe...

voici les lignes:

<?php mysql_select_db($database_connexiondb, $connexiondb);

if(isset($_POST['valider']))
{
$voyages = sprintf("SELECT pays, ville, adresse, hotel, prixeuro, url_image FROM tb_voyages WHERE pays='". $_POST["select"] ."'");
$RSvoyages = mysql_query($voyages, $connexiondb) or die(mysql_error());
$row_RSvoyages = mysql_fetch_assoc($RSvoyages);
$totalRows_RSvoyages = mysql_num_rows($RSvoyages);

/*if($row_RSvoyages['pays'] == $_POST['select'])
{$RSvoyages;
}*/
}
while($donnees=mysql_fetch_array($RSvoyages)){
echo ("Pays:".$donnees['pays']."<br />");
echo ("Ville:".$donnees['ville']."<br />");
}

?>

Pourriez-vous regarder mon code svp?

Merci

3 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
11 janv. 2011 à 15:03
Bonjour,

Premièrement, il y a une petite erreur qui empêche d'afficher la première ligne de résultat, mais puisque tu dis que tu en as deux, on devrait au moins voir la deuxième. Supprimer quand même cette ligne-là :
$row_RSvoyages = mysql_fetch_assoc($RSvoyages);

Ensuite, juste après la partie que tu as mise en commentaire, il y a une accolade fermante qui traine.
Du coup, le "while" n'est plus dans le même bloc que le "if", et la variable $RSvoyages n'existe plus !
Il faut réintégrer le bloc "while" à l'intérieur du bloc "if".

Xavier
0
merci beaucoup, je vais changer cela tout de suite
0
Après changement, on a toujours un petit problème car rien ne s'affiche et rien ne se passe lorsque l'on valide la requête donc j'ai repris le code en partant d'un peu plus haut et ça donne ceci :


<h2>Recherche détaillée</h2>

<form action="choisir_mon_voyage_bis.php" method="post" id="formulaire">
<p>
<?php
mysql_free_result($req);

if(isset($idr) && $idr != -1)
{
$sql2 = 'SELECT DISTINCT ville FROM tb_voyages WHERE pays = "'. $idr .'ORDER BY'.'ville';

$req2 = mysql_query($sql2)
or die ("erreur3");
$num_ligne2 = mysql_num_rows($req2);
//echo $num_ligne2;
while($row = mysql_fetch_array($req2) )
{
$ville[] = $row['ville'];
//echo $ville[0];
//echo $ville[1];
}

}
?>
</p>
<p>
<select name="select" id="select">
<?php
do {
?>
<option value="<?php echo $row_rspays['pays']?>"<?php if (!(strcmp($row_rspays['pays'], $row_rspays['pays']))) {echo "selected=\"selected\"";} ?>><?php echo $row_rspays['pays']?></option>
<?php
} while ($row_rspays = mysql_fetch_assoc($rspays));
$rows = mysql_num_rows($rspays);
if($rows > 0) {
mysql_data_seek($rspays, 0);
$row_rspays = mysql_fetch_assoc($rspays);
}


?>
</select>
</p>
<P>
<input type="submit" name="valider" id="valider" value="Valider" />
</form>
<?php mysql_select_db($database_connexiondb, $connexiondb);

if(isset($_POST['valider']))
{
$voyages = sprintf("SELECT pays, ville, adresse, hotel, prixeuro, url_image FROM tb_voyages WHERE pays='". $_POST["select"] ."'");
$RSvoyages = mysql_query($voyages, $connexiondb) or die(mysql_error());

$totalRows_RSvoyages = mysql_num_rows($RSvoyages);

/*if($row_RSvoyages['pays'] == $_POST['select'])
{$RSvoyages;
}*/

while($donnees=mysql_fetch_array($RSvoyages)){
echo ("Pays:".$donnees['pays']."<br />");
echo ("Ville:".$donnees['ville']."<br />");
}

?>


Un tout grand merci d'avance
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
11 janv. 2011 à 16:23
> $sql2 = 'SELECT DISTINCT ville FROM tb_voyages WHERE pays = "'. $idr .'ORDER BY'.'ville';

Il manque une espace entre "ORDER BY" et "ville"

> do {
> ?>
> <option value="<?php echo $row_rspays['pays']?>"<?php if

Si tu fais un do {...}while , il faut que la variable que tu utilises pour faire la boucle ait une valeur dès le début. C'est l'erreur inverse de celle de ton while() que j'ai pointée au premier message. Soit tu remplaces ce do..while par un while simple, soit tu initialises la variable $row_rspays (sauf si ça a déjà été fait plus haut encore dans le code)


Et tout à la fin, je ne vois pas l'accolade fermante du if(isset($_POST['valider']))


Si ça ne va toujours pas, essaie de placer des indicateurs textuels du genre
echo "je passe par là",
echo $voyages
echo mysql_error()
histoire de bien voir où PHP passe, et avec quelles valeurs pour les variables...

Xavier
0