Afficher toutes les lignes d'une colonne d'une BDD + infos relatives à 1 ligne [Résolu]

Signaler
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
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

Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

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
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

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
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

zut, le c.NUMCMD c'est commande.NUMCMD j'ai fait a la va vite.

petit tuto ici
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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 @++
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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 !!!