Afficher toutes les lignes d'une colonne d'une BDD + infos relatives à 1 ligne

Résolu
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 2 févr. 2009 à 16:12
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 3 févr. 2009 à 13:57
Bonjour, j'ai un petit souci sur un de mes programmes en PHP.

Je voudrais créer un espace perso pour les clients, sur un site web, où il y aurait une page de l'historique des commandes.

Donc le but est d'afficher toutes les commandes avec les informations concernant ces commandes, les unes en dessous des autres (par la mise en forme dans un tableau HTML je me débrouille)

J'ai fait :

<?php



$sql="select NUMCMD,TOTAL_TTC,REGLEMENT,DATE,ETAT from commande WHERE LOGIN = '".$_SESSION['login']."'";
$res=ODBC_exec($connect,$sql);
while (odbc_fetch_row($res))
{
  $numcmd=trim(ODBC_result($res,"NUMCMD"));
  $total_ttc=trim(ODBC_result($res,"TOTAL_TTC"));
  $etat=trim(ODBC_result($res,"ETAT"));
  $reglement=trim(ODBC_result($res,"REGLEMENT"));
  $date = trim(ODBC_result($res,"DATE"));
  $date = substr($date,8,2)."/".substr($date,5,2)."/".substr($date,0,4)." ".substr($date,11,8);
  echo $numcmd." - ".$total_ttc." - ".$etat." - ".$reglement." - ".$date."
";
}
?>

Donc jusque là pas de problemes, il affiche bien toutes informations. Mais mon souci est que ma colonne de reference de recherche est le login. d'avoir "NUMCMD" m'aurais arangé pour faire mes liaisons entre me différentes table
Docn dans l'idéal j'aurais bien vu un truc du genre :
$sql="select NUMCMD,TOTAL_TTC,ETAT,DATE from commande WHERE LOGIN = '".$_SESSION['login']."'";
$res=ODBC_exec($connect,$sql);
$sql="select DESIGNATION,NB_ARTICLES from commande_details WHERE NUMCMD = '".$_SESSION['numcmd']."'";
$res=ODBC_exec($connect,$sql);
while (odbc_fetch_row($res))
{
  $numcmd=trim(ODBC_result($res,"NUMCMD"));
  $nb_articles=trim(ODBC_result($res,"NB_ARTICLES"));
  $designation=trim(ODBC_result($res,"DESIGNATION"));
  $total_ttc=trim(ODBC_result($res,"TOTAL_TTC"));
  $etat=trim(ODBC_result($res,"ETAT"));
  $reglement=trim(ODBC_result($res,"REGLEMENT"));
  $date = trim(ODBC_result($res,"DATE"));
  $date = substr($date,8,2)."/".substr($date,5,2)."/".substr($date,0,4)." ".substr($date,11,8);
  echo $numcmd." - ".$total_ttc." - ".$etat." - ".$reglement." - ".$date." - ".$designation." - ".$nb_articles."
";
}

Mais evidemment, ça ne marche pas ! soit ça me met rien, soit àa me met que la derniere ligne.
SVP aidez moi merci

7 réponses

krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
2 févr. 2009 à 16:23
Salut,
fais tout ca en une seule requete avec une jointure:
SELECT commande.NUMCMD,TOTAL_TTC,ETAT,DATE, DESIGNATION,NB_ARTICLES
From commande, commande_details
WHERE LOGIN = '".$_SESSION['login']."'
AND  c.NUMCMD = '".$_SESSION['numcmd']."'
AND  commande.numcmd = commande_details.numcmd
3
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
3 févr. 2009 à 13:23
re,
t'as quand meme fait ton WoW pepere on dirait
2 choses, fait un echo te ton $sql et essaie ta requete dans phpmyadmin direct.
Sinon essaie plutot odbc_fetch_array au lieu de row
3
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
2 févr. 2009 à 16:41
Hello !

Merci pour ton POST.

Alors, avant de tester, je dois bien comprendre ce que tu m'as écris, mais il y a plusieurs choses qui m'interpellent.

Déjà je ne savais pas qu'on pouvait faire une requete avec plusieurs tables. cela va faciliter mon code.
Et si je décompose bien la requete :
From commande, commande_details
WHERE LOGIN = '".$_SESSION['login']."'
AND  c.NUMCMD = '".$_SESSION['numcmd']."'AND  commande.numcmd commande_details.numcmd
On séléctionne NUMCMD, TOTAL_TTC, ETAT, DESIGNATION et NB_ARTICLES depuis "commandes" et "commandes_details" où le login login_SESSION et où NUMCMD NUMCMD_SESSION  et où NUMCMD=NUMCMD.

Alors quand tu fais "commande.NUMCMD" et "c.NUMCMD" ça veut dire quoi ?

Merci
0
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
2 févr. 2009 à 16:51
zut, le c.NUMCMD c'est commande.NUMCMD j'ai fait a la va vite.

petit tuto ici
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
2 févr. 2009 à 17:01
Ok merci beaucoup pour ta réponse très réactive, c'est super cool :) je vais pouvoir retourner sur wow pépére ce soir car t'as débloqué ma situation :) loool @++
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
3 févr. 2009 à 12:50
re ! Bon en fait ça ne marche pas, ça me met uniquement le dernier, copié au moins 50 fois. Je ne comprends pas.

j'ai fait :

$sql="select commande.NUMCMD,commande.TOTAL_TTC,REGLEMENT,commande.DATE,ETAT,NB_ARTICLE,DESIGNATION,TICKET_TRANSPORT from commande, commande_details WHERE commande.LOGIN = '".$_SESSION['login']."'";
$res=ODBC_exec($connect,$sql);
while (odbc_fetch_row($res))
{
  $numcmd=trim(ODBC_result($res,"NUMCMD"));
  $total_ttc=trim(ODBC_result($res,"TOTAL_TTC"));
  $etat=trim(ODBC_result($res,"ETAT"));
  $reglement=trim(ODBC_result($res,"REGLEMENT"));
  $nb_article=trim(ODBC_result($res,"NB_ARTICLE"));
  $designation=trim(ODBC_result($res,"DESIGNATION"));
  $ticket_transport=trim(ODBC_result($res,"TICKET_TRANSPORT"));
  $date = trim(ODBC_result($res,"DATE"));
  $date = substr($date,8,2)."/".substr($date,5,2)."/".substr($date,0,4)." ".substr($date,11,8);
  echo "<TR VALIGN="TOP">";
  echo "<TD WIDTH="11%" HEIGHT="30">
".$reglement;
  echo  "
</TD>";
  echo "<TD WIDTH="22%" HEIGHT="30">
".$numcmd." contenant ".$nb_article." x ".$designation;
  echo "
</TD>";
  echo "<TD WIDTH="12%" HEIGHT="30">
".$total_ttc;
  echo "
</TD>";
  echo "<TD WIDTH="18%" HEIGHT="30">
".$date;
  echo "
</TD>"; 
  echo "<TD WIDTH="18%" HEIGHT="30">
".$etat;
  echo "
</TD>";
  echo "<TD WIDTH="19%" HEIGHT="30">
".$ticket_transport;
  echo "
</TD></TR>"; 
}
?> 

help plz.
Merci
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
3 févr. 2009 à 13:57
nan en fait je n'ai pas eu le temps, je ferais mon raid ce soir :oP tu y joues toi ?

C'est bon j'ai trouvé, c'est ma faute j'ai oublié une chose importante que tu m'avais écrite
commande.numcmd = commande_details.numcmd
Et voilà le tour est joué. Merci beaucoup !!!
0
Rejoignez-nous