Sélection sur toutes les tables d'une bdd.
Skalv
-
Skalv -
Skalv -
Bonjour,
je réalise pour mon entreprise un bon de commande en php.
Je sauvegarde chacun de ces bon dans ma bdd, un bon par table.
C'est à dire : à chaque validation de bon, une numéro est incrémenté et celui-ci devient le nom de ma table (une table contient le nom de l'émetteur, sont service, la liste des produit commandé le montant ect ..)
j'aimerais mettre en place une "gestion des archives" où l'on peut rechercher la liste des bons de commandes par fournisseur ou par produit par exemple.
Le problème est que je ne trouve pas la requête adéquate, c'elle qui me permettrait de rechercher dans toute ma base, qu'elle table contient le champ fournisseur avec la donnée "fnac" par exemple ?
en gros un : SELECT * FROM * WHERE emetteur=jean eymare;
j'espère avoir été clair :)
Merci, Bonne journée.
je réalise pour mon entreprise un bon de commande en php.
Je sauvegarde chacun de ces bon dans ma bdd, un bon par table.
C'est à dire : à chaque validation de bon, une numéro est incrémenté et celui-ci devient le nom de ma table (une table contient le nom de l'émetteur, sont service, la liste des produit commandé le montant ect ..)
j'aimerais mettre en place une "gestion des archives" où l'on peut rechercher la liste des bons de commandes par fournisseur ou par produit par exemple.
Le problème est que je ne trouve pas la requête adéquate, c'elle qui me permettrait de rechercher dans toute ma base, qu'elle table contient le champ fournisseur avec la donnée "fnac" par exemple ?
en gros un : SELECT * FROM * WHERE emetteur=jean eymare;
j'espère avoir été clair :)
Merci, Bonne journée.
A voir également:
- Sélection sur toutes les tables d'une bdd.
- Comment faire une table des matières sur word - Guide
- Tables ascii - Guide
- Outil sélection illustrator ne fonctionne pas ✓ - Forum Illustrator
- Comment faire une table des annexes sur word ✓ - Forum Word
- L'indice n'appartient pas à la sélection vba ✓ - Forum VB / VBA
4 réponses
Hum ça doit être un joyeux bordel ta BDD, je ne voit pas pourquoi tu as besoin de créer une table par bon... Soit.
Dans ce cas, il faudrait utiliser une fonction qui appelle toutes les tables, qui les classe dans un tableau, créer une boucle pour rechercher dans chaque table si la colonne emetteur contient 'jean eymare'... Fin bref, sa prendrais un sacré bout de temps...
Dit moi si tu restes sur cette idée, je pourrais quand même t'aider.
Dans ce cas, il faudrait utiliser une fonction qui appelle toutes les tables, qui les classe dans un tableau, créer une boucle pour rechercher dans chaque table si la colonne emetteur contient 'jean eymare'... Fin bref, sa prendrais un sacré bout de temps...
Dit moi si tu restes sur cette idée, je pourrais quand même t'aider.
C'est aussi mon avis, ta base est ingérable.. Pourquoi ne pas tout simplement utiliser deux ou trois tables liées par un id ?
Merci de vos réponses.
Je sais ma base est énorme, mais le projet a évoluer au fil du temps et c'est devenus un petit merdier.
j'ai trouvé une solution :)
je commence par un SHOW TABLE qui me donne un listing de toute mes tables, donc de tout me numéro de commande. pour chaque résultat je lance une boucle qui vient vérifier si la table contient la donnée recherché.
Quand j'explique comme ca je me ré-embrouille.
Voici le code (peut être plus explicite, ou pas ....)
J'ai aussi eu un autre problème, la variable $table me retournait un nom de table du style " '50000060' " et ensuite dans la requête les apostrophes ne passait pas (nom de table inconnus), c'est pour cela que je prend une seconde variable contenant juste le numéro.
Je dois présenter le programme demain, ceci fonctionne (par miracle oui !) mais je voudrais le "simplifier" par la suite donc je reste à votre écoute ;)
Bonne journée.
Je sais ma base est énorme, mais le projet a évoluer au fil du temps et c'est devenus un petit merdier.
j'ai trouvé une solution :)
je commence par un SHOW TABLE qui me donne un listing de toute mes tables, donc de tout me numéro de commande. pour chaque résultat je lance une boucle qui vient vérifier si la table contient la donnée recherché.
Quand j'explique comme ca je me ré-embrouille.
Voici le code (peut être plus explicite, ou pas ....)
$codetva=$_POST['codetva']; $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=###;dbname=###', '###', '####', $pdo_options); $query='SHOW TABLES'; $query=$bdd->query($query); $res=$query->fetchALL(PDO::FETCH_ASSOC); while(list($key,$array)=each($res)) { foreach($array as $table) { $numcommande=$table[1].$table[2].$table[3].$table[4].$table[5].$table[6].$table[7].$table[8]; $reponse = $bdd->prepare('SELECT * FROM 'commande'.':table' WHERE codetva=:codetva'); $reponse -> execute(array('table' => $numcommande, 'codetva' => $codetva)); while ($donnees = $reponse->fetch()) { <tr> <td Align=center width=50px><?php echo $donnees['ref']; ?></td> <td Align=center width=400px><?php echo $donnees['desi']; ?></td> <td Align=center width=50px><?php echo $donnees['quant']; ?></td> <td Align=center width=80px><?php echo $donnees['puht']; ?></td> <td Align=center width=80px><?php echo $donnees['emetteur']; ?></td> <td Align=center width=80px><?php echo $donnees['service']; ?></td> <td Align=center width=80px><?php echo $donnees['fourni']; ?></td> <td Align=center width=80px><?php echo $donnees['observation']; ?></td> <td Align=center width=80px><?php echo $donnees['codetva']; ?></td> </tr> } }
J'ai aussi eu un autre problème, la variable $table me retournait un nom de table du style " '50000060' " et ensuite dans la requête les apostrophes ne passait pas (nom de table inconnus), c'est pour cela que je prend une seconde variable contenant juste le numéro.
Je dois présenter le programme demain, ceci fonctionne (par miracle oui !) mais je voudrais le "simplifier" par la suite donc je reste à votre écoute ;)
Bonne journée.