cs_christian33
Messages postés40Date d'inscriptionmardi 9 août 2005StatutMembreDernière intervention 7 avril 2008
-
6 avril 2008 à 23:05
cs_christian33
Messages postés40Date d'inscriptionmardi 9 août 2005StatutMembreDernière intervention 7 avril 2008
-
7 avril 2008 à 19:57
Bonjour
Mon site existe depuis 2ans et a toujours fonctioné sur les divers hebregement que j'ai eu
cette semaine je suis passés chez OVH et certaines parties du site BUG maintenant
Mon script est sensé verifié q'une requete n'existe pas deja dans la base sinon elle passe autre chose
$q2 = "SELECT * FROM gtest WHERE fid='$id' AND fdate=now()";
$e2 = mysql_query($q2);
if (mysql_num_rows($e2)= =0) {
$q = "INSERT INTO ...}
else {...}
Malheuresement A chaque fois que j'appelle la page, il fait un INSERT, pourtant
mysql_num_rows($e2) n'est pas egal a zero dans la BDD
avez vous une idée de ce probleme?
a savoir que ce script fonctionné parfaitement avec PHP4.3.9 et mysql 4.1.22
je suis maintenant passés avec OVH a mysql 5
yoman64
Messages postés962Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 2 août 20102 6 avril 2008 à 23:26
Bonsoir,
d'ou vient la valeur de $id ? Si elle vient d'un formulaire ou de l'url alors peut être que tu ne la récupère pas de la bonne façon , a savoir via les super globales _GET et _POST.
-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org
cs_christian33
Messages postés40Date d'inscriptionmardi 9 août 2005StatutMembreDernière intervention 7 avril 2008 7 avril 2008 à 00:14
oui effectivement, les deux = = doivent etre collé mais j'ai mis un espace juste sur le forum pour que l'on voyent bien qu'il y'en a bien 2 .
la requete insert s'execute parfaitement dans la BDD
mais lorsque je refait la meme requete en rapellant la page, j'ai de nouveau un insert identique au premier qui s'enregistre dans la base alors que la requetes mysql_num_rows n'est plus egal a zero .
Voici un extrait de ma base
fnum etant auto_increment
fip l'adresse IP
fid = $id soit 4
fdate= la date
ftime= l'heure
Comme vous pouvez le voir
j'ai a trois reprise dans cette extrait de ma base
WHERE fid='$id' AND fdate=now()
pourtant la fonction mysql_num_rows ne fonctionne pas
Merci de votre aide
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 7 avril 2008 à 01:10
Salut,
Si fid est un champ numérique, il ne faut pas l'entourer de guillemets.
Dans ton script, tu ne vérifies pas si ta requêtes est correctement exécutée. Tu te contentes de supposer que oui, et de compter le nombre de résultats.
Or, si ta requête ne passe pas, le nombre de résultats vaudra zéro.
if ($e2=mysql_query($q2)) {
if (mysql_num_rows($e2)= =0) {
$q = "INSERT INTO ...
}
else {
// Patati
}
}
else {
// Pour debug uniquement, c'est moche de laisser ça en production...
die('Erreur n°' . mysql_errno() . ' : ' . mysql_error());
}
Neige
N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 avril 2008 à 02:54
Hello,
WHERE fid=$id AND fdate=now()
A moins que tu ne lances ce script plusieurs fois très très très vite...ça me parait normal que tu ne récupères jamais aucun enregistrement. Une date a cette propriété de changer tout le temps ;-)
cs_christian33
Messages postés40Date d'inscriptionmardi 9 août 2005StatutMembreDernière intervention 7 avril 2008 7 avril 2008 à 18:52
bonjour
merci pour votre aide, j'ai modifié quelque peu mon code afin de suivre vos conseils et j'ai fait cela
$ma = date("Y-m-d");
$q2 = "SELECT * FROM gtest WHERE fid=$id AND fdate=$ma" or die(mysql_error());
$e2 = mysql_query($q2);
if (mysql_num_rows($e2)==0) {
$q = "INSERT INTO gtest ....
Bon ca ne fonctionne malheuresement pas
l'enregistrement dans ma base pour $ma= 0000-00-00
J'ai fait l'essai avec ton morceau de script [auteur/NEIGEDHIVER/924195.aspx neigedhiver] mais cela ne me retourne aucune erreur
Afin de levé un doute et confirmé l'idée de [auteur/MALALAM/58031.aspx malalam]
j'ai supprimé AND fdate =now() de ma requete et desormais le script refonctionne parfaitement
Ce qui me chagrine aussi c'est pourquoi ma fonction
$ma = date("Y-m-d");
ne me retourne pas la date ?
et me donne 0000-00-00
Comment faire pour remplacer => now()
qui pourtant fonctionner parfaitement sur mon ancien hébergement