[php/mysql] Afficher les noms des tables

Résolu/Fermé
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 1 oct. 2009 à 21:28
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 - 5 oct. 2009 à 18:49
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 ?

A voir également:

3 réponses

Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
1 oct. 2009 à 21:53
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
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
1 oct. 2009 à 22:56
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.
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
5 oct. 2009 à 18:49
Content d'avoir pu t'aider, en plus je ne connaissais pas mysql_fetch_row ;)
0