Condition, si la requete sql n'affiche rien

Condition, si la requete sql n'affiche rien - PHP - Programmation

Marsh Posté le 03-06-2010 à 17:52:13    

Oyé, oyé. Population du forum HARDWARE, je réclame votre aide.  :jap:  
 
J'essaye de crée une condition qui afficherais une sorte de message d'erreur lorsque la condition est remplie.
La condition que je voudrais faire est en gros : Si la requête exécuté n'affiche rien, alors --> afficher message d'erreur.
 
Voici la requete : $sql = "SELECT action.intitule, agent.prenom, agent.nom, agent.code, inscription.presence FROM session,agent,inscription,action WHERE codeAgent='" . $code . "'  
AND session.codeAction = action.code  AND session.numero = inscription.numeroSession AND inscription.codeAgent = agent.code;";
 
C'est une requête qui permet d'afficher a quel session a participé un agent, lors que l'on rentre son code agent. Tout fonctionne sauf quand un agent n'a jamais participer à une session. Quand c'est le cas la page n'affiche rien, c'est pourquoi j'ai besoin de la condition.
 
Voila la condition  :        if ( $sql == NULL )
{
    echo " Cet agent n'a participé à aucune session.";
}    
 
Mais elle ne marche évidemment pas. Pouvez-vous me donner un petit coup de main ? C'est pour mon Projet, pour mon oral de bac.

Reply

Marsh Posté le 03-06-2010 à 17:52:13   

Reply

Marsh Posté le 03-06-2010 à 17:55:40    

mysql_num_rows() permet de récupérer le nombre de résultats de ton mysql_query().


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 03-06-2010 à 17:57:31    

Ok et comment je pourrais utiliser cela ? ( je début en php ... )

Reply

Marsh Posté le 03-06-2010 à 18:29:59    

http://php.net/manual/fr/function.mysql-num-rows.php
 
Premier exemple, on ne peut pas mieux te l'expliquer.

Reply

Marsh Posté le 03-06-2010 à 18:35:35    

mysql_num_rows() renvoie directement le nombre de résultats (0 si la requête ne renvoie rien). Après, la doc PHP est là pour ça, ce n'est pas une fonction complexe.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 03-06-2010 à 20:28:12    

Merci de vos consei je vien d'essayer :  
 
     if (  0  ==  $num_rows )
{
echo " Erreur";
}  
 
Mais ca ne marche pas, pourtant j'ai fait un écho de la variable $num_rows el correspond bien a 0, j'ai essayer cette condition en remplacant 0 par 3, quand num_rows est égale a 3, la condition marche ...
Pouvez vous m'aider ?

Reply

Marsh Posté le 04-06-2010 à 09:03:59    

if(mysql_num_rows==0)echo"nada";
else{ // tu affiches
 
}
:jap:


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 20-06-2010 à 17:57:42    

Bonjour, j'ai suivi avec interet la discussion car j'ai un problème similaire peut-être un poil plus complexe avec la syntaxe.
Pareillement que kka4, je veux tester les conditions d'affichage d'une requete mais selon d'autres parametres déjà inclus dans un autre IF supérieur.
Les explications étant un poil chiantes un bout de code permettra de mieux visualiser ^^
 

Code :
  1. if ($datetime <= $current_datetime) {
  2. echo '<p><span style="color:red;">'.$nom.' '.$prenom.' '. $title.'</span></p>';
  3. echo "$datetime";
  4. echo "<br />";
  5. echo "<br />";
  6. }
  7. elseif ($date <= $current_date AND $time >= $current_time) {
  8. if(mysql_num_rows == 0){ //tester ici s'il y'aura un affichage selon les conditions au dessus
  9. echo "viiiide"; //si non afficher ceci (en attendant que je finisse ^^)
  10. } //si oui on affiche normalement la suite et le dernier IF en dessous
  11. echo '<p><span style="color:black;">'.$nom .' '. $prenom .' '. $title.'</span></p>';
  12. echo "$datetime";
  13. echo "<br />";
  14. echo "<br />";
  15. }
  16. elseif ($datetime >= $current_datetime) {
  17. echo '<p><span style="color:blue;">'.$nom.' '.$prenom. ' '.$title.'</span></p>';
  18. echo "$datetime";
  19. echo "<br />";
  20. echo "<br />";
  21. }
  22. }


 
