Renseignement ordre SQL

Résolu
zatox Messages postés 640 Date d'inscription   Statut Membre Dernière intervention   -  
zatox Messages postés 640 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, sur le site http://www.plongee-sous-glace.fr/ j'utilise une base sql qui contient 10 tables pour chaque langue. Toutes les tables ont strictement la même structure. Je voudrais savoir s'il est possible de passer dans les ordres sql le nom de la table accédée en paramètre de telle façon que je puisse écrire un seul ordre qui serait appelé par un include chaque fois que j'en ai besoin, le nom de la table serait passé en paramètre, ceci afin de n'avoir pour un seul ordre qu'une seule modif à faire dans le cas d'évolution des tables ? En effet, actuellement, quand je dois faire évoluer mes tables (rajout d'une colonne par exemple, pour un ordre je dois faire 10 modifs. Exemple:
$retour = mysql_query('SELECT chapitre, contenu, groupe, nom_g, position, nom_p, http, videoweb, videoflv, diaporama, nbespace, nbsautligne FROM news_piauplongee_fr ORDER BY groupe DESC, position ASC LIMIT 0, 100');


$retour = mysql_query('SELECT chapitre, contenu, groupe, nom_g, position, nom_p, http, videoweb, videoflv, diaporama, nbespace, nbsautligne FROM centre_piauplongee_fr ORDER BY groupe DESC, position ASC LIMIT 0, 100');


Ces 2 ordres sont identiques, il n'y a que le nom de la table qui change, avec une variable comme nom de table, je n'aurait besoin que d'un seul ordre précédé de l'alimentation de la table à laquelle je veux accéder.

Je ne sais pas si c'est possible.
Merci pour vos réponses.

3 réponses

bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
Salut!
Oui tu peux définir ta table comme variable et appeler une seule fois!
Essai ceci(je n'ai aps testé):
$table=nom de ta table;
select * from $table where.... ;
0
zatox Messages postés 640 Date d'inscription   Statut Membre Dernière intervention   66
 
Bonjour, merci pour ta réponse, mais ça, j'avais déjà essayé et ça ne marche pas. Je viens de refaire un test pour m'en assurer et je te confirme que ça ne marche pas, on n'est pas dans du php mais dans un ordre sql donc en écrivant: select * from $table where.... ; en fait tu sélectionne la table qui s'appelle $table. Peut-être y a-t-il une syntaxe particulière, mais comme ça ce n'est pas bon.
Si quelqu'un a une idée, merci pour vos réponses. Je continue à chercher, si je trouve je poste le résultat.
0
zatox Messages postés 640 Date d'inscription   Statut Membre Dernière intervention   66
 
Bonjour, j'ai eu la réponse dans le forum bases de données, pour ceux que ça interresse la voici:
C'était mes simples quotes dans l'ordre SELECT, avec les guillemets c'est bon .
Donc solution: l'ordre SELECT doit être entouré par des guillemets et pas par des quotes simples, comme ça


$table = news_piauplongee_fr;
$retour = mysql_query("SELECT chapitre, contenu, groupe, nom_g, position, nom_p, http, videoweb, videoflv, diaporama, nbespace, nbsautligne FROM $table ORDER BY groupe DESC, position ASC LIMIT 0, 100");

Voilà merci à tous.
0