Aller au contenu

requete php


Sujets conseillés

Posté (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é par vero
Posté

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

Posté

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

Posté

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 ";

Posté

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?

Posté (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é par jidébé
Posté

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

Posté (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é par Bridou
Posté
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à ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...