AFFICHAGE D'UNE TABLE MYSQL DANS UN TABLEAU HTM AVEC LES TITRES DES CHAMPS

cs_plopman Messages postés 67 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 13 septembre 2006 - 29 sept. 2004 à 18:36
nounou057 Messages postés 1 Date d'inscription vendredi 19 mai 2017 Statut Membre Dernière intervention 19 mai 2017 - 19 mai 2017 à 12:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26469-affichage-d-une-table-mysql-dans-un-tableau-htm-avec-les-titres-des-champs

nounou057 Messages postés 1 Date d'inscription vendredi 19 mai 2017 Statut Membre Dernière intervention 19 mai 2017
19 mai 2017 à 12:21
comment je paramettrai ("./Commun/connexion.php")
hamadi003 Messages postés 1 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 8 mai 2009
8 mai 2009 à 17:35
IL Y A PAS UN CODE SIMPLE QUI afficher Mysql TABLE dans un TABLEAU SUR UNE page web
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
19 févr. 2008 à 17:08
salut,
il faut que tu remplisse le fichier connexion.php avec les paramètres de ta bdd ...
Cko4 Messages postés 2 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 19 février 2008
19 févr. 2008 à 16:54
Bonjour,

Étant dans le très débutant en PHP, j'ai une question bête pour vous:

Comment utilise t'on ce code. J'ai séparré les pages afin de réflèter les indications du script plus haut mais j'ai toujours un problème de connexion à la db. Je ne vois pas l'endroit ou indiqué le nom.

Merci et désolé pour cette question.

Cko4
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
25 mai 2007 à 18:14
Moi dans mes pages je n'affichais pas les champs de ID de mes tables que j'ecrivais : ID_NOMCHAMP donc des que ca commence par ID_ je n'affichais pas la colonne (ca peut donner des idées)

Sinon si tu veut avoir des nom de colonnes (en affichage) originaux tu peut faire une correspondance dans une table annexe structuré comme suit :
NOMCHAMP NOMCOLONNE_FR NOMCOLONNE_ENG
comme ca tu peut meme gerer plusieurs langue si il le faut!

Sinon pour les # devant chaque ligne j'en ai aucunne idée ...
Par contre si tu as ultraedit il y a une option "mode colonne" qui te permet de selectionner verticalement et donc d'eliminer chaque debut de ligne tres facilement!

sinon : à la ligne 4, le terme $adresse est assez mal approprié car tu utlises partout ailleurs $host ...
# $choix = new $SQL($identifiant,$password,$Adresse,$NomTable);
# $choix2 = new $SQL($identifiant,$password,$Adresse,$NomTable);

J'utilise $host dans mes class mais a l'instanciation de ma classe j'appelle bien $adresse

Et pour $table c'est bien le nom de ma table que je veut!
bbeenn007 Messages postés 33 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 27 mars 2007
25 mai 2007 à 17:56
Ok, c'est sympa,

En tous cas je te remercie, car ton code m'est utile.
Je transforme un fichier csv en table myqsl, et ne sachant pas forcement quel est le contenu de la table rempli, et bien je l'affiche.
j'aurais pu le faire tout seul mais c'est toujours bon de s'inspirer des réflexions de chacun

je vais juste rajouter à ton script un peu de css et un tableau de nom de champs à ne pas afficher.
Comme ça lors de l'affichage, je regarde si le nom de champs est ds mon mini tableau en fonction j'affiche ou non.

Sinon, puisque tu as l'air d'etre assez receptif,
petite question:
comment fait on pour copier les codes postés sans avoir les # devant chaque ligne dans le presse papier ... ?

ciao
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
25 mai 2007 à 17:32
c'est vrai ce que tu dit les commentaires ne sont pas vraiment adapter seulement ce n'est pas une confusion vu que ma table etait une table qui stockait le nom des tables (j'espere etre clair)

cependant pour etre cohérent avec l'exmple je vais quand meme modifier mes commentaires la lisibilités du code doit etre une priorité!!!!
bbeenn007 Messages postés 33 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 27 mars 2007
25 mai 2007 à 16:27
Salut,
Merci pour le script c'est assez sympa,
par contre, il y a quelques confusions avec les termes (tables, base, champs ...) qui ne risquent pas d'aider les newbies ...
par exemple ligne 122: ce n'est pas liste des tables, mais la listes des champs de la table (ce qui n'a rien à voir ...) ...
à la ligne 5, dans la variables $NomTable n'est pas approprié car il faut mettre ici le nom de la base de données que l'on veut attaquer ...
à la ligne 4, le terme $adresse est assez mal approprié car tu utlises partout ailleurs $host ...
(...)
ce sont des détails mais bon ... ça valait le coup d'être noté
bon en m temps ce code commence à dater ... mais il est toujours bon d'être préci ...

Je compte utiliser ce script en le customisant pour masquer certains champs de bases (id par exemple) et en faisant des requetes "select * from $table"

aller merci
et a+
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
30 sept. 2004 à 11:39
resalut

jai adapter mon code pour qu'il tienne encompte toute les requete mais apperemment j'arrive pas à modifier.... byzarre....

enfin bref jenvoie la sauce

<table width="100%" border="1" cellspacing="1" cellpadding="1" name="head">
<tr>
<?php
/*--------------------declaration--------------------*/
// Inclusion de la classe mère
include ("./Commun/SGBD/SGBD.class.php");
/* Initialisation de la variable du SGBD correspondant */
$SQL = "MySQL";
// Inclusion de la classe fille du SGBD correspondant
include ("./Commun/SGBD/".$SQL.".SGBD.class.php");
//Inclusion des paramêtres de connexion
include ("./Commun/connexion.php");
//initialisation des objets
$choix = new $SQL($identifiant,$password,$Adresse,$NomTable);
$choix2 = new $SQL($identifiant,$password,$Adresse,$NomTable);

$requete = "select * from `$nom_table` where $condition";
/*---------------------Fin de déclaration----------------------*/
/*---------------------Debut script-----------------------------*/
//connexion
$choix->connect();
//on récupère les noms des tables
$choix->requete($requete);
$choix->deconnect();
$i = 0;
while($row = mysql_fetch_field($choix->requete)){
//on affiche le nom des tables
$i++;
echo "<td>$row->name</td>";
$pipo[$i] = "$row->name";
}
echo "</tr>";
//on passe à l'affichage des données en elle meme
//on commence la boucle pour afficher tout
while($row2 = mysql_fetch_assoc($choix->requete)){
echo "<tr>";
//on affiche le résultat de la requete en respectant l'ordre
foreach($pipo as $pipo2){
echo "<td>$row2[$pipo2] </td>";
}
echo "</tr>";
}
?>

ca fait plus simple que ton code mais ca tien pas en compte tout ce qui est insert update (c pas un requeteur que je cherche a faire juste un bout de script pour simplifier la vie de tout le monde)

donc maintenant c bon on voie tout c propre c beau .... c pas mis à jour snif snif
++
cs_fredst Messages postés 3 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 30 septembre 2004
30 sept. 2004 à 11:26
Merci pour une 1ère fois sur le forum
De plus, je me suis planté, je n'ai que 30 jours en PHP et ce forum m'a d'ailleurs bien aidé dans certaines recherches.
Avec l'utilisation de classe, cela serait vraiment amélioré. Je n'ai pas beaucoup de temps pour effectier un livrable sur le développement de l'application intranet sur laquelle je travaille et qui contient ce requêteur. Quand le livrable sera fini, je pourrais me pencher pour améliorer ce requêteur. Je rajouterais d'ailleurs deux zones de liste afin de visualiser les tables et les champs associés pour l'aide à la constitution des requêtes. Peu d'utilisateurs auront accés à cela.Et surtout j'attends avec impatience les procédures stockées sous MySQL qui vont apporter un confort certain.

Fred
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
30 sept. 2004 à 10:01
Salut
Pour n'importe quel requete, modification accepter!!!!
ya plus simple que ce que tu propose mais c une tres bonne idée j'avais pas penser à ca j'en avais pas besoin.
Donc ca roule.

++
cs_fredst Messages postés 3 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 30 septembre 2004
30 sept. 2004 à 08:58
Je livre quand même la totalité de la page :

Dans le cas d'une requête update, insert et delete, il faudrait rajouter un test pour savoir s'il s'agit d'une requete INSERT, UPDATE, DELETE ou toutes autres types de commandes ( SELECT et commandes MySQL). Pour ma part, dans la partie de test du clic de lancement de la requête, je vérifie la requête saisie ainsi :

if ( isset ($HTTP_POST_VARS["lancer"]) ) {
$requete = $HTTP_POST_VARS["requete"];
$type_requete = split( " ", $requete);
switch ( strtolower( $type_requete[0]) ) {
case "delete" :
case "insert" :
case "update" : $type_requete = 1;
break;
default : $type_requete = 0;
break;
}
} // FIN DE if ( isset ($HTTP_POST_VARS["lancer"]) )

Dans ma pârtie programme, il suffit après le test
if ( mysql_error()) {
}
else{

if ( $type_requete == 0) {
// PARTIE SELECT et COMMANDES MySQL
}
else{
// PARTIE INSERT, UPDATE, DELETE
echo "\";
echo \"----
\";
echo \"";
echo "";
echo "La requête ".$type_requete." a
affectée ".mysql_affected_rows()." enregistrement(s)";
echo "";
echo ", \";
echo \"\";
echo "
<!-- FIN TABLEAU AFFICHAGE DU RESULTAT -->";
} // FIN PARTIE INSERT, UPDATE, DELETE

} // FIN DE if ( mysql_error()) partie ELSE
?>

On peux faire mieux...

Fred
cs_fredst Messages postés 3 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 30 septembre 2004
30 sept. 2004 à 08:39
Cela ne fonctionne que pour un select * from nom_table.
Pour ma part, j'ai développé une page requêteur qui permet de lancer toutes les requêtes souhaitées. Je ne livre ici que la partie SELECT. La page complète fonctionne aussi avec les INSERT, UPDATE, DELETE ainsi que toutes commandes appartenant à MySQL (ces dernières fonctionne comme pour les commandes SELECT). Restant un débutant ( 3 mois) sous PHP et MySQL, je n'ai pas encore créé de classe. Voici le code qui n'est pas vraiment parfait.

La requête est saisie dans un TEXTAREA.

<?
if ( $HTTP_POST_VARS["requete"] != "") {

echo "<!-- TABLEAU AFFICHAGE DU RESULTAT -->";
$result = mysql_query( stripslashes( $requete) );
echo "
";
echo "
";
if ( mysql_error()) {
echo "\";
echo \"----
";
echo "ERREUR";
echo ", \";
echo \"----
";
echo "".mysql_error()."";
echo ", \";
echo "
<!-- FIN TABLEAU AFFICHAGE DU RESULTAT -->";
$nbLigne = 0;
}
else{
$nb_colonne = mysql_num_fields( $result);
$nbLigne = mysql_num_rows( $result);
$cptColonne = 0;

echo "\";
echo \"----
\";
// Ecriture des en-têtes des colonnes
while ( $cptColonne != mysql_num_fields($result))
{
echo \"".mysql_field_name($result, $cptColonne).", \";
$cptColonne++;
} // FIN DE while ( $cptColonne != $nb_colonne)
echo \"\";

// Lecture de chaque ligne du RECORDSET
while( $row = mysql_fetch_row($result))
{
echo \"----
\";
$cptColonne = 0;
while ( $cptColonne != mysql_num_fields($result))
{
if ( $row[$cptColonne]) {
echo \"";
echo $row[$cptColonne];
echo ", \";
}
else{
echo \", \";
}
$cptColonne++;
}
echo \"\";
} // FIN DU while( $row = mysql_fetch_row($result))

if ( mysql_num_rows($result) == 0 ) {
echo \"----
\";
echo \"";
echo "AUCUNE LIGNE RETOURNEE";
echo ", \";
echo \"\";
} // FIN DE if ( mysql_num_rows($result) == 0 )
echo "
<!-- FIN TABLEAU AFFICHAGE DU RESULTAT -->";
} // FIN DE if ( mysql_error())
} // FIN DE if ( $HTTP_POST_VARS["requete"] != "")
?>


Dans le cas d'un INSERT, UPDATE, DELETE, il suffit de tester la valeur de mysql_affected_rows().
Pour rappel, cela fonctionne avec des requêtes SELECT et les commandes MySQL comme DESCRIBE...

Les commentaires sont attendus et espérés

Fred
cs_plopman Messages postés 67 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 13 septembre 2006
29 sept. 2004 à 18:36
J'aime bien comme code :o) Ca a l'air de bien marcher, je vois pas de bug à priori ;)
Plopman
8/10
Rejoignez-nous