Page 1 sur 1
Si la selection retourne quelquechose alors...
Posté : 15 juin 2005, 09:03
par BFH
Bonjour,
je fais une sélection dans ma base mais je n'arrive a exploiter correctement le résultat :
$temp="SELECT * FROM report WHERE RHost LIKE '".addslashes($row1['lieu'])."%'"; //choisit tous les rapports dont le nom est similaire à $row1
$result2= mysql_query($temp)or die(mysql_error());
if($result2="") //cette boucle if bug !
{
echo"Pas de rapports";
}
else
{
while($row3= mysql_fetch_assoc($result2))
{
...// ici le code fonctionne correctement
}
J'arrive pas a faire afficher "pas de rapports" si il n'y en a aucun!
Quelqu'un sait il pourquoi?
Posté : 15 juin 2005, 09:07
par ouckileou
tu devrais utiliser soit mysql_num_rows avec ta requête actuelle
soit faire un select count(*) et tester la valeur retournée de façon classique
mais pour tester une égalité c'est un double égal (==) et tu n'en as mis qu'un
Posté : 15 juin 2005, 09:10
par ouckileou
si tu veux juste tester le nombre d'enregistrements le Count() est mieux
$temp="SELECT COUNT(*) AS nb_lignes FROM report WHERE RHost LIKE '".addslashes($row1['lieu'])."%'"; //choisit tous les rapports dont le nom est similaire à $row1
$result2= mysql_query($temp)or die(mysql_error());
$resultat = mysql_fetch_array($result2);
$nbLignes = $resultat["nb_lignes"];
if($nbLignes < 1)
{
echo"Pas de rapports";
}
else
{
while($row3== mysql_fetch_assoc($result2))
{
...// ici le code fonctionne correctement
}
Posté : 15 juin 2005, 09:11
par daoud
Je pense aussi qu'il faut que tu testes plutôt si "result2" est faux car :
Pour les requêtes du type SELECT, SHOW, DESCRIBE ou EXPLAIN, mysql_query() retournera une ressource en cas de succès, et FALSE en cas d'erreur.
a+
daoud
Posté : 15 juin 2005, 09:15
par BFH
Merci
Posté : 15 juin 2005, 09:16
par Cyrano
Désolé
ouckileou, ta solution a un défaut majeur: en modifiant la requête par un COUNT(*), mysql_fetch_assoc ne fonctionnera pas; il faudrait créer une seconde requête.
Donc il faudrait garder la requête originale, ensuite tester le nombre de résultats avec mysql_num_rows() et là, s'il n'y a pas de résultats on le saura.
Donc il faudrait modifier de cette manière:
<?php
$temp="SELECT * FROM report WHERE RHost LIKE '".addslashes($row1['lieu'])."%'"; //choisit tous les rapports dont le nom est similaire à $row1
$result2= mysql_query($temp)or die(mysql_error());
$nb = mysql_num_rows($result2);
if($nb < 1) //cette boucle if bug !
{
echo"Pas de rapports";
}
else
{
while($row3= mysql_fetch_assoc($result2))
{
...// ici le code fonctionne correctement
}
?>
Posté : 15 juin 2005, 09:18
par ouckileou
j'avais pas fais attention à ça
Posté : 15 juin 2005, 09:18
par daoud
Tiens, j'ai encore répondu à côté de la plaque....

Je crois que je vais arrêter moi, je sais pas lire.
daoud
Posté : 15 juin 2005, 09:30
par BFH
Merci @ tous

je vous paie un jus d'orange pour certains?
Posté : 15 juin 2005, 09:32
par Cyrano
Moi j'aurais offert un jus de carottes pour
daoud, les carottes, c'est excellent pour la vue, d'ailleurs on a jamais vu de lapin avec des lunettes
