Reproduire l output mysql + PHP

Reproduire l output mysql + PHP - PHP - Programmation

Marsh Posté le 29-09-2008 à 15:31:52    

Salut all,
 
Comment faire pour reproduire exactement un output mysql mais en php,
du style,  
la querie: select * from matable limit 5;
 
et ensuite avoir un rendue php exactement similaire a celui de mysql (nom de chaque field puis chaque ligne les unes en dessous des autres) ?
En fait j aimerais pouvoir avoir un rendu des dernieres entrees mysql de (x)tables les uns a la suite des autres, d ou l interet de php pour faire looper la fonction sur chaque table, mais si on peux faire ca en mysql je suis preneur aussi...
 
Merci
 

Reply

Marsh Posté le 29-09-2008 à 15:31:52   

Reply

Marsh Posté le 29-09-2008 à 20:59:48    

Tu as essayé au moins?
 
En php, une requete sql te retourne un tableau indexé par les attributs (suivant config et fonction tu peux avoir des naturels) ligne par ligne en faisant un fetch.
Suffit de construire un tableau html en fonction du nombre d'attributs (num_rows) et tant que y'a des résultats :spamafote:

Reply

Marsh Posté le 30-09-2008 à 10:34:17    

Code :
  1. while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  2.     printf("<font color=red class=table>Table</font>: %s<br />", $row[0]."<br />" );
  3.     $quer1 = "describe $row[0];";
  4.     $result_field = mysql_query($quer1);
  5.  if (!$result_field) {
  6.  //if (!$result_field ) {
  7.  echo 'Impossible d\'exécuter la requête : ' . mysql_error();
  8.     exit;
  9.  }
  10.  else
  11. {
  12. $f=0;
  13. while ($rows = mysql_fetch_array($result_field, MYSQL_NUM)) {
  14.    printf("<span class=field> %s </span>", $rows[0]."" );
  15. $f ++; 
  16.    }
  17.  
  18. }


 
Pour l instant j ai un truc comme ca qui m affiche le noms des fields et me retourne le nombre de field presents pour chaque table(comme ca j ai plu qu a afficher pour chaque row le nombre de field correspondant).Mais j ai l impression de m embrouiller, y aurais pas plus simple ?

Reply

Marsh Posté le 30-09-2008 à 11:13:55    

Je pense qu'en effet tu t'embrouilles beaucoup :)
 
1/ta requête
2/exécution
3/fetch qui te renvoit tuple par tuple un tableau indexé par les attributs
4/tu boucles sur ton tableau pour en récupérer l'attribut pour le premier et les valeurs pour tous
 
Le tout enveloppé dans un <table> et hop :spamafote:
 
Utilise mysqli plutot :)

Reply

Marsh Posté le 30-09-2008 à 13:41:42    

3/fetch qui te renvoit tuple par tuple un tableau indexé par les attributs

 

Possible si je connais pas le nombre d attributs a l avance ?
Le truc c' est que je veux afficher les derniers tuple d une table puis d une autre puis d une autre donc a chaque fois je ne veux pas preciser le nombre d'attributs /table genre (printf("ID : %s  Nom : %s", $row[0], $row[1]); ) ...

 

J'ai un bon paquet de table...


Message édité par krifur le 30-09-2008 à 13:42:02
Reply

Marsh Posté le 30-09-2008 à 14:31:03    

Pour boucler sur le tableau retourner par mysql_fetch_array, regarde donc du côté de foreach
 
Au fait, si tu veux les noms des colonnes, utilises MYSQL_ASSOC au lieux de MYSQL_NUM . Ca permet d'avoir les noms des colonnes de mysql comme nom de case du tableau.

Reply

Marsh Posté le 01-10-2008 à 17:42:11    

Pas besoin de savoir cf post de omega2

Reply

Marsh Posté le 06-10-2008 à 13:18:23    

Code :
  1. if (!mysql_select_db("ma_base" ))
  2.   {
  3.    echo "Impossible de sélectionner la base mydbname : " . mysql_error();
  4.    exit;
  5.   }
  6.   $sql = "show tables";
  7.   $result1 = mysql_query($sql);
  8.   if (!$result1)
  9.   {
  10.      echo "Impossible d'exécuter la requête ($sql) dans la base : " . mysql_error();
  11.      exit;
  12.   }
  13.   if (mysql_num_rows($result1) == 0)
  14.   {
  15.      echo "Aucune ligne trouvée, rien à afficher.";
  16.      exit;
  17.   }
  18.    function array2table($arr,$width)
  19.         {
  20.         $count = count($arr);
  21.         if($count > 0){
  22.             reset($arr);
  23.             $num = count(current($arr));
  24.             echo "<table align=\"center\" border=\"1\"cellpadding=\"5\" cellspacing=\"0\" width=\"$width\">\n";
  25.             echo "<tr>\n";
  26.             foreach(current($arr) as $key => $value){
  27.                 echo "<th>";
  28.                 echo $key."&nbsp;";
  29.                 echo "</th>\n"; 
  30.                 } 
  31.             echo "</tr>\n";
  32.             while ($curr_row = current($arr)) {
  33.                 echo "<tr>\n";
  34.                 $col = 1;
  35.                 while ($curr_field = current($curr_row)) {
  36.                     echo "<td>";
  37.                     echo $curr_field."&nbsp;";
  38.                     echo "</td>\n";
  39.                     next($curr_row);
  40.                     $col++;
  41.                     }
  42.                 while($col <= $num){
  43.                     echo "<td>&nbsp;</td>\n";
  44.                     $col++;     
  45.                 }
  46.                 echo "</tr>\n";
  47.                 next($arr);
  48.                 }
  49.             echo "</table>\n";
  50.             }
  51.         }
  52.       
  53.      function create_array_table($list_table)
  54.       {
  55.       $array_queries = array();
  56.          while($row = mysql_fetch_array($list_table))
  57.          {
  58.             $query = "select * from $row[0] order by id DESC limit 5";
  59.             $array_queries[] = $query;
  60.          }
  61.       return $array_queries;
  62.       }
  63.        $array_table = create_array_table($result1);
  64.        foreach ($array_table as $key => $value)
  65.      {
  66.           echo $value;
  67.           $result=mysql_query($value);
  68.           $name = array();
  69.         
  70.         while($row = mysql_fetch_assoc($result))
  71.          {
  72.              $name[] = $row;
  73.          }
  74.        array2table($name,600);
  75.        echo "<br />";


 
hop bon je suis arrive a faire mon truc notamment grace a la fonction array2table trouver sur php.net ca fonctionne...En gros ca liste toutes les tables d une base de donnees et en afficher les 5 derniers champs a la maniere de mysql...Un ptit outil de debug ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed