probleme requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme requete

par HD » 15 août 2005, 09:26

non c'est le nom d'une table
le debut est une constante (toutes les tables commencent par user_ ) et se termine par une variable le nom de l'utilisateur

par albat » 15 août 2005, 09:21

$query = "select dateachat, nomachat, qteachat, courachat, divid from user_$pseudo ";
C'est quoi, ça ? user_$pseudo :shock:

C'est censé être une variable ??? :?: :?: :?:

par HD » 15 août 2005, 06:27

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

par HD » 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]

par Cyrano » 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 ?

par HD » 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 ?

par Cyrano » 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.

par HD » 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

par Cyrano » 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...

par HD » 13 août 2005, 08:58

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

par Cyrano » 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.

par HD » 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

par leroimarco » 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 !
@+

par Cyrano » 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

par HD » 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 -)