PHP erreur requete SQL

Résolu
fosswire -  
 fosswire -
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   Statut Membre Dernière intervention   186
 
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   Statut Membre Dernière intervention   145
 
Salut, n'oublie pas la concaténation de tes variables lors de tes requêtes.
0
fosswire
 
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
fosswire
 
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