PHP erreur requete SQL

Résolu/Fermé
fosswire - 17 juin 2009 à 18:03
 fosswire - 18 juin 2009 à 10:34
Bonjour à tous,
Je fais appel à votre aide afin d'essayer de résoudre ce qui cloche dans mon code:

$req_quota = mysql_query("SELECT * FROM user where login='$login'") or die;
$quota = mysql_result($req_quota,0,4); // on regarde son quota

if($quota>0) // si il a du crédit
{
$doublon = mysql_query("SELECT * from sms where id_user='$user' and dst='$dst' and message='$sms' and date LIKE '$dateheure%'");
$is_doublon = mysql_num_rows($doublon);
if($is_doublon==0)
{
$maj_quota = $quota-1;
$annee=date("Y");$mois=date("m");
$tot__sms=mysql_query("SELECT * FROM usage where id_user='$user' and annee='$annee' and mois='$mois'");
$rows__sms=mysql_num_rows($tot__sms);
$ressms=mysql_result($tot__sms,0,4);
$nbsms=$ressms+1;
if(empty($rows__sms)){mysql_query("INSERT INTO usage VALUES (default, '$user', '$annee', '$mois', '1')");}
else{mysql_query("UPDATE usage SET total='$nbsms' where id_user='$user' and annee='$annee' and mois='$mois'");}
mysql_query("UPDATE user SET quota='$maj_quota' where login='$login'") or die;
mysql_query("INSERT INTO sms VALUES (default, '$user', '$login', '$dst', '$sms', '$bddate', '$ip')") or die;
mysql_query("UPDATE usage SET total='$nbsms' where id_user='$user' and annee='$annee' and mois='$mois'");
} else { } // doublon
}
else { } // si il n'a plus de crédit

Tout se déroule à merveille exepté la partie où je veux inserer dans une table le nombre de messages envoyés.

Ceux sont ces 2 requêtes qui ne passent pas :
if(empty($rows__sms)){mysql_query("INSERT INTO usage VALUES (default, '$user', '$annee', '$mois', '1')");}
else{mysql_query("UPDATE usage SET total='$nbsms' where id_user='$user' and annee='$annee' and mois='$mois'");}

J'ai essayer aussi comme ca :
if(!$rows__sms){} ou if($tot__sms==0){ comme je le fais plus haut pour détécter les doublons }

ou encore comme ca : if(empty($rows__sms)) {}

La requête est exactement la même que celle pour détecter les doublons mais apparement elle n'est pas valide.


Je me suis pris la tête toute la journée mais sans succès...


Merci pour les éventuels retours

4 réponses

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
18 juin 2009 à 10:04
Ca vient peut être aussi d'une erreur de syntaxe dans les requêtes SQL ...

essayes de remplacer par ceci :

if(empty($rows__sms)){mysql_query("INSERT INTO usage VALUES (default, '$user', '$annee', '$mois', '1')") or die (mysql_error());}
else{mysql_query("UPDATE usage SET total='$nbsms' where id_user='$user' and annee='$annee' and mois='$mois'") or die (mysql_error());}
1
Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 144
17 juin 2009 à 18:05
Salut, n'oublie pas la concaténation de tes variables lors de tes requêtes.
0
Petite précision, la structure des tables 'usage' et 'sms' sont pratiquement identiques :
A savoir un id (id_usage et id_sms)

Mon problème peut-il être dû au fait que j'utilise trop de boucles ?
C'est après un cinquième if que je demande d'inserer des données dans la table usage.
Soit créer une nouvelle ligne avec 1 en valeur 'total'
Soit mettre à jour avec la nouvelle valeur.

Merci :)
0
Problème résolu !

Pour je ne sais quelle raison, la table usage n'était pas reconnue.

Il fallait 'bizarement' préciser le nom de la base de donneés.

La solution était donc de rajouter 'lenomdemabase.usage' where etc ...
0