Affichage contenu base de données [Résolu]

Signaler
Messages postés
39
Date d'inscription
lundi 26 mars 2012
Statut
Membre
Dernière intervention
8 février 2013
-
Messages postés
39
Date d'inscription
lundi 26 mars 2012
Statut
Membre
Dernière intervention
8 février 2013
-
Bonjour,

alors voila, j'ai fait un programme qui me permet de creer une table mysql quelconque avec des champs qu'on notera champ1, champ2 etc ... Je ne connais ni le nombre de champ ni leur nom ni leur taille et j'aimerais faire un script en ¨Php qui afficherait (pas forcement dans un tableau) le contenu de ma table

voila j'espere que vous serez plus inspirer que moi

merci d'avance.

10 réponses

Messages postés
39
Date d'inscription
lundi 26 mars 2012
Statut
Membre
Dernière intervention
8 février 2013

C'est bon j'ai trouvé, si ca interesse quelqu'un un jour voici un code qui permet d'afficher n'importe quelle table sql inconnue dans un tableau html :

mysql_connect('127.0.0.1','root','');
mysql_query("use fichierdemo;");

$res = mysql_query('select * from infofichier');
$nbligne = mysql_num_rows($res);

$nbchamp = mysql_num_fields($res);
echo '<table border="5"><tr bgcolor=#68DECF >';
for($i=0;$i<$nbchamp;$i++){
$nomchamp = mysql_field_name($res,$i);
echo '<th>'.$nomchamp.'</th>';}

for($j=0;$j<$nbligne;$j++){
echo '</tr><tr>';
$liste = mysql_fetch_array($res);
extract($liste);
for($i=0;$i<$nbchamp;$i++){
$nomchamp = mysql_field_name($res,$i);
echo '<td>'.$liste[$nomchamp].'</td>';
}}
echo '</tr>';


Je suis pas encore un informaticien dans l'âme alors mon code est peut être pas super propre mais ca marche
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Tout ce dont tu as besoin est dans information_schema. Not sure if hacking or re-inventing a very bad PhpMyAdmin...
Messages postés
39
Date d'inscription
lundi 26 mars 2012
Statut
Membre
Dernière intervention
8 février 2013

Re,

Ca ne m'aide absolument pas. je crois qu'on ne s'est pas compris.

En gros je voudrais faire une page html qui m'affiche une table, qui est inconnue (nombre de colonne, nom des champs etc...) dans un tableau.

Je ne peux donc pas utiliser cette méthode :

 while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td>'.$row["nom"].'</td>';
        echo '<td>'.$row["prenom"].'</td>';
      echo '<td>'.$row["adresse"].'</td>';
        echo '<td>'.$row["cp"].'</td>';
      echo '<td>'.$row["ville"].'</td>';
      echo '</tr>'."\n";
    }
    echo '</table>'."\n";


Car je ne connais pas le nombre de colonnes ni leur des champs (nom, prenom, adresse, cp, ville)

En espérant avoir été plus clair,

merci
Messages postés
39
Date d'inscription
lundi 26 mars 2012
Statut
Membre
Dernière intervention
8 février 2013

*Car je ne connais pas le nombre de colonnes ni leur nom (nom, prenom, adresse, cp, ville)

En espérant avoir été plus clair,

merci
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
Bonjour,

Regarde du coté de mysql_field_len et des autres méthodes mysql.
Je n'est pas regarder, mais je pense que PDO doit avoir un équivalent.

http://www.php.net/manual/fr/function.mysql-field-len.php



Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
Bonjour,

Je reprend : c'est mysql_num_fields qu'il faut voir.

http://www.php.net/manual/fr/function.mysql-num-fields.php

mysql_fetch_field <- te donnera les infos du champs
mysql_field_len <- te donnera la taille de la donnée.

Etc...


Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
Messages postés
39
Date d'inscription
lundi 26 mars 2012
Statut
Membre
Dernière intervention
8 février 2013

re,

alors c'est exactement ce que j'ai commencé par faire et ca marche pour les titres des colonnes :

$res = mysql_query('select * from infofichier');
$nbligne = mysql_num_rows($res);

$nbchamp = mysql_num_fields($res);
echo '<table border="5"><tr bgcolor=#68DECF >';

for($i=0;$i<$nbchamp;$i++){
$nomchamp = mysql_field_name($res,$i);
echo '<th>'.$nomchamp.'</th>';
}

echo '</tr><tr>';


Le probleme (sinon c'est pas marrant) c'est que je dois rappeler les noms des colonnes pour afficher leur contenues et la ...
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
Bonjour,

Il suffit de "ranger" tes noms dans un array.
$res =  mysql_query('select * from infofichier');
$nbligne = mysql_num_rows($res);

$nbchamp = mysql_num_fields($res);
echo '';

for($i=0;$i<$nbchamp;$i++){
$nomchamp[$i] = mysql_field_name($res,$i);
echo ' '.$nomchamp[$i].'  |';
}

echo '----
';


En dehors de ta boucle, tu as donc $nomchamp qui contient la liste des champ de ta table.$

while($row  = mysql_fetch_array($result)) {
echo '----
';
foreach($nomchamp as $nomlu) {
echo ''.$row[$nomlu].', ';
}
echo ''.\"\n\";
}
    echo '
'."\n";


C'est fait de tête et non tester, mais le principe reste le même.

Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
Messages postés
39
Date d'inscription
lundi 26 mars 2012
Statut
Membre
Dernière intervention
8 février 2013

re,

alors cela fonctionne mais voila ce que j'optiens :

Nom Prenom Civilite Age
$Nom $Prenom $Civilite $Age
$Nom $Prenom $Civilite $Age
etc ...


pas besoin de dire que ce n'est pas ce que je veux
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
Ah ben je m'en doutais bien que ça irais pas du premier coup en le faisant de tête ...

Mais déjà ça approche.

$fields=mysql_num_fields($result);

while($row = mysql_fetch_array($result)) {
        echo '<tr>';
          for ($f=0; $f < $fields; $f++) {
              echo "<td>$row[$f]</td>"; 
          }
       echo '</tr>'."\n";
    }
echo '</table>'."\n";


Si tu essaye ça, tu obtient quoi ??

Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.