vero Posté 4 Décembre 2005 Posté 4 Décembre 2005 (modifié) bonjour, voila le challenge il s'agit dans un script qui utilise la base 'club' pour afficher les coordonnées de faire apparaitre un logo 'info' quand dans une base de données : soireeclub where date2 >= current_date et bien sur rien si aucune soirée n'est prevue. Bien sur il faut aussi pouvoir associer le champs 'nom' de la base club au champs nomclub de la base soireeclub ( valeur identique). merci de vos solutions reponse rapide à vos idées garantie. pas de reponse voila ou j'en suis mais ca marche pas if ($ob[nom]) = soireeclub.nomclub $sql = "SELECT date2, clubs.nom,from soireeclub where date2 >= current_date Modifié 4 Décembre 2005 par vero
vero Posté 4 Décembre 2005 Auteur Posté 4 Décembre 2005 me revoila j'ai trouvé la requete suivante $sql = "SELECT * FROM `soireeclub` WHERE `nomclub` LIKE '<? echo $ob[nom]; ?>' and date2 >= current_date "; que dois je mettre à la suite pour dire si le nombre d'enregistrements est superieur à 0 il faut afficher l'image merci d'avance
vero Posté 4 Décembre 2005 Auteur Posté 4 Décembre 2005 voila ou j'en suis le code est maintenant celui la $sql = "SELECT * FROM `soireeclub` WHERE `nomclub` LIKE '<? echo $ob[nom]; ?>' and date2 >= current_date "; $result = mysql_query($sql); if (mysql_num_rows($result)) { echo "<img src......"; } malheureusement j'ai un probleme avec le champ WHERE `nomclub` LIKE '<? echo $ob[nom]; ?>' car il ne retrouve pas le nom du club qui est contenu dans la table "clubs" dans le champ 'nom' si vous avez une idee
Vincent Posté 4 Décembre 2005 Posté 4 Décembre 2005 tu te trompes dans la syntaxe de ton code PHP: tu ne peux pas ouvrir d'autres tag '<?' a l'interieur du code. ta requete corrigée : $sql = "SELECT * FROM `soireeclub` WHERE `nomclub` LIKE '".$ob[nom]."' and date2 >= current_date ";
vero Posté 4 Décembre 2005 Auteur Posté 4 Décembre 2005 j'ai essayé mais ca marche pas mieux désolé qui a une autre idée?
vero Posté 4 Décembre 2005 Auteur Posté 4 Décembre 2005 bravo ca marche avec $sql = "SELECT * FROM `soireeclub` WHERE `nomclub` LIKE '".$ob[nom]."' and date2 >= current_date ";$result = mysql_query($sql); if (mysql_num_rows($result)) { echo '<a href="http://www.le69x.com/soirees.php3"><img src="soiree.jpg" alt="le programme des soirées" border="0"></a>'; } il me reste un petit probleme quand le nom du club comporte une apostrophe ' cela provoque une erreur mysql_num_rows(): supplied argument is not a valid MySQL result resource existe t il une solution?
jidébé Posté 4 Décembre 2005 Posté 4 Décembre 2005 (modifié) Bonsoir, Essaye ça: $sql = "SELECT * FROM soireeclub, clubs WHERE soireeclub.nomclub=clubs.nom and date2 >= current_date "; $result = mysql_query($sql); if (mysql_num_rows($result)) { echo "<img src......"; } Edit: trop tard t'avais déjà la solution, ça ça ne changera rien pour l'apostrophe. Modifié 4 Décembre 2005 par jidébé
vero Posté 4 Décembre 2005 Auteur Posté 4 Décembre 2005 bonsoir, non ca affiche sans tenir compte de la condition. une autre idée....
vero Posté 4 Décembre 2005 Auteur Posté 4 Décembre 2005 ca marche voici le code final $sql = "SELECT * FROM `soireeclub` WHERE `nomclub` LIKE '".addslashes($ob[nom])."' and date2 >= current_date ";$result = mysql_query($sql); if (mysql_num_rows($result)) { echo '<a href="http://www.le69x.com/soirees.php3"><img src="soiree.jpg" alt="le programme des soirées" border="0"></a>'; } à bientôt et merci
jidébé Posté 4 Décembre 2005 Posté 4 Décembre 2005 Et si tu remplace : if (mysql_num_rows($result)) { par: if (mysql_num_rows($result)>=1) {
Bridou Posté 4 Décembre 2005 Posté 4 Décembre 2005 (modifié) Je ne pense pas qu'il y'est un interet a remplacer le "premier" if par ce que tu proposes, car la condition ne sera vraie que quand le résultat retourné sera effectivement supérieur ou égal à 1 donc rajouter >=1 n'est d'aucune utilité, me trompes-je ? Edit : Cela marcherait aussi je crois pour la requête : $sql = "SELECT * FROM `soireeclub` WHERE `nomclub` LIKE \"".$ob[nom]."\" and date2 >= current_date "; Modifié 4 Décembre 2005 par Bridou
jidébé Posté 4 Décembre 2005 Posté 4 Décembre 2005 Tu as raison, je crois qu'il est temps que j'aille me coucher...
Anonymus Posté 4 Décembre 2005 Posté 4 Décembre 2005 Je ne pense pas qu'il y'est un interet a remplacer le "premier" if par ce que tu proposes, car la condition ne sera vraie que quand le résultat retourné sera effectivement supérieur ou égal à 1 donc rajouter >=1 n'est d'aucune utilité, me trompes-je ? Edit : Cela marcherait aussi je crois pour la requête : $sql = "SELECT * FROM `soireeclub` WHERE `nomclub` LIKE \"".$ob[nom]."\" and date2 >= current_date "; <{POST_SNAPBACK}> En pratique, non, tu ne te trompes pas. En théorie, et dans le raisonnement, tu te trompes : Dans le premier cas, tu considères que 'renvoyer un résultat de zero lignes' est égal à 'renvoyer une erreur'. Or ce n'est pas le cas. mysql_num_rows renvoie bien un résultat, et un résultat valide, même lorsque ce résultat est égal à zero. Par contre, s'il renvoie une erreur, ca ne sera pas la même information à prendre en compte, ca ne sera pas la même démarche. Dans ton cas précisément, tu peux laisser comme tel. Mais dans l'esprit, c'est trompeur. Tu penses que mysql_num_rows renvoie une erreur lorsqu'il renvoie un nombre de lignes égal à zero, alors qu'il ne renvoie pas d'erreur. Php est permissif, et accepte ta condition, mais il ne devrait pas mysql_num_rows=='0' vaut normalement 'true'. Le problème, tu risques de le trouver en cas de déménagement de serveur, ou s'il y a des modifs sur ce genre de figure, dans une nouvelle version de php. Là, pour trouver l'erreur, tu risques d'avoir vraiment du mal. En fait, tu devrais préférer la méthode qui suit, même si elle donne l'impression d'allourdir le code. Elle a au moins le mérite d'être claire, et de ne laisser aucune ambiguité. D'ailleurs, dans l'hypothèse où tu souhaiterais gérer les erreurs, comment ferais tu, pour ce cas de figure ? Ben... Tu ne peux pas. Pour être plus précis, tu aurais même pu utiliser le triple signe égal, ou un signe supérieur suivi de 2 signes égal. Ca permet de tester les 2 valeurs, ainsi que leur type. Dans ce cas là, tu aurais une différence entre les xx lignes suivantes : if (mysql_num_row($r)) et if (mysql_num_row($r)==="0") et if (mysql_num_row($r)==="0") et if (mysql_num_row($r)===FALSE) Voilà
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant