Page 1 sur 2

Afficher table entiere

Posté : 28 mars 2006, 09:02
par skyangel
Bonjour,

J'aimerais afficher toutes mes tables entierements dans une interface graphique.

je n'arrive pas à avoir une présentation correcte.

Je voudrais qu'a la fin du tuples il ailla a la ligne.

et ainsi de suite.

j'ai cette partie de code mais apparemment c'est pas top .

Code : Tout sélectionner

while ($ligne_affiche = mysql_fetch_array($req_affiche,MYSQL_NUM)) { for($i=1;$i<=$totalRows_req;$i++) { if ($i<$arret[$table]) { echo '<td>'.$ligne_affiche[$i].'</td>'; } else { echo '</tr><tr>'; } } }
quel est la meilleur méthode pour cette execution .

En sachant que le nom de la table est une variable passé par GET.
et je connais le nombre de colonne pour chaque table stocké dauns un tableau $arret.

Merci de votre aide

Posté : 28 mars 2006, 09:25
par jpaul
J'ai été rechercher une fonction où j'affiche le contenu d'un result sous forme de tableau. Si ça peut t'aider :
function dump_result($result)
         {
         echo "<TABLE BORDER=1>";
         echo "<TR>";
         $j=0;
		 // Affichage des titres de colonnes
         while ($j < mysql_NumFields($result))
                {
                echo "<TD>";
                echo mysql_FieldName($result,$j);
                echo "</TD>";
                $j++;
                }
         echo "</TR>";
 		 // Affichage du contenu
         while($tableau=mysql_fetch_row($result))
               {
               echo "<TR>";
               while (list($key, $val) = each($tableau))
                      {
                      echo "<TD>";
                      echo $val;
                      echo "</TD>";
                      }
               echo "</TR>";
               }
         echo "</TABLE>";
         }

Posté : 28 mars 2006, 09:33
par skyangel
Ok merci j'ai testé
et voila mon erreur

Code : Tout sélectionner

Warning: mysql_numfields(): supplied argument is not a valid MySQL result resource in d:\wwwroot\1024\fonctions.php on line 54

Posté : 28 mars 2006, 09:34
par Cyrano
ça sent l'erreur au niveau de l'exécution de la requête : fais donc voir la requête SQL que tu utilises ?

Posté : 28 mars 2006, 09:35
par skyangel
ne serait ce pas mysql_num_fields ???

Posté : 28 mars 2006, 09:36
par Invité
ma requete ;
$result="SELECT * FROM ".$table;
quand je fais un echo^$result;

il me dit select * from alerte .


donc elle est correcte pour moi :)

Posté : 28 mars 2006, 09:38
par Cyrano
As-tu vérifié ta requête générée en essayant de l'exécuter directement dans phpMyAdmin par exemple ?

Posté : 28 mars 2006, 09:39
par skyangel
oui il me sort toute ma table .

Posté : 28 mars 2006, 09:41
par Cyrano
Alors fais voir le code à partir de la requête jusqu'à la ligne où tu essayes d'afficher qu'on puisse détecter une erreur éventuelle.

Posté : 28 mars 2006, 09:43
par skyangel
ok

code de la page de la requete (visubdd.php )
<?php 
//on protege la page avce le script de securite
		$cfgProgDir =  'phpSecurePages/';
		include($cfgProgDir . "secure.php");
// on inclut les variables pour lees pages sécurisées

include ('variable.php');
//on inclut les fonctiosn 
require('fonctions.php');
$table=$_GET['table'];
//affichetable($table);
$result="SELECT * FROM ".$table;
dump_result($result);
?>
code de la fonctions (fonctions.php)
function dump_result($result) 
         { 
         echo "<TABLE BORDER=1>"; 
         echo "<TR>"; 
         $j=0; 
         // Affichage des titres de colonnes 
         while ($j < mysql_NumFields($result)) 
                { 
                echo "<TD>"; 
                echo mysql_FieldName($result,$j); 
                echo "</TD>"; 
                $j++; 
                } 
         echo "</TR>"; 
         // Affichage du contenu 
         while($tableau=mysql_fetch_row($result)) 
               { 
               echo "<TR>"; 
               while (list($key, $val) = each($tableau)) 
                      { 
                      echo "<TD>"; 
                      echo $val; 
                      echo "</TD>"; 
                      } 
               echo "</TR>"; 
               } 
         echo "</TABLE>"; 
         } 
