[RESOLU] Problème de menu déroulant

Petit nouveau ! | 2 Messages

30 juil. 2013, 16:58

Bonjour,

Depuis le passage de mon site d'hébergement en PHP5, mon script ne fonctionne plus.

En fait, la 1ère partie de mon menu déroulant fonctionne (sélectionner un département), c'est-à-dire que j'arrive à récupérer le sel_dpt.
Mais mon 2nd menu (Choisissez une commune) est vide (comme si la valeur de sel_dpt n'était pas prise en compte).

Pouvez-vous m'aider car cela fait plus d'un mois que j'essaye de m'en sortir.

Merci d'avance pour votre aide.
<?php
/* Activation du reporting */
mysqli_report(MYSQLI_REPORT_ALL);

// Ici on ouvre une connexion au serveur MySQL
// Voir le tutorial sur ce sujet
      $table = mysql_connect ('serveur', 'user', 'password'); 
      mysql_select_db ('base', $table); 
?>

<div style="padding-left:20px; background-color:#00FFFF">Choisissez tout d'abord votre département puis une ville ou un arrondissement de Paris. <br />
</div>
<br />

<div style="padding-left:25px">
<FORM method="GET" action="piscine.php">
<select name="sel_dpt" onchange="this.form.submit()">
    <option >Choisissez un département</option>
<? $sql = "select * from Departement WHERE (Code_dpt='75' OR Code_dpt='77' OR Code_dpt='78' OR Code_dpt='91' OR Code_dpt='92' OR Code_dpt='93' OR Code_dpt='94' OR Code_dpt='95' ) ORDER BY Dpt ASC";
   $req = mysql_query($sql);
   while ($res = mysql_fetch_array($req, MYSQL_BOTH )) {?>
    <option value="<?  echo $res["Code_dpt"];?>" 
	<?php if ($res["Code_dpt"] == $sel_dpt) echo "selected" ?>
	>
	<?  echo $res["Dpt"];?></option>
<? }?>
</select>

<? 
if($_GET["sel_dpt"]) { ?>

<select name="sel_ville" onchange="this.form.submit()">
    <option >Choisissez une commune</option>
<? $sql = "SELECT DISTINCT CP,Ville from piscine WHERE (Dpt='$sel_dpt') ORDER BY Ville ASC";
   $req = mysql_query($sql); ?>

<? if ($sel_dpt=='75') {?>
   <? while ($res = mysql_fetch_array($req)) {?>
    <option value="<?  echo $res["CP"];?>" <?php if ($res["CP"] == $sel_ville) echo "selected" ?>><?  echo $res["CP"];?></option>
	<? }?>
<? } else {?>
   <? while ($res = mysql_fetch_array($req)) {?>
    <option value="<?  echo $res["CP"];?>" <?php if ($res["CP"] == $sel_ville) echo "selected" ?>><?  echo $res["Ville"];?></option>
	<? }?>
<? } ?>
</select>
<? } ?>


</FORM>
</div>
<br />
<? 
if($_GET["sel_ville"]) {  


$sql = "select * from piscine WHERE (Dpt='$sel_dpt' AND CP='$sel_ville')";
   $req = mysql_query($sql);
   while ($res = mysql_fetch_array($req)) {
   $Nom=$res["Nom"]; 
   $Type_bassin=$res["Type_bassin"]; 
   $Adresse=$res["Adresse"]; 
   $Dpt=$res["Dpt"]; 
   $CP=$res["CP"]; 
   $Ville=$res["Ville"]; 
   $Phone=$res["Phone"]; 
   $Metro=$res["Metro"]; 
   $Bus=$res["Bus"]; 
   $Internet=$res["Internet"]; 
   $image=$res["image"];
   $Plan=$res["Plan"];

 
echo '<div style="padding:3px 3px 3px 3px; background-color:#33FFFF" align=center><font color="black" face="verdana, arial" style="font-size:18px">Piscine :&nbsp;<b>';
// Affiche le pseudo du posteur de message (avec lien mailto:)
echo "$Nom</b> - Commune de <b>$Ville</b>";
echo '</font></div><br />';


if($image){
echo '<img src="Images/Piscines/';
echo "$image";
echo '" width="200px" height="150px" />';
}
else
{
echo "Photo à venir";
}


echo '<div align=left><font color="black" face="verdana, arial" style="size:10px">';
echo '<b>Type de bassin(s): </b>';
echo "$Type_bassin <br><br />";
echo '<b>Adresse : </b>';
echo "$Adresse - $CP $Ville <br>";
echo '<b>Téléphone : </b>';
echo "$Phone<br>";

if($Metro!=""){
echo '<br><b>Métro ou RER : </b>';
echo "$Metro<br>";
}

if($Bus!=""){
echo '<br><b>Ligne Bus : </b>';
echo "$Bus<br>";
}

if($Plan!=""){
echo '<b>Plan de d\'accès et itinéraire : </b>';
echo '<a href="plan_piscine/';
echo "$Plan";
echo '" target=_blank>';
echo 'cliquez ici';
echo '</a><br>';
}

if($Internet!=""){
echo '<br><b>Adresse Internet : </b>';
echo '<a href="http://';
echo "$Internet";
echo '" target=_blank>';
echo "$Internet";
echo '</a><br>';
}

echo '</font></div>';
echo '<hr size=1>';
}
 } 
@mysql_close();
 
 ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 juil. 2013, 19:04

salut,

change les <? par <?php

ensuite la variable $sel_dpt n'existe pas c'est $_GET["sel_dpt"] qu'il faut utiliser.

on ne met pas une variable comme ça dans un if, mais on utilise isset ou empty
if(!empty($_GET["sel_dpt"])) par exemple.

ton code est ouvert aux injections SQL, utilise mysql_real_escape_stringpour éviter cela.

tu commence ton script par une fonction mysqli mais tu utilise l'extension mysql.
Cet appel est inutile, sauf si tu remplace l'utilisation de l'extension mysql par l'extension mysqli (ce qui serait une bonne idée ;) )

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

06 août 2013, 15:07

merci pour les conseils.

Effectivement, ça marche mieux maintenant.