Requête SQL débutant

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


webac
WRInaute impliqué
WRInaute impliqué
 
Messages: 359
Inscription: Ven Mar 04, 2005 17:30

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 passionné
WRInaute passionné
 
Messages: 519
Inscription: Lun Juin 05, 2006 10:37

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 impliqué
WRInaute impliqué
 
Messages: 359
Inscription: Ven Mar 04, 2005 17:30

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: 13859
Inscription: Mar Déc 23, 2003 9:04

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 occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

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 impliqué
WRInaute impliqué
 
Messages: 359
Inscription: Ven Mar 04, 2005 17:30

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 impliqué
WRInaute impliqué
 
Messages: 359
Inscription: Ven Mar 04, 2005 17:30

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: 13859
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Jan 23, 2007 14:40

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

DomicilePC
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

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: 13859
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Jan 23, 2007 15:13

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

DomicilePC
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

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: 5321
Inscription: Lun Juin 13, 2005 14:13

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 impliqué
WRInaute impliqué
 
Messages: 359
Inscription: Ven Mar 04, 2005 17:30

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 occasionnel
WRInaute occasionnel
 
Messages: 210
Inscription: Lun Jan 17, 2005 15:50

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


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

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