Problème de récupération de données

Répondre
rafale69300
le 19/06/2009 à 12:10
rafale69300
bonjour tout le monde,
Ma page permet de sélectionner dans la 1ère liste un bâtiment et sa salle en fonction de ce choix dans la 2ème liste il y a les portes de cette salle, après l'avoir sélectionnée je voudrais afficher ces informations pour cela je dois récupérer la valeur de ma 2ème liste, je pense le faire correctement mais malheureusement non puisque j'ai un problème de fetch array donc ma requête doit être fausse.
Je vous laisse mon code, c'est vers la ligne 124 qu'il y a le problème du fetch array.

<?php 

/* On récupère si elle existe la valeur du batiment envoyée par le formulaire */
$idr = isset($_POST['salle'])?$_POST['salle']:null;

if(isset($_POST['ok']) && isset($_POST['porte']) && $_POST['porte'] != "")
{
$salle_selectionnee = $_POST['salle'];
$porte_selectionne = $_POST['porte'];
}
?>


<?php

$sql1 = "SELECT B.id_bat,nom_bat,id_salle,lib_salle FROM batiments B,salles S WHERE B.id_bat = S.id_bat order by nom_bat";
$rech_salle = mysql_query($sql1);
$code_salle = array();
$nom_salle = array();
$nom_bat = array();
/* On active un compteur pour les batiments */
$nb_salle = 0;
if($rech_salle != false)
{
while($ligne = mysql_fetch_assoc($rech_salle))
{
array_push($code_salle, $ligne['id_salle']);
array_push($nom_salle, $ligne['lib_salle']);
array_push($nom_bat, $ligne['nom_bat']);

/* On incrémente de compteur */
$nb_salle++;
}
}
?>

<style type="text/css">
<!--
.taille {font-size: x-small}
-->
</style>

<p align="center"><strong>Informations sur une porte de la commune :</strong></p>
<p>&nbsp;</p>
<p class="taille">S&eacute;lectionnez un b&acirc;timent et une salle dans la 1ère liste d&eacute;roulante puis dans la 2ème liste d&eacute;roulante s&eacute;lectionnez une porte et vous aurez acc&egrave;s &agrave; toutes ces informations</p>
<form name="formulaire" action="./index.php?page=info_porte&amp;categorie=porte" method="post" id="chgsalle">
<?php
mysql_free_result($rech_salle);
/* On commence par vérifier si on a envoyé un numéro de batiment et le cas échéant s'il est différent de -1 */

if(isset($idr) && $idr != -1)
{
/* Cération de la requête pour avoir les salles de ce batiment */
$sql2 = "SELECT `id_porte`, `lib_porte`".
" FROM `portes`".
" WHERE `id_salle` = ". $idr ."".
" ORDER BY `id_porte`;";

$rech_porte = mysql_query($sql2);
/* Un petit compteur pour les salles */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des salles */
$code_porte = array();
$nom_porte = array();
/* On va mettre les numéros et noms des salles dans les deux tableaux */
while($ligne_porte = mysql_fetch_assoc($rech_porte))
{
array_push($code_porte, $ligne_porte['id_porte']);
array_push($nom_porte, $ligne_porte['lib_porte']);
$nd++;
}
/* Maintenant on peut construire la liste déroulante */

}

?>


<table width="50%" border="0">
<tr>
<td width="45%"><p>B&acirc;timent & Salle<span class="Etoile"></span> :</p>
<p>
<select name="salle" id="salle" onchange="document.forms['chgsalle'].submit();">
<option value="-1">Choisissez un batiment & salle</option>
<?php
for($i = 0; $i < $nb_salle; $i++)
{
?>
<option value="<?php echo($code_salle[$i]); ?>"<?php echo((isset($idr) && $idr == $code_salle[$i])?" selected=\"selected\"":null); ?>><?php echo($nom_bat[$i]."&nbsp;-&nbsp;".$nom_salle[$i]); ?></option>
<?php
}
?>
</select>
</p></td></tr><tr>
<td width="55%"><p>Porte<span class="Etoile"></span> :</p>
<p><select name="porte" id="porte">
<option value="-1">Choisissez une porte</option>
<?php
for($d = 0; $d<$nd; $d++)
{
?>
<option value="<?php echo($code_porte[$d]); ?>"<?php echo((isset($porte_selectionne) && $porte_selectionne == $code_porte[$d])?" selected=\"selected\"":null); ?>><?php echo($nom_porte[$d]." "); ?></option>
<?php
}
?>
</select>
</p></td>
</tr></table>

<?php
if(isset($_POST['porte'])){
$requete="SELECT code_porte,lib_porte,lib_salle,S.id_salle FROM portes P,salles S
WHERE S.id_salle='".$_POST['porte']."'
AND P.id_salle = S.id_salle";
$resultat=mysql_query($requete);}
else{
if(isset($_GET['porte'])){
$requete="SELECT code_porte,lib_porte,lib_salle,S.id_salle FROM portes P,salles S
WHERE S.id_salle='".$_GET['porte']."'
AND P.id_salle = S.id_salle";
$resultat=mysql_query($requete);}
}

while($donnees = mysql_fetch_array($resultat)){
?>
<p align="center">
<p align="center">
<p align="center">
<p><strong>Code de la Porte :</strong> <?php echo $donnees[0];?></p><br />
<p><strong>Lib&eacute;ll&eacute; de la Porte :</strong> <?php echo $donnees[1];?></p><br />
<p><strong>Salle de la Porte :</strong> <?php echo '<a href="./index.php?page=info_salle&categorie=salle&choix='.$donnees[3].'">'.$donnees[2].'</a>';?></p><br />


<?php
}


?>
Jérémy
LA GLOBULE
le 19/06/2009 à 12:29
LA GLOBULE
j'ai un problème de fetch array donc ma requête doit être fausse


Il y'a un moyen d'en être sur : colle un or die mysql_error sur tes mysql_query.

Exemple :

<?php
$resultat=mysql_query($requete) or die ($requete.'<br />'.mysql_error());
?>


1) tu vois l'erreur
2) ca t'affiche la requete telle qu'elle a été envoyé à MySQL

Au final, tu ne debug pas à l'aveuglette en faisait ca.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours