Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
963 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Actualiser une liste de données tirées d'une table Mysql en PHP

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Actualiser une liste de données tirées d'une table Mysql en PHP

n°2039306
leloos
Posté le 30-11-2010 à 18:50:46  profilanswer
 

Hello,
 
J'ai un site géré en php avec une base Mysql qui m'affiche une liste de livres, classés par catégorie.
Ce que j'aimerai faire c'est un menu qui en fonction de la catégorie cliquée, m'affiche uniquement les livres de cette catégorie. Et a chaque nouveau clic, la liste se met a jour avec les nouveaux livres.
 
J'ai bien une variable avec l'ID de la catégorie que je peux récupérer mais je ne sais pas :
- Changer cette variable avec le nouvel ID, avec un clic sur un item du menu
- Actualiser la liste une fois la variable modifiée
 
J'ai bien fait un include de mon fichier php qui contient ma liste a afficher, dans un <DIV> mais voila, comment lui dire que quand on va cliquer sur le lien du menu, ça va devoir relancer la recherche et afficher la nouvelle liste ?
 
Je ne sais pas si mes explications sont tres claire.?
Alors j'ai entendu parler d'ajx pour faire cela mais tous les tuto que je trouvent utiliser des formulaire, ce qui ne conviens pas a mon cas.
 
Si quelqu'un a une idée, je suis preneur. Merci d'avance

mood
Publicité
Posté le 30-11-2010 à 18:50:46  profilanswer
 

n°2039309
flo850
moi je
Posté le 30-11-2010 à 19:05:53  profilanswer
 

Est ce que, lorsque tu clique sur une categorie, tu veux recharger ta page ( genre listeLivres.php?id_categorie=3 ) ou est ce que tout doit se faire sans rechargement ?  
la première solution est simple et en php  
la seconde, un poil plus complexe et en javascript + PHP

n°2039329
leloos
Posté le 30-11-2010 à 21:35:17  profilanswer
 

bin j'avoue que ça m'arrangerai de ne recharger que la partie qui doit etre modifiée.
Mais sinon recharger la page entiere pourquoi pas.
Je suis ouvert aux différentes propositions :)

n°2039332
flo850
moi je
Posté le 30-11-2010 à 22:05:28  profilanswer
 

prends pas trop de risques, il peut y avoir des propositions indécentes

 

Le plus simple

Code :
  1. if(!empty($_GET['idCategorie'] ) && is_int($_GET['idCategorie'])) // on verifie qu'on a une categorie et qeu c'est bien un entier, ne jamais faire confiance a un utilisateur
  2. {
  3.  
  4. $idCategorie = $_GET['idCategorie'];
  5. }else{
  6. $idCategorie = '';
  7. }
  8.     afficheLesLivresAvecEventuellementUneCategorieSiOnAEnvie($idCategorie);
 


Code :
  1. function  afficheLesLivresAvecEventuellementUneCategorieSiOnAEnvie($idCategorie = '')
  2. {
  3.    $query ="SELECT tous,mes,champs FROM livres";
  4.     if($idCategorie)
  5.     {
  6.           $query.=" WHERE idCategorie =".mysql_real_escape_string($idCategorie); //ici des requetes preparée, ce serait mieux, mais bon, c'est deja pas mal
  7.     }
  8.    $result =mysql_query($query);
  9.    while($data = mysql_fetch_array($result))
  10.   {
  11.        afficheUnSeulLivre($data);
  12.   }
  13.  
  14. }


Message édité par flo850 le 30-11-2010 à 22:06:02
n°2039345
leloos
Posté le 30-11-2010 à 23:39:03  profilanswer
 

Merci
J'ai modifié mon code pour m'approcher de ce que tu proposes et ça fonctionne bien, j'ai bien ma liste pour la première categorie par contre je suis toujours bloqué au niveau du clic pour afficher les autres categorie.
 
pour chaque item du menu j'ai un evenement onClick qui lance une fonction Javascript avec en parametre la categorie et dans cette fonction j'ai trouvé ce genre de code sur le net, mais ça ne fait rien du tout :'(
 

Code :
  1. if (idSerie=="" )
  2. {
  3.    document.getElementById("DisplayBooks" ).innerHTML="";
  4.    return;
  5. }
  6. if (window.XMLHttpRequest)
  7. {// code for IE7+, Firefox, Chrome, Opera, Safari
  8. xmlhttp=new XMLHttpRequest();
  9. }
  10. else
  11. {// code for IE6, IE5
  12. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP" );
  13. }
  14. xmlhttp.onreadystatechange=function()
  15. {
  16. if (xmlhttp.readyState==4 && xmlhttp.status==200)
  17. {   
  18.           document.getElementById("DisplayBooks" ).innerHTML=xmlhttp.responseText;
  19.         }
  20. }
  21. xmlhttp.open("GET","displayBook.php?NewID="+idSerie,true);
  22. xmlhttp.send();

 
L'element DisplayBook est un id sur la balise DIV qui inclu le code php qui affiche les livres