Si quelqu'un a une solution cela serait génial, par avance merci de votre aide ou au moins d'avoir lu ce post :)
Bonne journée


Message édité par th3sorrow le 20-06-2010 à 17:59:14
Reply

Marsh Posté le 21-06-2010 à 09:08:50    

mysql_num_rows attend un paramètre : le dataset retourné par mysql.
 
typiquement
$query = "SELECT ...."
$dataset = mysql_query($query);
$nb_lignes = mysql_num_rows($dataset);


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 21-06-2010 à 13:51:07    

Hum j'ai testé ceci

Code :
  1. elseif ($date <= $current_date AND $time >= $current_time){
  2. $nb_result = mysql_num_row($result);
  3. if ($nb_result == 0){
  4. echo "pas de résultats";
  5. }
  6. else {
  7. echo "affichage";
  8. }


 
Sans succès, peut-être que j'ai fais une erreur autre part, je mets tout le code concerné afin de visualiser l'ensemble :
 

Code :
  1. //affichage
  2. $query = ("SELECT ID, Nom, Prenom, Titre, Date, Time
  3. FROM conferencier, contenu, conference
  4. WHERE conferencier.ID = contenu.ID2
  5. AND contenu.ID2 = conference.ID3
  6. ORDER BY Date ASC" );
  7. $result = mysql_query($query) or die($query . " - " . mysql_error());
  8. while ($tab = mysql_fetch_object($result)) {
  9. $id = $tab->ID;
  10. $nom = $tab->Nom;
  11. $prenom = $tab->Prenom;
  12. $title = $tab->Titre;
  13. $date = $tab->Date;
  14. $time = $tab->Time;
  15. $datetime = $date.' '.$time;
  16. if ($datetime <= $current_datetime) {
  17. echo '<p><span style="color:red;">'.$nom.' '.$prenom.' '. $title.'</span></p>';
  18. echo "$datetime";
  19. echo "<br />";
  20. echo "<br />";
  21. }
  22. elseif ($date <= $current_date AND $time >= $current_time){
  23. $nb_result = mysql_num_row($result);
  24. if ($nb_result == 0){
  25. echo "pas de résultats";
  26. }
  27. else {
  28. echo "affichage";
  29. }
  30. }
  31. elseif ($datetime >= $current_datetime) {
  32. echo '<p><span style="color:blue;">'.$nom.' '.$prenom. ' '.$title.'</span></p>';
  33. echo "$datetime";
  34. echo "<br />";
  35. echo "<br />";
  36. }
  37. }


 
Si jamais vous avez une idée je suis preneur, n'hésitez pas à demander si ce n'est pas clair.
Merci d'avance, bonne journée :)

Reply

Marsh Posté le 21-06-2010 à 13:51:07   

Reply

Marsh Posté le 21-06-2010 à 17:46:24    

Est-ce que déjà ta requête renvoie des données ? Si non, ça ne peut pas marcher au niveau du mysql_num_rows(). Et que font les paranthèses autour de ta requête ?
 
P.S. : c'est pas conseillé d'afficher ta requête complète en cas d'erreur.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 22-06-2010 à 09:28:04    

Oui elle envoie des données, mais justement je veux filtrer le fait que s'il n'y ait pas de données renvoyées pour la 2e condition et seulement celle là alors un autre if sous adjacent permette de continuer mon code. Pour ce qui est des parenthèses tout simplement un noobisme de ma part, j'ai débuté le php/sql il y'a seulement un mois mais il y'a encore des cas (celui-là par exemple) que je ne maitrise pas :)

Reply

Marsh Posté le 22-06-2010 à 15:27:17    

Regarde ce que renvoie ton mysql_num_rows() en ajoutant un echo de $nb_result pour voir sa valeur.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 23-06-2010 à 10:22:58    

Il n'affiche rien quand je n'ai pas de champs remplissant la condition ce qui semble normal vu qu'il ignore le block IF en entier.
Par contre si je rajoute un champ répondant au condition alors la fonction mysql_num_row affiche une erreur. Si je l'enlève et que je remplace par un echo tout simple j'ai bien un affichage.
Comment spécifier que mysql_num_row ne doit considerer la requete que ce pour ce IF précis? Faut-il que j'alourdisse le code en répétant la requete aussi souvent qu'il y'a un IF ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed