probleme requete

HD
Mammouth du PHP | 1181 Messages

13 août 2005, 03:51

salut
j'ai fait la requete sql suivante :
$query = "select dateachat, nomachat, qteachat, courachat, divid from user_$pseudo ";
$result = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error());
$data_2 = mysql_fetch_assoc($result);
sachant que la clé primaire est idoperation
je veux faire $variable = (par exemple) qteachat qui correspond à idoperation=2
ca s'ecrit comment ? merci
(c'est un vecteur je crois, d'où le probleme)

Mammouth du PHP | 19672 Messages

13 août 2005, 08:12

:shock: j'ai rien compris à ce que tu veux faire...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

HD
Mammouth du PHP | 1181 Messages

13 août 2005, 08:29

j'ai une table contenant : dateachat, nomachat, qteachat, courachat, divid
et idoperation comme clé primaire

j'ai fait la requete
$query = "select dateachat, nomachat, qteachat, courachat, divid from user_$pseudo "; 
$result = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error()); 
$data_2 = mysql_fetch_assoc($result); 
et je veux maintenant afficher $variable = qteachat correspondant à idoperation=2 (car la requete recupere idoperation=1 ; idoperation=2 ; idoperation=3 ... et les donnes correspondant - dateachat, nomachat, qteachat, courachat, divid -)

Mammouth du PHP | 19672 Messages

13 août 2005, 08:41

Je ne vois nulle part le champ idoperation dans ta requête, ça ne va pas faciliter le tri en sortie... :-k

Maintenant si tu ne veux que la ligne correspondant à idoperation = 2, alors rajoute une clause WHERE à ta requête :

Code : Tout sélectionner

... WHERE idoperation = 2
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 40 Messages

13 août 2005, 08:45

dans ta requete SELECT, tu dois mettre le nom de ta table après le FROM, ce qui doit te donner :

Code : Tout sélectionner

SELECT dateachat, nomachat, qteachat, courachat, divid FROM nom_de_ta_table

Si tu veux la faire correspondre avec une ligne précise de ta table, il faut que tu utilises la clause WHERE dans ta requete :

Code : Tout sélectionner

SELECT dateachat, nomachat, qteachat, courachat, divid FROM nom_de_ta_table WHERE idoperation = '1' (ou 2, 3, etc...) ;
Un petit tour sur cette page devrait t'en apprendre plus sur la clause WHERE : http://www.phpdebutant.org/article63.php

Bon courage et bon dév !
@+

HD
Mammouth du PHP | 1181 Messages

13 août 2005, 08:47

cela aurait ete trop facile :wink:
le 2 n'est qu'un exemple
en fait apres je veux faire
<td align='center'>$variable</td>
et cette ligne sera repetée autant de fois que de idoperation

dans cet exemple $variable sera la valeur de 'qteachat ' du idoperation=2
le probleme c'est la syntaxe exacte pour l'afficher

Mammouth du PHP | 19672 Messages

13 août 2005, 08:53

Ok, alors aloons-y d'une leçno basique, tu arrangeras le code selon tes propres besoins:
<?php
$query = "select dateachat, nomachat, qteachat, courachat, divid from user_$pseudo ";
$result = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error());
?>
<table>
  <tr>
    <th>Colonne 1</th>
    <th>Colonne 2</th>
    <th>Colonne 3</th>
    <th>Colonne 4</th>
    <th>Colonne 5</th>
  </tr>
<?php
while($data_2 = mysql_fetch_assoc($result)
{
?>
  <tr>
    <td><?php echo($data_2['dateachat']); ?></td>
    <td><?php echo($data_2['nomachat']); ?></td>
    <td><?php echo($data_2['qteachat']); ?></td>
    <td><?php echo($data_2['courachat']); ?></td>
    <td><?php echo($data_2['divid']); ?></td>
  </tr>
<?php
}
?>
</table>
Mais il n'y a toujours pas ta clé primaire permettant de distinguer une ligne de l'autre... à toi de l'intégrer, même si tu ne l'affiche pas.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

HD
Mammouth du PHP | 1181 Messages

13 août 2005, 08:58

elle s'arrete quand la boucle
while($data_2 = mysql_fetch_assoc($result)
:?:

Mammouth du PHP | 19672 Messages

13 août 2005, 09:01

QUand il n'y a plus de données : "while" se traduit en pseudo-code par "tant que", donc "tant qu'il y a des résultats correspondant à <expression>"... etc...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

HD
Mammouth du PHP | 1181 Messages

13 août 2005, 09:09

je sais :axe: :langue: :tir2:

je dis ca car selon l'exemple donné par http://phpdebutant.org/article63.php
SELECT nom,prenom FROM clients_tbl WHERE enfants='2'
[/quote]affiche
++++++++++++++++++++++++++
+ Patrick + Martin +
++++++++++++++++++++++++++
+ Julien + Lebreton +
++++++++++++++++++++++++++
et pour mon exemple chaque ligne correspondra à l'idoperation de meme niveau (1,2,3...)
donc c'est recupéré d'un coup et la clé primaire est implicite (c'est pour ca que ne la mentionne pas)

par contre quand tu fais
while($data_2 = mysql_fetch_assoc($result) 
{ 
?> 
  <tr> 
    <td><?php echo($data_2['dateachat']); ?></td> 
    <td><?php echo($data_2['nomachat']); ?></td> 
    <td><?php echo($data_2['qteachat']); ?></td> 
    <td><?php echo($data_2['courachat']); ?></td> 
    <td><?php echo($data_2['divid']); ?></td> 
  </tr> 
<?php 
} 
il va classer ca selon l'ordre logique
ce que je veux c'est de completer
echo($data_2['dateachat']); 
de facon à preciser l'idoperation (soit la ligne) souhaitée (sans passer par les precedentes
ouf !
ps: merci pour l'effort

Mammouth du PHP | 19672 Messages

13 août 2005, 09:46

Je te l'ai marqué deux fois: si tu ne récupères pas le champ idoperation dans ta requête, tu ne pourras pas l'afficher d'une part et tu ne pourras faire aucun classement en sortie non plus.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

HD
Mammouth du PHP | 1181 Messages

13 août 2005, 10:06

alors si je met
$query = "select idoperation, dateachat, nomachat, qteachat, courachat, divid from user_$pseudo "; 
je modifie quoi dans
while($data_2 = mysql_fetch_assoc($result) 
{ 
?> 
  <tr> 
    <td><?php echo($data_2['dateachat']); ?></td> 
    <td><?php echo($data_2['nomachat']); ?></td> 
    <td><?php echo($data_2['qteachat']); ?></td> 
    <td><?php echo($data_2['courachat']); ?></td> 
    <td><?php echo($data_2['divid']); ?></td> 
  </tr> 
<?php 
} 
pour afficher les valeurs correspondants à la ligne N ?

Mammouth du PHP | 19672 Messages

13 août 2005, 10:45

BOn, deux choses: d'abord, je ne comprends pas le nom de la table que tu mets : "user_$pseudo" : aurais-tu par hasard une table par inscrit ?

Ensuite, si tu ne veux récupérer que la ligne correspondant à un identifiant particulier, ta requête doit le préciser:
$query = "SELECT dateachat, nomachat, qteachat, courachat, divid FROM user_$pseudo WHERE idoperation = ". $id_recherche ."";
Dans ce cas, tu n'as pas besoin de préciser le champ idoperation dans les champs à récupérer mais dans la clause de recherche.

Saisis-tu la nuance ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

HD
Mammouth du PHP | 1181 Messages

13 août 2005, 11:34

oui c'est ce que je voulais faire (comme quoi faut jamais faire vite)
mais ce que je veux eviter si je fais ca c'est une requete pour chaque idoperation surtout s'il y en a plusieurs, j'aurais encore un probleme de temps max depassé
c'est pour ca que j'ai choisi de recuperer tous les idoperations (et les valeurs correspondants) en une fois
$query = "select dateachat, nomachat, qteachat, courachat, divid from user_$pseudo "; 
puis de classer ca "à mon aise" entre les <td> correspondants
bon je vais adapter ca cet aprem et je vous tiens au courant[/php]

HD
Mammouth du PHP | 1181 Messages

15 août 2005, 06:27

ok c'est bon merci
ps: pourquoi t a mis
". $id_recherche ."
au lieu de
"$id_recherche"
:?: