Requête SQL débutant


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 373
Inscription: 4 Mar 2005

Requête SQL débutant

Message le Mar Jan 23, 2007 13:09

j'ai un soucis sur cette requete

Code: Tout sélectionner
$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.


biscuit
WRInaute impliqué
WRInaute impliqué
 
Messages: 519
Inscription: 5 Juin 2006

Message le Mar Jan 23, 2007 13:47

Salut il te manque le traitement de la requête.

Code: Tout sélectionner
$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: Tout sélectionner
$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...


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 373
Inscription: 4 Mar 2005

Message le Mar Jan 23, 2007 13:56

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: Tout sélectionner
$req = "SELECT (SUM)qte FROM matable WHERE typetiq= $typetiq";


e-kiwi
Modérateur
Modérateur
 
Messages: 15543
Inscription: 23 Déc 2003

Message le Mar Jan 23, 2007 14:01

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

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Mar Jan 23, 2007 14:12

webac a écrit: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: Tout sélectionner
$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
Dernière édition par DomicilePC le Mar Jan 23, 2007 14:18, édité 4 fois.


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 373
Inscription: 4 Mar 2005

Message le Mar Jan 23, 2007 14:13

j'ai bien fait des echo partout mais comment interpreter ces messages d'erreur :

Code: Tout sélectionner
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'


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 373
Inscription: 4 Mar 2005

Message le Mar Jan 23, 2007 14:22

merci a tous pour vos precieux conseils ça fonctionne très bien! :D


e-kiwi
Modérateur
Modérateur
 
Messages: 15543
Inscription: 23 Déc 2003

Message le Mar Jan 23, 2007 14:40

SELECT (SUM)qte FROM matable WHERE typetiq= HN
des ' manquants :)

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Mar Jan 23, 2007 14:51

e-kiwi a écrit:SELECT (SUM)qte FROM matable WHERE typetiq= HN
des ' manquants :)


Ca marche chez vous (SUM)qlqechose? 8O
Je suis étonné, chez moi c'est SUM(qlqechose) qui marche


e-kiwi
Modérateur
Modérateur
 
Messages: 15543
Inscription: 23 Déc 2003

Message le Mar Jan 23, 2007 15:13

non non je faisait juste un copié collé de ton truc ^^

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Mar Jan 23, 2007 15:17

Ouf.
Toute façon, son problème est résolu on dirait


nickargall
WRInaute accro
WRInaute accro
 
Messages: 6339
Inscription: 13 Juin 2005

Message le Mar Jan 23, 2007 16:12

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: Tout sélectionner
$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


webac
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 373
Inscription: 4 Mar 2005

Message le Mar Jan 23, 2007 16:51

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?

DomicilePC
WRInaute discret
WRInaute discret
 
Messages: 210
Inscription: 17 Jan 2005

Message le Mar Jan 23, 2007 17:11

Comme tu dis, c'est similaire:

Code: Tout sélectionner
$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


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités