enregistrer la valeur d'une variable

Eléphant du PHP | 119 Messages

20 sept. 2011, 14:25

bonjour, j'ai une question plutôt complexe a expliquer donc je vais faire simple,

je créer une table grâce a une variable $cratable.

ex :
CREATE TABLE '.$cratable.' AS SELECT * FROM sites WHERE 1 = 0
cette variable est en faite un ensemble de lettre générées donc ca pourrais être "URTZAN" comme "JHDSDN"

donc ma table se crées avec ce résultât , maintenant je veut interroger cette table ???

la variable ne représente rien vu qu'elle est la uniquement quand une table se crée et génère un nom.

si je veut interroger une table normalement je fais :
$rqt = "select * from sites where numero_projet='".$numero_projet."'";
mais dans mon cas ca resemblerais plus a :
$rqt = "select * from '.$cratable.' where numero_projet='".$numero_projet."'";
mais la je vais avoir une jolie erreur " UNDVARIABLE $cratable indx:c" ce qui est normale car elle n’existe pas, donc
ce que je voudrais c'est savoir comment enregistrer le nom de la table pour pouvoir l'interroger après ??

MERCI

ViPHP
ViPHP | 2577 Messages

20 sept. 2011, 14:54

$rqt = "select * from $cratable where numero_projet= '$numero_projet'";
ou
$rqt = "select * from ".$cratable." where numero_projet='".$numero_projet."'";
non ?

Eléphant du PHP | 119 Messages

20 sept. 2011, 15:45

et bien non car $cratable est une valeur assigné qu'une seul fois puisque en fais elle est generée a chaque création de table.

ex : je genere une nom de table : TAPLEM celui ci est donc une variable $cratable

donc en gros ca me fais $cratable=$_POST['cratable']

donc je crée ma table avec ce nom, mais si je veux recréer une table ma variable va aussi changer car je vais générer un autre nom

ex: 1 nom de table generé TAPLEM qui est égal a ma variable $cratable donc qui va me créer une table avec comme nom TAPLEM.

je veux créer une autre table

ex: 2 nom de table generé LOUPAS qui est égal a ma variable $scratable donc qui va me créer une table avec comme nom LOUPAS.

donc on s’aperçoit que la variable $scratable ne vaut rien car elle change de valeur a chaque fois.

donc maintenant le soucis est que je voudrais interroger la table TAPLEM donc la pas de soucis j'ai le nom, mais imaginons que je n'est pas ce nom, je voudrai lister toutes les
tables de la bdd voxo appartenant au membre ayant id n°16 sachant que je suis déjà sous sessions avec id 16.

Mammouth du PHP | 672 Messages

20 sept. 2011, 15:47

donc maintenant le soucis est que je voudrais interroger la table TAPLEM donc la pas de soucis j'ai le nom, mais imaginons que je n'est pas ce nom, je voudrai lister toutes les
tables de la bdd voxo appartenant au membre ayant id n°16 sachant que je suis déjà sous sessions avec id 16.
Il "suffit" de stocker dans la session le nom des tables créées :mrgreen:

Et sinon, par curiosité, pourquoi veux-tu créer des tables temporaires ?
Parce que là, j'ai du mal à voir l'intérêt d'un truc comme ça...

Eléphanteau du PHP | 10 Messages

20 sept. 2011, 15:50

Oui par les sessions ou par les cookies pour eviter les sessions?

ViPHP
ViPHP | 2577 Messages

20 sept. 2011, 16:01

Le plus simple me semble être de nommer les tables avec l'id genre XYZ_16.

Tu peux ensuite les récupérer avec la commande SHOW [OPEN] TABLES [FROM db_name] [LIKE 'pattern']

Eléphant du PHP | 119 Messages

20 sept. 2011, 16:11

c'est un projet assez complexe, mais j'aide un amis et ce sera assez compliqué d'expliquer en detail.

en fait la que je fais c'est au moment de la création de la table j'enregistre en meme temps le nom de cette table dans le champs "nom_table" de la table membres et j'affiche
les nom des table crées ensuite le membre a juste a mettre le nom de la table dans son formulaire de projet pour envoyer son nouveau projet sur cette table.

en faite le but est d'avoir une table par membre, et le membre place ses projets dans sa table.

comme ca je fais un page ou le membre retrouve le nom de toutes ses tables crées mais je trouve ca plutot nul, ce que j'aimerais en fait c'est le membre crée sa table, il créer son projet donc
il a une table j'aimerais en fait créer une fiche projet avec le nom de la table la date de création le nom du projet et la stocker de facon a ce que le membre accede
a un page projets ou il y a la liste des fiches crées.

@Mazarini les table crée on deja un id donc est il possible de faire une requete dans le style :

voir le nom des tables appartenant a id16 dans la base voxo.

comme ca chaque membre vu qu'il est connecté peu voir toutes les tables qu'il a crée

Mammouth du PHP | 672 Messages

20 sept. 2011, 16:18

c'est un projet assez complexe, mais j'aide un amis et ce sera assez compliqué d'expliquer en detail.

en fait la que je fais c'est au moment de la création de la table j'enregistre en meme temps le nom de cette table dans le champs "nom_table" de la table membres
(...)
@Mazarini les table crée on deja un id donc est il possible de faire une requete dans le style :

voir le nom des tables appartenant a id16 dans la base voxo.

comme ca chaque membre vu qu'il est connecté peu voir toutes les tables qu'il a crée
Fais une requête sur la table Membres pour récupérer les "nom_table" correspondant au membre. :)



Et sinon, utilise la même table pour tout le monde :
Projets (id_membre, id_projet, description, etc.)
Ca respectera la normalisation au moins - donc tu auras vraiment une BDD-Relationnelle, donc tu pourras utiliser le SQL simplement :mrgreen:

Je ne vois pas trop l'intérêt de créer une table par membre, en fait ?