Requête SQL débutant

  • Auteur de la discussion Auteur de la discussion webac
  • Date de début Date de début
WRInaute occasionnel
j'ai un soucis sur cette requete

Code:
$req = "SELECT qte FROM matable WHERE typetiq = $typetiq"; 
	$quantite = mysql_query ($req) ; 
	$sql = "UPDATE matable SET qte = $quantite + $qte WHERE typetiq = $typetiq";

la requête est-elle correcte ou avez-vous trouvé une erreur j'avoue que je ne comprends pas trop je débute en la matière.
 
WRInaute occasionnel
Salut il te manque le traitement de la requête.

Code:
$requete = mysql_query($req);
$quantite = mysql_result($requete,0,'qte');

Dans ta 2e requete $qte est définit ? Ou est-ce qu'il s'agit de la valeur dans ta table ? Pour le 2e cas, il ne faut pas mettre le $ devant:

Code:
$sql = "UPDATE matable SET qte = qte + $quantite WHERE typetiq = $typetiq";

Pour finir est-ce que $typetiq est numérique? Si ce n'est pas le cas, il faut le mettre entre guillemets

-- EDIT:

En fait j'suis allé vite, si tu veux seulement mettre à jour le champ 'qte' en ajoutant $quantite, tu n'as pas besoin de ta première requête...
 
WRInaute occasionnel
tout dabord merci pour ton aide biscuit mais voila ce que j'obtiens :

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in........

j'ai oublié de signaler que j'avais modifié ma premiere requete en :
Code:
$req = "SELECT (SUM)qte FROM matable WHERE typetiq= $typetiq";
 
WRInaute accro
comment debugguer une requete :

=> faire des echos

$req = "SELECT qte FROM matable WHERE typetiq = $typetiq";
echo $requete

$quantite = mysql_query ($req) or die("c'est balo, ta requete est fausse");
echo $quantite

$sql = "UPDATE matable SET qte = $quantite + $qte WHERE typetiq = $typetiq";
echo $sql
 
WRInaute discret
webac a dit:
j'ai oublié de signaler que j'avais modifié ma premiere requete en :
Code:
$req = "SELECT (SUM)qte FROM matable WHERE typetiq= $typetiq";
C'est SUM(qte) et non (SUM) qte

donc:
Code:
$req = "SELECT SUM(qte) FROM matable WHERE typetiq= '$typetiq'";
$quantite = mysql_query($req) or die("quantite failed");
$quantite = mysql_fetch_array($quantite);
$quantite = $quantite[0];
$sql = "UPDATE matable SET qte = $quantite + $qte WHERE typetiq = '$typetiq'";
$res = mysql_query($sql) or die("update failed");

Le or die() permet également de savoir quelle requête foire.
Je dois avouer que je ne vois pas bien ou tu veux en venir avec ces requête, mais bon

En voyant ta réponse après moi, j'ai vu que $typeiq n'était pas numérique, donc guillemets
 
WRInaute occasionnel
j'ai bien fait des echo partout mais comment interpreter ces messages d'erreur :

Code:
SELECT (SUM)qte FROM matable WHERE typetiq= HN
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in .......... on line 33
UPDATE matable SET qte = + 2000 WHERE typetiq = 'HN'
 
WRInaute accro
Un conseil, utilise des ' ' pour encadrer tes valeurs, et des ` ` pour encadrer le nom de tes colonnes SQL, ça peut éviter des soucis si tu utilises par mégarde des noms de champs qui correspondent à des termes SQL

Code:
$query=" SELECT `champ1`, `champ2` FROM `table1` WHERE `champ1`='valeur1' AND `champ2`='valeur2' ";

Si je te dis ça, c'est parce que ça m'est arrivé lorsque mon hébergeur est passé à une version supérieure de je sais pas quoi (sql ou php je sais plus). Et c'était pas cool de revoir toutes mes requêtes pour qu'elles refonctionnent à nouveau
 
WRInaute occasionnel
je continue sur ce post car j'ai un autre soucis similaire.

voici comment se présente ma table "matable"

id, typetiq, qte, destinataire

pour le moment j'aI un enregistrement avec les données suivantes :

1,HN,5000,STOCK

je souhaite pouvoir affecter une certaine quantité a un utilisateur, que cette quantité se déduise du stock initiale et apparaisse chez cet utilisateur.
La page d'affectation étant déja crée il ne me manque que les requêtes avec lesquelles je patauge depuis pas mal d'heures.

Pouvez vous m'éclairer?
 
WRInaute discret
Comme tu dis, c'est similaire:

Code:
$quantite = 20;//pourquoi pas
$sql = "UPDATE matable SET qte = qte - $quantite WHERE typetiq = '$typetiq'"; 
$res = mysql_query($sql);
echo $quantite;

Enfin si j'ai compris ce que tu veux faire
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut