[php/mysql] Afficher les noms des tables [Résolu/Fermé]

Signaler
Messages postés
597
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
-
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
-
Salut,
J'ai une base de données dans laquelle je ne connais pas d'avance le nom de certaines tables (il s'agit de thèmes d'un jeu qu'un admin peut modifier, ajouter...).

Exemples de noms de tables :
theme_classic
theme_geek
theme_chaipakoi

Les utilisateurs doivent pouvoir choisir le thème avec un select.
Comment je peux faire, en php, pour avoir une variable dans une boucle qui contient le nom de chaque table à chaque passage dans la boucle ?

J'ai pensé faire ça :
$sql="show tables";
$req=mysql_query($sql) or die("erreur!");
while ($result=mysql_fetch_array($req)){

}


Mais je sais pas quoi mettre dans le while pour récupérer le nom de ma table.
Je sais même pas si cette requête peut marcher.

Merci de bien vouloir m'éclairer !

EDIT :
Pensez-vous que je dois poser la question sur le forum programmation ?

3 réponses

Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
184
Salut,

var_dump($result)
ou juste
print_r($result)
.
SHOW TABLES te renvoie une ligne par table, tu auras donc un tableau à un élément à chaque fois. Tu peux faire des bidouillages sympas à base de array_merge ou truc dans le genre. Fais juste gaffe à l'index non numérique "Tables_in_machin", il est écrasé à chaque passage, tu ne dois donc utiliser que les numéros.


Par contre si tu penses que ton post est mieux placé ailleurs c'est certainement en rubrique « base de données  » ;)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
597
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
83
Merci de ta réponse, je n'ai pas exactement utilisé de var_dump ni de print_r (c'est la première fois que j'essaie de les utiliser et ça n'a pas marché).

Par contre le fait que tu m'ais dit que le SHOW TABLES renvoit une ligne par table m'a mis sur la voie : au début je cherchais avec les array_merge, j'ai compris le principe et le fonctionnement mais ça m'a paru un p'tit peu compliqué...

Ensuite, vu que tu m'as dit qu'il n'y a qu'un seul élément à chaque fois, je me suis dit que ce n'était pas la peine d'utiliser un mysql_fetch_array, je me suis orienté vers un mysql_fetch_row.
Et là, miracle ! Ca marche !!

Donc voilà mon bout de code qui permet d'afficher toutes les tables de la base courante :

$sql="show tables;";
$result = mysql_query($sql);
while ($ligne = mysql_fetch_row($result)){
     	echo($ligne[0]),"<br />";
}


Il ne me reste plus qu'à traiter $ligne[0] pour voir si elle contient le nom d'un thème (ça je sais faire, étant donné que tous les noms commencent pareil).

Un grand merci à toi Groarh pour m'avoir mis sur la voie !

PS : En effet j'aurais mieux fait de poster dans la rubrique "Bases de données". Je sais pas pourquoi je ne l'ai jamais remarquée auparavant.
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
184
Content d'avoir pu t'aider, en plus je ne connaissais pas mysql_fetch_row ;)