Message édité par leloos le 30-11-2010 à 23:40:19
n°2039365
flo850
moi je
Posté le 01-12-2010 à 09:24:39  profilanswer
 

pas besoinde js tu fais un lien ( ou un bouton ) . commence déjà apr avoir une navigation qui marche sans , avant de compliquer

 
Code :
  1. <a href="mapageoujaffichemeslivres.php?id=1">livres pornographiques</a>
  2. <a href="mapageoujaffichemeslivres.php?id=2">livres sur les gladiateurs</a>


Message édité par flo850 le 01-12-2010 à 09:25:08
n°2039374
leloos
Posté le 01-12-2010 à 10:28:51  profilanswer
 

Et non, malheureusement je ne peut pas proceder comme ça, car la, ça ne me lance que le fichier php qui contient ma partie qui affiche la liste, et donc je me retrouve avec pleins d'erreur de fonctions manquantes.
 
Je vais poster quelques un de mes script (en virant certaines infos genre infos de connexion, etc.) pour que ce soit plus compréhensible. Bon par contre, etant plus ou moins debutant, je code comme un pied et c'est surement bourré de fautes.......lol
Le souci venant du script CreateMenu qui contient le menu et les liens pour afficher une nouvelle liste.  
Il faudrait soit que j'arrive a mettre a jour une variable globale que je puisse récupérer lors d'un refresh de la page index.php (mais bon la c'est pas super), le mieux etant de pouvoir relancer displayBooks.php, contenu dans une balise DIV.
Il doit y avoir moyen de le faire avec du javscript mais la je seche completement.
 
 
PS : désolé pour le pavé de code  
 
index.php

Code :
  1. <?php
  2. // On demarre une nouvelle session
  3. session_start();
  4. ?>
  5. <html lang="en" dir="ltr" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7.  <!-- lien vers la feuille css -->
  8.  <link rel="stylesheet" type="text/css" href= "design.css">
  9.  <!-- lien vers fichier avec les script-->
  10.  <script type="text/javascript" src="script.js"></script>
  11. </head>
  12. <body>
  13. <!-- Connection a la base -->
  14. <?php include './PhpScripts/DBConnexion.php'; ?>
  15. <!-- Fonctions PHP -->
  16. <?php include './PhpScripts/functions.php'; ?>
  17. <!-- Titre avant la liste -->
  18. <span id="Big_Title">JUMP ANIME COMICS</span>
  19. <span id="Less_Big_Title">Jump Comics Selection</span>
  20. <span id="Little_Title">Database</span>
  21. <BR/><BR/><BR/><BR/><BR/><BR/>
  22. <table id="Conteneur">
  23. <tr id="Conteneur">
  24. <!-- Colonne avec le menu -->
  25. <td id="Menu"><div align="center">
  26.  <ul id="Navigation">
  27.  <!-- Creation du menu -->
  28.  <?php include './PhpScripts/CreateMenu.php'; ?>
  29.  </ul>
  30. </td></div>
  31. <!-- Colonne avec le contenu -->
  32. <td id="Conteneur"><div align="center" id="DisplayBooks">
  33.  <?php
  34.   $_GET['NewID']   = $_SESSION['NewSerieID'];
  35.   $_GET['SerieFR']  = $_SESSION['NewSerieNameFR'];
  36.   $_GET['SerieVO']  = $_SESSION['NewSerieNameVO'];
  37.   include './PhpScripts/displayBooks.php';
  38.  ?>
  39. </div></td>
  40. </TR></TABLE>
  41. </DIV>
  42. <!-- Deconnection a la base -->
  43. <?php mysql_close($base); ?>
  44. </body>
  45. </html>
  46. <!-- Destruction des variables de session et la session -->
  47. <?php
  48. session_unset();
  49. session_destroy(); 
  50. ?>


 
CreateMenu.php

Code :
  1. <?php
  2. // Selection des series
  3. $reqSerie = mysql_query("SELECT * FROM Serie" );
  4. // Un menu par série
  5. for($i=0 ;$i < mysql_num_rows($reqSerie) ;$i++)
  6. {
  7.  $NewSerieNameFR = mysql_result($reqSerie,$i,1);
  8.  $NewSerieNameVO = mysql_result($reqSerie,$i,2);
  9.  $NewSerieID    = mysql_result($reqSerie,$i,0);
  10.  echo "<li><a href=\"./PhpScripts/displayBooks.php?NewID=$i\" id=\"Link-$i\" title=\"$NewSerieNameFR ($NewSerieNameVO)\">&nbsp;&nbsp;";
  11.  //echo "onClick=\"Get_Books($NewSerieID, $NewSerieNameFR, $NewSerieNameVO);\">&nbsp;&nbsp;";
  12.  echo $NewSerieNameFR;
  13.  echo "</a></li>";
  14. }
  15. // On initialise avec la première série
  16. $NewSerieNameFR = mysql_result($reqSerie,0,1);
  17. $NewSerieNameVO = mysql_result($reqSerie,0,2);
  18. $NewSerieID    = mysql_result($reqSerie,0,0);
  19. // On créé nos varaibles sessiosn  
  20. $_SESSION['NewSerieNameFR'] = $NewSerieNameFR ;
  21. $_SESSION['NewSerieNameVO'] = $NewSerieNameVO ;
  22. $_SESSION['NewSerieID']  = $NewSerieID ;
  23. ?>


 
displayBooks.php

Code :
  1. <?php
  2. // On récupère l'ID de la série
  3. if(!empty($_GET['NewID'] ) && is_int($_GET['NewID']))
  4.   {
  5.  $IDSerie = $_GET['NewID'];
  6.   }else{
  7.  $IDSerie = '';
  8.   }
  9. // On affiche les livres de la série
  10. DisplayBooks($IDSerie, "", "" );
  11. ?>


 
functions.php

Code :
  1. <?php
  2. function DisplayBooks($idSerie='', $SerieFR='', $SerieVO='')
  3.     {
  4.  // Affichage du titre de la serie en cours
  5.  echo"<table id='HeaderSerie'>";
  6.  echo"<tr id='HeaderSerie'>";
  7.  echo"<td id='HeaderSerie'>";
  8.  echo"<span id=HeaderSerie>";
  9.  echo $SerieFR;
  10.  echo"</span>";
  11.  echo"<span id='TitreJPRomaji1'>(";
  12.  echo $SerieVO;
  13.  echo" )</span></td></tr></table><br/>";
  14.  // Selection des livres
  15.  $query ="SELECT * FROM Book";
  16.         if($idSerie)
  17.         {
  18.   $query.=" WHERE IDSerie =".mysql_real_escape_string($idSerie);
  19.         }
  20.         $result =mysql_query($query);
  21.  DisplayOneBook($result);
  22.     }
  23. function DisplayOneBook($req)
  24. {
  25.  // Affichage des Anime Books correspondants a la serie
  26.  for($j=0 ;$j < mysql_num_rows($req) ;$j++)
  27.  {
  28.   echo"<TABLE id='Book'>";
  29.   echo"<TR id='Book'><TD id='Book'>";
  30.   // Ligne d'entete avec les titres JP
  31.   echo"<tr id='HeaderBook'>";
  32.   echo"<td id='HeaderBook' colspan='2'>";
  33.   echo"<span id='TitreJP'>";
  34.   echo mysql_result($req,$j,3);
  35.   echo"</span>";
  36.   // Titre JP2 (Romaji)
  37.   echo"<span id='TitreJPRomaji2'>";
  38.   echo mysql_result($req,$j,4);
  39.   echo"</span>";
  40.   echo"</td></tr>";
  41.   // Info du livre
  42.   echo"<tr id='InfoBook'>";
  43.   echo"<td id='InfoBookLeft'>";
  44.   // Image
  45.   echo"<img src='";
  46.   echo mysql_result($req,$j,10);
  47.   echo"' id='ImageBook'>";
  48.   echo"</td>";
  49.   // Partie de gauche
  50.   echo"<td id='InfoBookRight'>";
  51.   // Titre FR
  52.   echo"<div id='BookTitreFR'>";
  53.   echo mysql_result($req,$j,5);
  54.   echo"</div>";
  55.   // Titre FR2
  56.   echo"<div id='BookTitreFR2'>";
  57.   echo mysql_result($req,$j,6);
  58.   echo"</div><BR/>";
  59.   // Numero et Date
  60.   echo"<div id='BookNumDate'>";
  61.   echo mysql_result($req,$j,8);
  62.   echo" (";
  63.   echo mysql_result($req,$j,7);
  64.   echo" )</div><BR/>";
  65.   //ISBN
  66.   echo"<div id='BookISBN'>ISBN-";
  67.   $Isbn = mysql_result($req,$j,9);
  68.   echo $Isbn;
  69.   echo"</div><BR/>";
  70.   echo"</td>";
  71.   echo"</tr>";
  72.   echo"</table>";
  73.  }
  74. }
  75. ?>


 
en tout cas merci d'avance pour ton aide ;)

n°2039420
leloos
Posté le 01-12-2010 à 14:11:41  profilanswer
 

Ok je pense avoir trouvé, je suis passé par l'ajax et maintenant j'arrive bien a actualiser le texte de ma balise. Me reste plus qu'a corriger quelques erreurs de scripts php mais sinon ça me semble good.
Merci pour tout


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Actualiser une liste de données tirées d'une table Mysql en PHP

 

Sujets relatifs
Selects en cascade avec bdd Mysql[PHP]SSH sur cisco
Récupération de données XML dans des tableaux[MySQL] Ajouter une colonne et les données d'une autre table
Extraction de données apartir d'un fichier XML[PHP] Créer un client ActiveSync
[C#] Php hors ligne ?[MySQL / PL/SQL] Selection passée en paramètre
Plus de sujets relatifs à : Actualiser une liste de données tirées d'une table Mysql en PHP


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR