8796 sujets

Développement web côté serveur, CMS

Bonjour, j'ai une requête qui est juste puisqu'il m'affiche un résultat sur phpmyadmin. Voici mon code:


$sql2= "SELECT medecin.nom_med, livreur.nom_livreur, livreur.raison_livreur, livreur.ville_livreur
FROM livreur, medecin, demande
WHERE medecin.num_med=demande.num_med
AND demande.num_livreur=livreur.num_livreur
AND demande.date_demande>= ".$date_d."
AND demande.date_demande<= ".$date_f."";

print("$sql2<br>");


$tab_coul=array("#58BCF7","#1AA6F7");
$rs2 = mysql_query($sql2 , $connect);
$ligne2=mysql_fetch_assoc($rs2);
print(" ".$ligne["nom_livreur"]."<br>");
$cpt=0;
if ($lg=mysql_fetch_assoc($rs2)) { echo "y a du resultat"; } else { echo "pa de resu";}

while ( $lg=mysql_fetch_array($rs2))
{
$cpt++;
$rest=$cpt%count($tab_coul);
$coul=$tab_coul[$rest];

echo "<tr bgcolor=\"".$coul."\"><td> ".$lg["nom_med"]."</td>
<td> ".$lg["nom_livreur"]."</td>
<td> ".$lg["raison_livreur"]."</td>
<td> ".$lg["ville_livreur"]."</td>
<td> ".$lg[""]."</td>
<td> ".$lg[""]."</td>
<td> ".$lg[""]."</td></tr>";
}
?>


$connect renvoie à un fichier d'inclusion afin de se connecter à la BD, ça fonctionne.

print(" ".$ligne["nom_livreur"]."<br>"); --> m'affiche: Notice: Undefined index: nom_livreur
Au if, il renvoie pas de resu et le while m'affiche rien.

Merci de votre aide!
Modifié par maxoup (20 Apr 2011 - 11:56)
Pour ton print ne seraist-ce pas à cause du $ligne qui devrait être un $ligne2 ?
print(" ".$ligne2["nom_livreur"]."<br>");


Comme tu indiques que la requête ne renvoie qu'un seul résultat pour ta requête sous PHPmyAdmin je suppose que le soucis du while vient de ton print et de ton if :
- à chaque fois que tu invoques mysql_fetch_assoc tu avances d'une ligne dans ton tableau de résultat, ce qui veut dire que au début du while tu est déjà es la ligne 2. Si ta requête initiale ne renvoie que 1 résultat, normal que le while n'affiche rien.

Pour tester si la requête renvoie des résultats pourquoi ne pas utiliser un
if (mysql_num_rows($rs2) > 0 ){
 echo ' y a du résultat ';
}else{
echo ' y a PAS de résultat ';
}
 



Edit: pour cause de touche entrée , c'est mon premier post soyez indulgent ^^
Modifié par Namisca (20 Apr 2011 - 12:59)
Pour le print problème résolu.

J'ai mis en commentaire le while, afin de tester juste le IF.

Normalement il devrait afficher "y a du resultat" or il affiche "pas de resu"

pourquoi?

Je sais que dans ma base de donnée, il n'y a qu'un seul résultat à cette requête, mais il peut en avoir plusieurs.
Modifié par maxoup (20 Apr 2011 - 13:48)
Si tu laisses ce bout de code dans ton code

$ligne2=mysql_fetch_assoc($rs2);
print(" ".$ligne["nom_livreur"]."<br>");


tu avances toujours le pointeur de 1 d'où le while vide. Normalement un code comme ci dessous devrait fonctionner sans problème.

<?php

$sql2= "SELECT medecin.nom_med, livreur.nom_livreur, livreur.raison_livreur, livreur.ville_livreur 
FROM livreur, medecin, demande 
WHERE medecin.num_med=demande.num_med
AND demande.num_livreur=livreur.num_livreur
AND demande.date_demande>= ".$date_d."
AND demande.date_demande<= ".$date_f."";

print("$sql2<br>");

$tab_coul=array("#58BCF7","#1AA6F7");
$tab_count = count($tab_coul);// j'ai mis le count ici car dans la mesure où ton tableau de couleurs ne change pas, sa taille non plus ne pas varier.

$rs2 = mysql_query($sql2 , $connect);
$cpt=0;

if(mysql_num_rows($rs2) > 0 ){
	echo 'y a des résultats<br/>';
	while($lg=mysql_fetch_array($rs2)){
		$cpt++;
		$rest=$cpt%$tab_count;
		$coul=$tab_coul[$rest];
		echo "<tr bgcolor=\"".$coul."\"><td> ".$lg["nom_med"]."</td>
		<td> ".$lg["nom_livreur"]."</td>
		<td> ".$lg["raison_livreur"]."</td>
		<td> ".$lg["ville_livreur"]."</td>
		<td> ".$lg[""]."</td>
		<td> ".$lg[""]."</td>
		<td> ".$lg[""]."</td></tr>";
	}
}else{
	echo 'aucun résultat trouvé   [decu] ';
}
?>


Au pire teste avec une requête qui donne plus de un résultat sûr pour vérifier.
Peux-tu redonner ton code actualisé en cas de souci?

Edit: rajout du $ oublié
Modifié par Namisca (20 Apr 2011 - 15:52)
Voici le résultat de ton code :

SELECT medecin.nom_med, livreur.nom_livreur, livreur.raison_livreur, livreur.ville_livreur FROM livreur, medecin, demande WHERE medecin.num_med=demande.num_med AND demande.num_livreur=livreur.num_livreur AND demande.date_demande>= 2011-04-11 AND demande.date_demande<= 2011-04-21

Notice: Use of undefined constant rs2 - assumed 'rs2' in /Applications/MAMP/travaux/stage adoc/sortie_bordereau_livraison.php on line 96

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /Applications/MAMP/travaux/stage adoc/sortie_bordereau_livraison.php on line 96
aucun résultat trouvé
J'ai oublié un $ dans la ligne Smiley ohwell c'est:

mysql_num_rows($rs2)


qu'il fallait lire.

Après rajoute un echo du mysql_num_rows($rs2) pour voir le nombre et au pire rajoute aussi un print de $lg dans le while pour vérifier le contenu.
non il m'indique seulement ceci:
SELECT medecin.nom_med, livreur.nom_livreur, livreur.raison_livreur, livreur.ville_livreur FROM livreur, medecin, demande WHERE medecin.num_med=demande.num_med AND demande.num_livreur=livreur.num_livreur AND demande.date_demande>= 2011-04-11 AND demande.date_demande<= 2011-04-21
aucun résultat trouvé

il n'affiche même pas:

print("".$lg["nom_med"]."<br>");
print("mysql_num_rows($rs2) <br>") ;
Modifié par maxoup (20 Apr 2011 - 16:17)
J'ai rajoute des données dans ma bd pour avoir plusieurs lignes de résultats, mais j'ai toujours aucun résultat qui s'affiche.
Modifié par maxoup (21 Apr 2011 - 08:52)