Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1667 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Condition, si la requete sql n'affiche rien

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Condition, si la requete sql n'affiche rien

n°1998899
kka4
Posté le 03-06-2010 à 17:52:13  profilanswer
 

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.

mood
Publicité
Posté le 03-06-2010 à 17:52:13  profilanswer
 

n°1998901
aideinfo
Posté le 03-06-2010 à 17:55:40  profilanswer
 

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
n°1998902
kka4
Posté le 03-06-2010 à 17:57:31  profilanswer
 

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

n°1998909
Fred999
Rabat-joie
Posté le 03-06-2010 à 18:29:59  profilanswer
 

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

n°1998911
aideinfo
Posté le 03-06-2010 à 18:35:35  profilanswer
 

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
n°1998934
kka4
Posté le 03-06-2010 à 20:28:12  profilanswer
 

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 ?

n°1999000
grosbin
OR die;
Posté le 04-06-2010 à 09:03:59  profilanswer
 

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


---------------
Photos Panoramiques Montagnes Haute Savoie
n°2003117
th3sorrow
Posté le 20-06-2010 à 17:57:42  profilanswer
 

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
n°2003165
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 21-06-2010 à 09:08:50  profilanswer
 

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
n°2003313
th3sorrow
Posté le 21-06-2010 à 13:51:07  profilanswer
 

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 :)

mood
Publicité
Posté le 21-06-2010 à 13:51:07  profilanswer
 

n°2003449
aideinfo
Posté le 21-06-2010 à 17:46:24  profilanswer
 

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
n°2003614
th3sorrow
Posté le 22-06-2010 à 09:28:04  profilanswer
 

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 :)

n°2003752
aideinfo
Posté le 22-06-2010 à 15:27:17  profilanswer
 

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
n°2004008
th3sorrow
Posté le 23-06-2010 à 10:22:58  profilanswer
 

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 ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Condition, si la requete sql n'affiche rien

 

Sujets relatifs
PB urgent requete multiple SQLOdbc & php : construction de requête en fonction des variables
adapter une date pour pouvoir l'utiliser dans un requête[reglé] Plusieurs requete COUNT ?
Mon animation ne s'affiche pas dans séquence !Générer une liste qui s'affiche comme un tableau
[RESOLU][MySQL] requete toute simpleréutiliser un alias dans une même requête
Checkbox sous Excel (Simple requête )Condition "IF" qui ne fonctionne pas
Plus de sujets relatifs à : Condition, si la requete sql n'affiche rien


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR