Page 1 sur 2
probleme requete
Posté : 13 août 2005, 03:51
par HD
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)
Posté : 13 août 2005, 08:12
par Cyrano

j'ai rien compris à ce que tu veux faire...
Posté : 13 août 2005, 08:29
par HD
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 -)
Posté : 13 août 2005, 08:41
par Cyrano
Je ne vois nulle part le champ idoperation dans ta requête, ça ne va pas faciliter le tri en sortie...
Maintenant si tu ne veux que la ligne correspondant à idoperation = 2, alors rajoute une clause WHERE à ta requête :
Posté : 13 août 2005, 08:45
par leroimarco
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 !
@+
Posté : 13 août 2005, 08:47
par HD
cela aurait ete trop facile
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
Posté : 13 août 2005, 08:53
par Cyrano
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.
Posté : 13 août 2005, 08:58
par HD
elle s'arrete quand la boucle
while($data_2 = mysql_fetch_assoc($result)

Posté : 13 août 2005, 09:01
par Cyrano
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...
Posté : 13 août 2005, 09:09
par HD
je sais
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
Posté : 13 août 2005, 09:46
par Cyrano
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.
Posté : 13 août 2005, 10:06
par HD
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 ?
Posté : 13 août 2005, 10:45
par Cyrano
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 ?
Posté : 13 août 2005, 11:34
par HD
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]
Posté : 15 août 2005, 06:27
par HD
ok c'est bon merci
ps: pourquoi t a mis
". $id_recherche ."
au lieu de
"$id_recherche"
