Se connecter avec
S'enregistrer | Connectez-vous

Probléme - Ajax - PHP/MYSQL - Accordéon Jquery

Bonjour tout le monde,
Voilà, j'ai un petit et je n'arrive pas à le résoudre.
Je vais prendre un exemple pour vous exposer le problème.

J'aimerai, à l'aide de PHP/MySQL + de l'ajax, afficher quelque chose de ce genre :



Donc, comme vous pouvez le voir sur l'image, on saisi une date de début et une date de fin et ça nous affiche un tableau automatique (grâce à ajax). Chaque ligne du tableau c'est une commande passé par un client et au clique sur le + sur le coté, on affiche le détail (le nom du client, le nom du produit et le montant)

En m'inspirant de 2 sites, j'ai essayé de le faire, mais je n'y suis pas parvenu. Je crois que c'est un problème de DOM.

Site 1 (pour hmtl, PHP, mysql et ajax) : http://www.w3schools.com/PHP/php_ajax_database.asp
Site 2 (pour l'accordeon) : http://mediaformations.com/examples/AccordionTableExample.ht*ml

Pour cela, j'ai fais le code suivant :

- Page html

  1. <html>
  2. <head>
  3.  
  4. <script type="text/javascript">
  5. function lesRep()
  6. {
  7. vdatedeb = document.getElementById("datedeb").value;
  8. vdatefin = document.getElementById("datefin").value;
  9.  
  10. if(vdatedeb!="" && vdatefin!="")
  11. {
  12. //date deb
  13. var tabDatedeb = vdatedeb.split('/');
  14. la_date_deb = tabDatedeb[2]+'-'+tabDatedeb[1]+'-'+tabDatedeb[0];
  15.  
  16. //date fin
  17. var tabDatefin = vdatefin.split('/');
  18. la_date_fin = tabDatefin[2]+'-'+tabDatefin[1]+'-'+tabDatefin[0];
  19.  
  20.  
  21. req = "WHERE date BETWEEN '"+la_date_deb+"' AND '"+la_date_fin+"'";
  22.  
  23. showRep(req);
  24. }
  25. }
  26. </script>
  27.  
  28. <script type="text/javascript" src="select.js"></script>
  29.  
  30. <script type="text/javascript" src="<a href="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" target="_blank">http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquer...</a>"></script>
  31. <script type="text/javascript">
  32. $(document).ready(function(){
  33.  
  34. $('table.CityTable th') .click(
  35. function() {
  36. $(this) .parents('table.CityTable') .children('tbody') .toggle();
  37. }
  38. )
  39.  
  40. $('table.StateTable tr.statetablerow th') .click(
  41. function() {
  42. $(this) .parents('table.StateTable') .children('tbody') .toggle();
  43. }
  44. )
  45.  
  46.  
  47.  
  48. });
  49. </script>
  50. <style type="text/css">
  51. table.CityTable, table.StateTable{width:400px; border-color:#1C79C6; text-align:center;}
  52. table.StateTable{margin:20px; border:3px solid #1C79C6;}
  53.  
  54. table td{padding:5px;}
  55. table.StateTable thead th{background: #1C79C6; padding: 10px; cursor:pointer; color:white;}
  56. table.CityTable thead th{padding: 10px; background: #C7DBF1;cursor:pointer; color:black;}
  57.  
  58. table.StateTable td.nopad{padding:0;}
  59. </style>
  60.  
  61.  
  62. </head>
  63. <body>
  64.  
  65.  
  66.  
  67. <table>
  68. <tr>
  69. <td align="center" class="liste"><input type="text" id="datedeb" name="datedeb" size="11" maxlength="10"
  70. class="text" onBlur="lesRep();"/></td>
  71.  
  72. <td align="center" class="liste"><input type="text" id="datefin" name="datefin" size="11" maxlength="10"
  73. class="text" onBlur="lesRep();"/></td>
  74. </tr>
  75. </table>
  76.  
  77. <div id="txtHint">
  78.  
  79. </div>
  80.  
  81. </body>
  82. </html>



- Page javascript (ou ajax)
  1. var xmlhttp;
  2.  
  3. function showRep(str)
  4. {
  5. xmlhttp=GetXmlHttpObject();
  6. if (xmlhttp==null)
  7. {
  8. alert ("Browser does not support HTTP Request");
  9. return;
  10. }
  11.  
  12. var url="getrep.php";
  13. url=url+"?q="+str;
  14. xmlhttp.onreadystatechange=stateChanged;
  15. xmlhttp.open("GET",url,true);
  16. xmlhttp.send(null);
  17. }
  18.  
  19. function stateChanged()
  20. {
  21. if (xmlhttp.readyState==4)
  22. {
  23. document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  24. }
  25. }
  26.  
  27. function GetXmlHttpObject()
  28. {
  29. if (window.XMLHttpRequest)
  30. {
  31. // code for IE7+, Firefox, Chrome, Opera, Safari
  32. return new XMLHttpRequest();
  33. }
  34. if (window.ActiveXObject)
  35. {
  36. // code for IE6, IE5
  37. return new ActiveXObject("Microsoft.XMLHTTP");
  38. }
  39. return null;
  40. }


- page PHP
  1. <?php
  2. $q=$_GET["q"];
  3.  
  4. $con = mysql_connect('localhost', 'root', '');
  5. if (!$con)
  6. {
  7. die('Could not connect: ' . mysql_error());
  8. }
  9.  
  10. mysql_select_db("test", $con);
  11.  
  12. $sql= "SELECT * FROM commande ".$q;
  13.  
  14. $result = mysql_query($sql);
  15.  
  16. echo
  17. '<table class="StateTable" rules="all" cellpadding="0" cellspacing="0">
  18. <tr>
  19. <td> </td>
  20. <td>Date de la comande</td>
  21. <td>Nombre de produit</td>
  22. <td>Total</td>
  23.  
  24. </tr>
  25. <tr><td colspan="6">
  26. ';
  27.  
  28. while($row = mysql_fetch_array($result))
  29. {
  30.  
  31. echo '
  32. <table class="CityTable" rules="all" cellpadding="0" cellspacing="0">
  33. <thead>
  34. <tr>
  35. <th style="width:5%">+</th>
  36. <th style="width:20%">'.$row['date'].'</th>
  37. <th style="width:55%">'.$row['nb_produit'].'</th>
  38. <th style="width:20%">'.$row['total'].'</th>
  39. </tr>
  40. </thead>
  41. <tbody>';
  42.  
  43.  
  44.  
  45. $req2 = mysql_query("SELECT * FROM detail WHERE id_commande=".$row['id']);
  46. while($row2 = mysql_fetch_array($req2))
  47. {
  48. $req3 = mysql_query("SELECT * FROM user WHERE id=".$row2['id_user']);
  49. $row3 = mysql_fetch_array($req3);
  50. $nom= $row3['nom'];
  51.  
  52. $req4 = mysql_query("SELECT * FROM produit WHERE id=".$row2['id_produit']);
  53. $row4 = mysql_fetch_array($req4);
  54. $nom_produit= $row4['nom'];
  55. $prix= $row4['prix'];
  56.  
  57.  
  58. echo "<tr>";
  59. echo "<td> </td>";
  60. echo "<td>" . $nom. "</td>";
  61. echo "<td>" . $nom_produit . "</td>";
  62. echo "<td>" . $prix. "</td>";
  63. echo "<tr>";
  64.  
  65. }
  66.  
  67. echo "</tbody>";
  68. echo "</table>";
  69.  
  70. }
  71.  
  72.  
  73. echo "</td></tr></table>";
  74.  
  75. mysql_close($con);
  76. ?>


Merci beaucoup pour votre aide !!!

ps : n'hésitez pas à tester le code
Lassé par la pub ? Créez un compte
Tom's guide dans le monde