merci de votre aide en tout cas

Posté : 28 mars 2006, 09:45
par skyangel
sinon j'ai modifie la fonction tel que la suite
function dump_result($result) 
         { 
		 $req=mysql_query ($result) ;
         echo "<TABLE BORDER=1>"; 
         echo "<TR>"; 
         $j=0; 
         // Affichage des titres de colonnes 
         while ($j < mysql_num_fields($req)) 
                { 
                echo "<TD>"; 
                echo mysql_num_fields($req,$j); 
                echo "</TD>"; 
                $j++; 
                } 
         echo "</TR>"; 
         // Affichage du contenu 
         while($tableau=mysql_fetch_row($req)) 
               { 
               echo "<TR>"; 
               while (list($key, $val) = each($tableau)) 
                      { 
                      echo "<TD>"; 
                      echo $val; 
                      echo "</TD>"; 
                      } 
               echo "</TR>"; 
               } 
         echo "</TABLE>"; 
         }

la le contenu des table s'affiche mais pas les entetes.
si ca peut vousq aidert

Posté : 28 mars 2006, 09:47
par jpaul
Tu n'a pas fai une requête mysql !!!
$result="SELECT * FROM ".$table; 
ca affecte la variable result !!!

A ta place je ferais :
$req="SELECT * FROM ".$table; 
$result=mysql_query ($req) ; 
Pour ne pas s'y perdre, vaut mieux appeler une requête req et un resultat result, autrement c'est le meilleurs moyen pour s'y perdre ;)

Posté : 28 mars 2006, 10:06
par Invité
ok je modifie donc et je l avis fait car je me disais bien qu'il manquait qqch .

donc voici mon code de visubdd.php

Code : Tout sélectionner

<?php //on protege la page avce le script de securite $cfgProgDir = 'phpSecurePages/'; include($cfgProgDir . "secure.php"); // on inclut les variables pour lees pages sécurisées include ('variable.php'); //on inclut les fonctiosn require('fonctions.php'); $table=$_GET['table']; //affichetable($table); $req="SELECT * FROM ".$table; $result =mysql_query($req); dump_result($result); ?>
et voila fonctions.php

Code : Tout sélectionner

function dump_result($result) { echo "<TABLE BORDER=1>"; echo "<TR>"; $j=0; // Affichage des titres de colonnes while ($j < mysql_num_fields($result)) { echo "<TD>"; echo mysql_num_fields($result,$j); echo "</TD>"; $j++; } echo "</TR>"; // Affichage du contenu while($tableau=mysql_fetch_row($result)) { echo "<TR>"; while (list($key, $val) = each($tableau)) { echo "<TD>"; echo $val; echo "</TD>"; } echo "</TR>"; } echo "</TABLE>"; }

voila l'erreur qu'il me sort
Warning: Wrong parameter count for mysql_num_fields() in d:\wwwroot\1024\fonctions.php on line 57
et ca seulmeent pour les entetes et pas les valeurs de la table .

je cherche mais si vous avez une idee elle m'interresses.


Merci

Posté : 28 mars 2006, 10:07
par Cyrano
En d'autres termes, le paramètre que tu envoies à ta fonction est une requête SQL qui n'a pas été exécutée. Donc mysql_num_field() reçoit un paramètre qui n'est pas la ressource attendue, c'est à dire un retour de MySQL mais la requête SQL diretement dont elle ne peut rien faire :arrow: erreur.

Posté : 28 mars 2006, 10:12
par jpaul
Oups !!!
excuses, il faut remplacer mysql_num_fields par mysql_field_name :
echo mysql_num_fields($result,$j); 
par
echo mysql_field_name($result,$j); 
C'est une fonction qui m'avait servi a de la mise au point et il y a du y avoir une modif (erreur de copier coller probablement) et depuis je n'ai pas réutilisé... :oops:

He mais je viens de voir que j'avais bien mis mysql_field_name, c'est pas moi qui ai fait l'erreur de copier coller :lol: : ça me rassure ;)