Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Rue-Montgallet.com
  Programmation
  Php - Sql

  requete SQL [résolu]

Bas de page
Auteur Sujet :

requete SQL [résolu]

n°3606
Fane_CHP
Just Free It
Profil : Membre
Posté le 28-03-2003 à 08:39:37  
 

Bijour à tous;
 
petit blème à résoudre pour les pros du SQL:
 
j'ai une base MySQL interfacée en PHP
une table adhérents (numad, nom, prenom pour simplifier), une table grades (1er dan, 2eme dan.....), et une table au milieu qui fait les associations id, grade, et date d'obtention.
 
c'est volontaire car je veux garder l'historique.
 
Quand je voulais afficher les données dans un tableau, ja faisais d'abord un  
 

Code :
  1. SELECT adherents.numad, adherents.nom, adherents.prenom, adherents.numlicence,
  2.  adherents.sexe,  DATE_FORMAT(adherents.datenaiss,'%d/%m/%Y') AS datenaiss
  3.  FROM adherents
  4.  WHERE adherents.numad != 1
  5.  ORDER BY adherents.nom


 
puis dans une boucle "tant qu'il y a des 'numad'"
 

Code :
  1. $numad = $enr['numad'];
  2. $req2 = "SELECT grades.libgrade
  3. FROM adherents, grades, passer
  4. WHERE ((adherents.numad = '$numad')
  5. AND (passer.numad =adherents.numad )   AND (grades.numgrade =passer.numgrade ))
  6. ORDER BY passer.datepassage DESC
  7. LIMIT 0,1"


 
pour obtenir le grade, et je balançais toout dans un tableau.
 
Le problème, c'est que je veux faire une fonction tri par des liens sur les entêtes du tableau, et que je ne trouve pas la syntaxe pour la requete permettant de faire en une seule fois ce qui se faisait en deux temps avant.
 
Si kk1 peut m'aider, je le remercie d'avance.
 
 :hello:


Message édité par Fane_CHP le 18-04-2003 à 13:31:14

---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
mood
Pub
Posté le 28-03-2003 à 08:39:37  
 

n°3607
Hinou
Possède blague a 2 balle a +10
Profil : Membre
Posté le 28-03-2003 à 10:12:03  
 

et ta pas essayer de tout lier directement  en une seul commande genre  
 
 

Code :
  1. SELECT adherents.numad, adherents.nom, adherents.prenom, adherents.numlicence, 
  2. adherents.sexe,  DATE_FORMAT(adherents.datenaiss,'%d/%m/%Y') AS datenaiss, grades.libgrade
  3. FROM adherents, grades, passer
  4. WHERE adherents.numad =! 1
  5. AND (passer.numad =adherents.numad )   AND (grades.numgrade =passer.numgrade ))
  6. ORDER BY adherents.nom, passer.datepassage DESC
  7. LIMIT 0,1"

 
 
 
ou allors tu vois ton algo autrement tu fais d'abord un selection  par rapport a ton tris et ensuite tu lance ta requette pour le reste  
 
Sinon tu as la sollution du join mais c'est limite
 
OU sinon tu attends que groinikus (je c plus comment sa s'écris) passe et donne la solution en une ligne :D  

n°3608
Fane_CHP
Just Free It
Profil : Membre
Posté le 28-03-2003 à 10:24:55  
 

le problème c'est que si je fais la requete en deux fois, je ne peux pas demander de tri sur le grade (et c'est peut être le plus important)
 
ce que j'avais pensé, c'est:
 

Code :
  1. SELECT adherents.numad, adherents.nom, adherents.prenom, adherents.numlicence, 
  2. adherents.sexe,  DATE_FORMAT(adherents.datenaiss,'%d/%m/%Y') AS datenaiss,
  3.          grade IN (SELECT grades.libgrade
  4. FROM adherents, grades, passer
  5. WHERE ((adherents.numad = '$numad') 
  6. AND (passer.numad =adherents.numad )   AND (grades.numgrade =passer.numgrade ))
  7. ORDER BY passer.datepassage DESC
  8. LIMIT 0,1)
  9. FROM adherents
  10. WHERE adherents.numad != 1
  11. ORDER BY adherents.nom


 
mais à marche pô :cry:


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°3609
Hinou
Possède blague a 2 balle a +10
Profil : Membre
Posté le 28-03-2003 à 10:29:03  
 

il t'affiche quoi comme erreur ?


---------------
Administer c'est bien développer c'est mieux
Créateur de l'association des "elfes de la forest" (balançage de troll en tous genre)
Créateur de l'anti-cs team (cs c'est un mod pas un jeux :na:)
n°3610
Fane_CHP
Just Free It
Profil : Membre
Posté le 28-03-2003 à 10:51:11  
 

mysql fetch array is not a valid result on line ...


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°3611
Hinou
Possède blague a 2 balle a +10
Profil : Membre
Posté le 28-03-2003 à 11:12:30  
 

:??: tu devrais essayer de faire un test en envoyant directement la commande via mysql pas en passant par php parceque la je me demande si c'est pas ton php qui merde


---------------
Administer c'est bien développer c'est mieux
Créateur de l'association des "elfes de la forest" (balançage de troll en tous genre)
Créateur de l'anti-cs team (cs c'est un mod pas un jeux :na:)
n°3612
Fane_CHP
Just Free It
Profil : Membre
Posté le 28-03-2003 à 11:23:59  
 

j va essayer, je te tiens au courant  :jap:


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°3621
lukefab
meuh
Profil : Habitué
Posté le 28-03-2003 à 23:29:39  
 

SI j'ai bien compris ton pb, faut que tu utilises "group by".


---------------
Opera 8.51 pour Windows, Linux, FreeBSD, Solaris, Mac OS X.
www.opera.com , c'est bon et sans morceau de pub dedans, mangez-en.
Un pingouin aux pommes ?
n°3622
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 29-03-2003 à 00:21:33  
 

Tu peux tres bien mettre dans ta clause ORDER plusieurs paramettres. ;)


---------------
informatique / jeu vidéo
n°3623
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 29-03-2003 à 00:21:58  
 

fane_chp a écrit :

mysql fetch array is not a valid result on line ...


 
On pourrait avoir le source de toute la page STP ;)


---------------
informatique / jeu vidéo
n°3632
Fane_CHP
Just Free It
Profil : Membre
Posté le 29-03-2003 à 15:58:18  
 

je vous donne ça rapidement


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°3637
Fane_CHP
Just Free It
Profil : Membre
Posté le 31-03-2003 à 08:42:26  
 

nodashi a écrit :


 
On pourrait avoir le source de toute la page STP ;)


 

Code :
  1. <?php
  2. include ("page.inc" );
  3. include ("fonctions.inc" );
  4. entete();
  5. echo '<div align="center" class="titre">Liste des membres</div><hr>';
  6. dbconnect();
  7. if ($HTTP_POST_VARS[valid] == Valider)
  8. {
  9. if ($HTTP_POST_VARS[nom] != NULL && $HTTP_POST_VARS[prenom] != NULL)
  10. {
  11. $nom = $HTTP_POST_VARS[nom];
  12. $nom = strtoupper($nom);
  13. $prenom = $HTTP_POST_VARS[prenom];
  14. $prenom = strtolower($prenom);
  15. $prenom = ucwords($prenom);
  16. $numlicence = $HTTP_POST_VARS[numlicence];
  17. $datenaiss = $HTTP_POST_VARS[date3] . '-' .  $HTTP_POST_VARS[date2] . '-' . $HTTP_POST_VARS[date1];
  18. $nationalite = $HTTP_POST_VARS[nationalite];
  19. $adresse = $HTTP_POST_VARS[adresse];
  20. $cp = $HTTP_POST_VARS[cp];
  21. $mail = $HTTP_POST_VARS[mail];
  22. $teld = $HTTP_POST_VARS[teld];
  23. if ($teld == "01-" )
  24.  $teld = "";
  25. $telm = $HTTP_POST_VARS[telm];
  26. if ($telm == "06-" )
  27.  $telm = "";
  28. $telp = $HTTP_POST_VARS[telp];
  29. if ($telp == "01-" )
  30.  $telp = "";
  31. $sexe = $HTTP_POST_VARS[sexe];
  32. $section = $HTTP_POST_VARS[section];
  33. $req3 = "SELECT adherents.nom, adherents.prenom FROM adherents WHERE adherents.numad != 0";
  34. $res3 = mysql_query($req3);
  35. $exist = non;
  36. while ($enr3 = mysql_fetch_array($res3))
  37.  {
  38.  if ($nom == $enr3[nom] && $prenom == $enr3[prenom])
  39.   {
  40.   $exist = oui;
  41.   }
  42.  }
  43.  if ($exist == oui)
  44.   {
  45.   echo '<p><font color="red">Cette entrée existe déjà dans la base.</font></p>';
  46.   }
  47.  else
  48.   {
  49.   dbconnect();
  50.   $req4 = "INSERT INTO adherents
  51.     VALUES ('', '$nom', '$prenom', '$numlicence', '$datenaiss', '$nationalite',
  52.     '$adresse', '$cp', '$mail', '$teld', '$telm', '$telp', '$sexe', '$section')";
  53.   $req5 = "SELECT * FROM villes WHERE cp=$cp";
  54.   $res5 = mysql_query(req5);
  55.   /*$exist2 = False;
  56.   while ($enr5 = mysql_fetch_array($res5))
  57.    {
  58.    if ($cp == $res5[cp])
  59.     {
  60.     $exist2 = True;
  61.     }
  62.    }
  63.   if (exist2 == False)
  64.    {
  65.    $req6 = "INSERT INTO villes VALUES ('$cp', '$ville')";
  66.    if (mysql_query($req6) == True)
  67.     {
  68.     echo '<p><font color="red">Nouvelle ville ajoutée</font></p>';
  69.     }
  70.    }*/
  71.   if (mysql_query($req4) == True)
  72.    {
  73.    echo '<p><font color="red">Nouveau membre créé.</font></p>';
  74.    $HTTP_POST_VARS[valid] = 0;
  75.    }
  76.   else
  77.    {
  78.    echo '<p><font color="red">Erreur' . mysql_error () . '</font></p>';
  79.    }
  80.   }
  81. }
  82. else
  83.  echo '<p><font color="red">Les champs "NOM" et "Prénom" n\'ont pas été rempli</font></p>';
  84. }
  85. /*ordre par defaut: debut d'evenement trié croissant*/
  86. $order = "adherents.nom";
  87. $sens = "ASC";
  88. $order2 = ", adherents.prenom ASC";
  89. /*si une variable est postée, on modifie les variables d'ordre*/
  90. if ($HTTP_GET_VARS[order] != NULL)
  91. {
  92. $order = $HTTP_GET_VARS[order];
  93. $sens = $HTTP_GET_VARS[sens];
  94. $order2 = $HTTP_GET_VARS[order2];
  95. }
  96. $req = "SELECT adherents.numad, adherents.nom, adherents.prenom, adherents.numlicence,
  97.  adherents.sexe,  DATE_FORMAT(adherents.datenaiss,'%d/%m/%Y') AS datenaiss
  98.  FROM adherents
  99.  WHERE adherents.numad != 1
  100.  ORDER BY $order $sens$order2";
  101. $res = mysql_query($req);
  102. ?>
  103. <div align="center">
  104. <table width="80%" border="0">
  105.   <tr>
  106.     <td class="texte" valign="top">
  107.       <div align="center"><b>
  108.     <?
  109.   if ($order != "adherents.nom" )
  110.    {
  111.    echo '<a href="adherents.php?order=adherents.nom&sens=ASC&order2=, adherents.prenom ASC">NOM<br><img src="tri_no.gif" width="11" height="12" border="0"></a>';
  112.    }
  113.   else
  114.    {
  115.    if ($sens == ASC)
  116.     {
  117.     echo '<a href="adherents.php?order=adherents.nom&sens=DESC&order2=, adherents.prenom DESC">NOM<br><img src="tri_down.gif" width="11" height="12" border="0"></a>';
  118.     }
  119.    else
  120.     {
  121.     echo '<a href="adherents.php?order=adherents.nom&sens=ASC&order2=, adherents.prenom ASC">NOM<br><img src="tri_up.gif" width="11" height="12" border="0"></a>';
  122.     }
  123.    }
  124.   ?>
  125.   <b></div><br>
  126.     </td>
  127.     <td class="texte" valign="top">
  128.       <div align="center"><b>
  129.     <?
  130.   if ($order != "adherents.prenom" )
  131.    {
  132.    echo '<a href="adherents.php?order=adherents.prenom&sens=ASC&order2=, adherents.nom ASC">Prénom<br><img src="tri_no.gif" width="11" height="12" border="0"></a>';
  133.    }
  134.   else
  135.    {
  136.    if ($sens == ASC)
  137.     {
  138.     echo '<a href="adherents.php?order=adherents.prenom&sens=DESC&order2=, adherents.nom ASC">Prénom<br><img src="tri_down.gif" width="11" height="12" border="0"></a>';
  139.     }
  140.    else
  141.     {
  142.     echo '<a href="adherents.php?order=adherents.prenom&sens=ASC&order2=, adherents.nom ASC">Prénom<br><img src="tri_up.gif" width="11" height="12" border="0"></a>';
  143.     }
  144.    }
  145.   ?>
  146.   <b></div><br>
  147.     </td>
  148.     <td class="texte" valign="top">
  149.       <div align="center"><b>
  150.     <?
  151.   if ($order != "adherents.numlicence" )
  152.    {
  153.    echo '<a href="adherents.php?order=adherents.numlicence&sens=ASC">Licence<br><img src="tri_no.gif" width="11" height="12" border="0"></a>';
  154.    }
  155.   else
  156.    {
  157.    if ($sens == ASC)
  158.     {
  159.     echo '<a href="adherents.php?order=adherents.numlicence&sens=DESC">Licence<br><img src="tri_down.gif" width="11" height="12" border="0"></a>';
  160.     }
  161.    else
  162.     {
  163.     echo '<a href="adherents.php?order=adherents.numlicence&sens=ASC">Licence<br><img src="tri_up.gif" width="11" height="12" border="0"></a>';
  164.     }
  165.    }
  166.   ?>
  167.   <b></div><br>
  168.     </td>
  169.     <td class="texte" valign="top">
  170.       <div align="center"><b>
  171.     <?
  172.   if ($order != "adherents.datenaiss" )
  173.    {
  174.    echo '<a href="adherents.php?order=adherents.datenaiss&sens=ASC&order2=, adherents.nom ASC">Date de naissance<br><img src="tri_no.gif" width="11" height="12" border="0"></a>';
  175.    }
  176.   else
  177.    {
  178.    if ($sens == ASC)
  179.     {
  180.     echo '<a href="adherents.php?order=adherents.datenaiss&sens=DESC&order2=, adherents.nom ASC">Date de naissance<br><img src="tri_down.gif" width="11" height="12" border="0"></a>';
  181.     }
  182.    else
  183.     {
  184.     echo '<a href="adherents.php?order=adherents.datenaiss&sens=ASC&order2=, adherents.nom ASC">Date de naissance<br><img src="tri_up.gif" width="11" height="12" border="0"></a>';
  185.     }
  186.    }
  187.   ?>
  188.   <b></div><br>
  189.     </td>
  190.     <td class="texte" valign="top">
  191.       <div align="center"><b>Grade
  192.     <?/*
  193.   if ($order != "adherents.numgrade" )
  194.    {
  195.    echo '<a href="adherents.php?order=adherents.numgrade&sens=ASC">Grade<br><img src="tri_no.gif" width="11" height="12" border="0"></a>';
  196.    }
  197.   else
  198.    {
  199.    if ($sens == ASC)
  200.     {
  201.     echo '<a href="adherents.php?order=adherents.numgrade&sens=DESC">Grade<br><img src="tri_down.gif" width="11" height="12" border="0"></a>';
  202.     }
  203.    else
  204.     {
  205.     echo '<a href="adherents.php?order=adherents.numgrade&sens=ASC">Grade<br><img src="tri_up.gif" width="11" height="12" border="0"></a>';
  206.     }
  207.    }
  208.   */?>
  209.   <b></div><br>
  210.     </td>
  211. <td class="texte" valign="top">
  212.       <div align="center"><b>
  213.     <?
  214.   if ($order != "adherents.sexe" )
  215.    {
  216.    echo '<a href="adherents.php?order=adherents.sexe&sens=ASC&order2=, adherents.nom, adherents.prenom ASC">Sexe<br><img src="tri_no.gif" width="11" height="12" border="0"></a>';
  217.    }
  218.   else
  219.    {
  220.    if ($sens == ASC)
  221.     {
  222.     echo '<a href="adherents.php?order=adherents.sexe&sens=DESC&order2=, adherents.nom ASC, adherents.prenom ASC">Sexe<br><img src="tri_down.gif" width="11" height="12" border="0"></a>';
  223.     }
  224.    else
  225.     {
  226.     echo '<a href="adherents.php?order=adherents.sexe&sens=ASC&order2=, adherents.nom ASC, adherents.prenom ASC">Sexe<br><img src="tri_up.gif" width="11" height="12" border="0"></a>';
  227.     }
  228.    }
  229.   ?>
  230.   <b></div><br>
  231.     </td>
  232.     <td class="texte" valign="top">
  233.       <div align="center"><b>Détails</b></div><br>
  234.     </td>
  235.     <td class="texte" valign="top">
  236.       <div align="center"><b>Modifier</b></div><br>
  237.     </td>
  238.   </tr>
  239.  
  240. <? 
  241. while ($enr = mysql_fetch_array($res))
  242. {
  243. $numad = $enr['numad'];
  244. $req2 = "SELECT grades.libgrade
  245.   FROM adherents, grades, passer
  246.   WHERE ((adherents.numad = '$numad')
  247.   AND (passer.numad =adherents.numad )
  248.   AND (grades.numgrade =passer.numgrade ))
  249.   ORDER BY passer.datepassage DESC
  250.   LIMIT 0,1";
  251. $res2 = mysql_query($req2);
  252. $grade = mysql_fetch_array($res2);
  253. echo '<tr>';
  254.  echo '<td class="texte"><div align="left">' . $enr['nom'] . '</div></td>';
  255.  echo '<td class="texte"><div align="left">' . $enr['prenom'] . '</div></td>';
  256.  echo '<td class="texte"><div align="right">' . $enr['numlicence'] . '</div></td>';
  257.  echo '<td class="texte"><div align="center">' . $enr['datenaiss'] . '</div></td>';
  258.  echo '<td class="texte"><div align="center">' . $grade['libgrade'] . '</div></td>';
  259.  echo '<td class="texte"><div align="center">' . $enr['sexe'] . '</div></td>';
  260.  echo '<td class="texte"><div align="center"><a href="detailad.php?numad=' . $numad. '"><img src="ico_d.gif" border="0"></a></div></td>';
  261.  echo '<td class="texte"><div align="center"><a href="modifad.php?numad=' . $numad. '"><img src="ico_m.gif" border="0"></a></div></td>';
  262. echo '</tr>';
  263. }
  264. echo '</table></div>';
  265. echo '<hr><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="100" height="23">
  266.   <param name=movie value="newad.swf">
  267.   <param name=quality value=high>
  268.   <param name="BASE" value=".">
  269.   <param name="BGCOLOR" value="">
  270.   <embed src="newad.swf" base="."  quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="100" height="23" bgcolor="">
  271.   </embed>
  272. </object>';
  273. baspage();
  274. ?>

n°3665
Fane_CHP
Just Free It
Profil : Membre
Posté le 02-04-2003 à 07:50:53  
 

:bounce:


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°3680
Fane_CHP
Just Free It
Profil : Membre
Posté le 02-04-2003 à 16:50:20  
 

:bounce:


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°3682
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 02-04-2003 à 22:19:04  
 

T'es sur des noms de tes champs et de la casse ?


---------------
informatique / jeu vidéo
n°3684
Fane_CHP
Just Free It
Profil : Membre
Posté le 03-04-2003 à 08:10:03  
 

yaissse


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°3893
Fane_CHP
Just Free It
Profil : Membre
Posté le 18-04-2003 à 13:32:01  
 

c'est bon j'ai trouvé une cobine, je suis passé par des  
 

Code :
  1. SELECT max(champ)
  2. GROUP BY (identifiant)


 
Merci à tous


Message édité par Fane_CHP le 18-04-2003 à 13:32:37

---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
n°3895
lukefab
meuh
Profil : Habitué
Posté le 18-04-2003 à 13:53:51  
 

lukefab a écrit :

SI j'ai bien compris ton pb, faut que tu utilises "group by".


 
Hum hum,  :pfff:  :ange:  
T'avais pas vu mon post?


---------------
Opera 8.51 pour Windows, Linux, FreeBSD, Solaris, Mac OS X.
www.opera.com , c'est bon et sans morceau de pub dedans, mangez-en.
Un pingouin aux pommes ?
n°3897
Fane_CHP
Just Free It
Profil : Membre
Posté le 18-04-2003 à 14:22:47  
 

non  :whistle:  j'étais po passé depuis kk jours.
 
Merci quand même :hello:


---------------
Fane_CHP :hello:
http://www.aikidocvr.com
Powered by Debian GNU/Linux Sid / Kernel 2.6.14
  FORUM Rue-Montgallet.com
  Programmation
  Php - Sql

  requete SQL [résolu]

© 2000-2024 Forum.rue-montgallet.com - Tous droits réservés