récupérer les nom des champs avec pdo()

récupérer les nom des champs avec pdo() - PHP - Programmation

Marsh Posté le 01-12-2008 à 18:16:12    

Bonjour,
Je veux fabriquer mes requêtes mais j'ai besoin de récuperer les nom des champs de ma table.
Je sais que c'est possible aves mysql.
Merci


Message édité par xaviou10 le 01-12-2008 à 20:44:12

---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 01-12-2008 à 18:16:12   

Reply

Marsh Posté le 01-12-2008 à 18:46:34    

[:rtfm]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 01-12-2008 à 19:46:26    

RTFM
Read The Fucking Manual == lit donc le manuel ton ami
 
Je veux récuperer les nom de champ d'un table, avec pdo ou avec une requête j'ai za


---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 01-12-2008 à 19:46:27    

RTFM
Read The Fucking Manual == lit donc le manuel ton ami
 
Je veux récuperer les nom de champ d'un table, avec pdo ou avec une requête j'ai zaper la syntaxe ?
 
Je vois pas se que fous le manouel dans ton RTFM...
 
PS: désolé pour le doublon !


Message édité par xaviou10 le 01-12-2008 à 19:48:52

---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 01-12-2008 à 19:59:48    

describe. Et je vois pas le rapport avec pdo.


Message édité par skeye le 01-12-2008 à 20:00:09

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-12-2008 à 20:14:07    


Espèce de bou... no, wait


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 01-12-2008 à 20:23:36    

C'est un forum d'entraide. On répond à des questions précises. Et si tu commençait par lire un tutoriel?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 01-12-2008 à 20:35:43    

ce que je veux c'est faire une fonction pour fabriquer cette requête que je n'arrete pas de faire et refaire.
je donne le même nom des champs que les variables.

Code :
  1. INSERT INTO categorie
  2.    (id , nomSociete, adresseSociete, codePostalSociete, villeSociete, paysSociete,
  3.     tel_societe, fax_societe, numero_siret_societe, rcs_societe, code_ape_societe,
  4.     tva_intracommunautaire_societe, email_societe, site_societe)
  5.    VALUES
  6.    (NULL , '$nomSociete', '$adresseSociete', '$codePostalSociete', '$villeSociete', '$paysSociete', '$emailSociete'
  7.    , '$telSociete', '$faxSociete', '$numeroSiretSociete', '$rcsSociete', '$codeApeSociete', '$tvaIntraCommunautaireSociete,
  8.     '$deviseSociete');
  9.    ";


je l'avais déjà faite:

Code :
  1. // méthode
  2. public function getListeChamp($table)
  3. {
  4.  $this->sql="SHOW COLUMNS FROM $table";
  5.  //return $result;
  6.  $result=parent::select($this->sql);
  7.  foreach ($result as $field)
  8.   $champ[] = $field['Field'];
  9.  return $champ;
  10. }


et je fais:

Code :
  1. $test=$modelAdmin->getListeChamp('categorie');
  2. foreach ($test as $val) :
  3. echo 'INSERT INTO categorie '.$val.', ';
  4. endforeach;
  5. echo 'VALUES (NULL , ';
  6. foreach ($test as $val) :
  7. echo "'$_POST['".$val."''], ";
  8. endforeach;


donc dans ma boucle il faut que j'élimine la dernière virgule et j'aurra ma fonction?
PS: j'utilise la class dans ma signature.


Message édité par xaviou10 le 01-12-2008 à 20:39:49

---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 01-12-2008 à 21:00:20    

je vous met mon script au propre:

Code :
  1. $test=$modelAdmin->getListeChamp('categorie');
  2. echo 'INSERT INTO categorie (';
  3. foreach ($test as $val) :
  4.    echo ''.$val.', ';
  5. endforeach;
  6. echo ') VALUES (';
  7. foreach ($test as $val) :
  8.    if(is_int($val))
  9.       echo '$_POST[\''.$val.'\'], ';
  10.    else
  11.       echo '\'$_POST[\''.$val.'\']\', ';
  12. endforeach;
  13. echo ')';


ce qui donne bien ma requete avec la virgule de fin en trop:

Code :
  1. INSERT INTO categorie (id, nom, description, langue, dateCreation, dateModification, sousCategorie, motsCles, venteCategorie, iconeCategorie, ) VALUES ('$_POST['id']', '$_POST['nom']', '$_POST['description']', '$_POST['langue']', '$_POST['dateCreation']', '$_POST['dateModification']', '$_POST['sousCategorie']', '$_POST['motsCles']', '$_POST['venteCategorie']', '$_POST['iconeCategorie']',)


---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 01-12-2008 à 22:13:11    


J'aurais dû voter pour toi [:romf]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 01-12-2008 à 22:13:11   

Reply

Marsh Posté le 01-12-2008 à 22:45:06    

je ne sais pas de quoi tu parles mais arrête de troller s'il te plais.
Merci


---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 01-12-2008 à 22:48:35    

ma méthode fonctionne pas à cause de la récupération des variables de formulaire en $_POST

Code :
  1. // faire ue requete d'insertion dynamique
  2. public function getSqlInsert($table)
  3. {
  4.          $champs=$this->getListeChamp($table);
  5.          $sql='INSERT INTO '.$table.' (';
  6.          foreach ($champs as $val) :
  7.             if($val == 'id')
  8.                $sql.=$val;
  9.             else
  10.                $sql.=', '.$val;
  11.          endforeach;
  12.          $sql.= ') VALUES (';
  13.          foreach ($champs as $val) :
  14.             if($val == 'id')
  15.                $sql.='NULL';
  16.             else
  17.                $sql.=", '".$_POST[$val];
  18.          endforeach;
  19.          $sql.=');';
  20.          return $sql;
  21. }
 
Code :
  1. $test=$modelAdmin->getSqlInsert('categorie');
  2.    echo $test;


sa m'affiche :

Code :
  1. INSERT INTO categorie (id, nom, description, langue, dateCreation, dateModification, sousCategorie, motsCles, venteCategorie, iconeCategorie) VALUES (NULL, ', ', ', ', ', ', ', ', ');


Message édité par xaviou10 le 01-12-2008 à 22:50:23

---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 01-12-2008 à 22:58:15    

sa c'est comme la branlette, un plaisir dont personne ne peux se passer,  
ni femme ni homme...
Le monde est monde jusqu'a sa perte...


---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 01-12-2008 à 23:03:24    

bon je m ennuie un peu la
personne pour faire venir altherac ? [:parisbreizh]


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 02-12-2008 à 01:13:34    

Tou le monde sèche !


---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 02-12-2008 à 01:25:34    

sa ne fonctionne pas parce que les variables supers globals sont traité dans l'entète.
Je ne vois pas comment contourner cette difficulté !


---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 02-12-2008 à 01:27:32    

Est-ce que tu te rends compte que ta requête INSERT ne peut pas fonctionner?
 
(c'est pas qu'on sèche mais on s'ennuie, il est trivial ton problème)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 02-12-2008 à 03:45:33    

c'est pour ça que je post:

Code :
  1. // faire ue requete d'insertion dynamique
  2. public function getSqlInsert($table)
  3. {
  4.          $champs=$this->getListeChamp($table);
  5.          $sql='INSERT INTO '.$table.' (';
  6.          foreach ($champs as $val) :
  7.             if($val == 'id')
  8.                $sql.=$val;
  9.             else
  10.                $sql.=', '.$val;
  11.          endforeach;
  12.          $sql.= " ) VALUES (";
  13.          foreach ($_POST as $val) :
  14.             $sql.=", '".$val."'";
  15.          endforeach;
  16.          $sql.=');';
  17.          return $sql;
  18. }


dans mon post j'ai une virgule qui fait planter ma requête.

Code :
  1. INSERT INTO info_societe (id, nomSociete, adresseSociete, codePostalSociete, villeSociete, paysSociete, telSociete, faxSociete, numeroSiretSociete, rcsSociete, codeApeSociete, tvaIntraCommunautaireSociete, emailSociete, siteSociete, deviseSociete) VALUES (, '', 'ùùùùù', 'ùùùùù', 'ù', 'ùù', 'ù', 'ù', 'ù', 'ù', 'ù', 'ù', 'ù', 'ù', 'ù', 'ùù');


tout ce passe dans un back-office, à partir de formulaire...


---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 02-12-2008 à 09:48:42    

Et si tu mettais des quotes autour de tes valeurs?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 02-12-2008 à 10:15:16    

Ah ouais j'en étais toujours à regarder la première version de sa requête [:joce]
 
Pis bon faire une boucle sur $_POST, c'est pas très malin quand même :o
 
(pis cette syntaxe PHP pour le foreach que je ne connaissais pas et que je trouve totozifiante)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 02-12-2008 à 10:19:47    

  • Le titre parle de PDO mais on en voit nulle part.
  • La question initiale : "j'ai besoin de récuperer les nom des champs" mais les queries que tu proposes sont des INSERTs.


Et à part ça, je trolle? Tu pourrais d'abord un peu mieux cibler ce que tu veux/fais et afficher les résultats intermédiaires pour y voir plus clair...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 02-12-2008 à 10:21:35    

drasche a écrit :

(pis cette syntaxe PHP pour le foreach que je ne connaissais pas et que je trouve totozifiante)


C'est pas l'élection du nerd 2009 ici; d'ailleurs la présence d'un candidat dans cette cat est disqualifiante.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 02-12-2008 à 10:29:51    

sircam a écrit :


C'est pas l'élection du nerd 2009 ici; d'ailleurs la présence d'un candidat dans cette cat est disqualifiante.


Elle est virtuellement finie l'élection :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 02-12-2008 à 14:11:03    

Mon problème est résolu.
J'ai trouvé 7 façon de faire...
tout ce passe dans un back-office, donc pour les $_post il n'y a rien à dire.
D'autre part la syntaxe de mes boucles elle est utilisée par l'inventeur du php.
Qui considère inutile l'emploi d'un moteur de template puisque php en lui même un moteur de template.
je compte construire une classe pour générer un site à la volée à partir de formulaire de données arbitraires de l'utilisateur de ce back-office.
au cas par cas, cette façon d'insérer et modifiez les données est conviviale
pour l'internaute et permettra de lui construire une sorte de myspace personnaliser mais plus modulable.
C'est un projet.
Je vois que vous foutez de ma gueule.
Même si les lieux conviviales ne manquent pas.
Je post rarement, et sa me pousse pas à allez sur des forums.

Message cité 2 fois
Message édité par xaviou10 le 02-12-2008 à 14:18:56

---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 02-12-2008 à 14:24:32    

xaviou10 a écrit :

sa me pousse pas à allez sur des forums.


Ni à lire un bouquin de grammaire ou de conjugaison. :jap:
 
Et bien joué de ta part pour la convivialité :
 

  • Problème résolu mais aucune indication dans le sujet du topic;
  • Aucune indication de la solution trouvée qui pourrait servir à autrui.


Nickel :jap:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 02-12-2008 à 14:25:48    

xaviou10 a écrit :


tout ce passe dans un back-office, donc pour les $_post il n'y a rien à dire.


lolilol.
 

xaviou10 a écrit :


D'autre part la syntaxe de mes boucles elle est utilisée par l'inventeur du php.
Qui considère inutile l'emploi d'un moteur de template puisque php en lui même un moteur de template.


Si le code que tu as posté est un template je me bouffe une couille.
 

xaviou10 a écrit :

Je vois que vous foutez de ma gueule.


C'est ce qui arrive quand on raconte des conneries devant des gens qui connaissent mieux le sujet.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-12-2008 à 14:30:07    

il faut enlever la virgule du début.
donc je renomme la variable de la deuxième boucle.
Ce qui donne de tête:

Code :
  1. foreach ($_POST as $val) :
  2.             $sqlDonnees.=", '".$val."'";
  3.          endforeach;
  4.          $sqlDonnees=substr($sqlDonnees, 1);
  5.          $sql.=$sqlDonnees;
  6.          $sql.=');';


 
J'ai l'impression que vous avez un problème avec moi ?
Moi je m'en fou ont ne se connait pas et c'est mon deuxième post ici.
Je vous signale que vous ne m'avez servis à rien pour résoudre mon problème.
Alors niveau compétences tu devrais..., te calmer.


Message édité par xaviou10 le 02-12-2008 à 14:36:25

---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 02-12-2008 à 14:30:34    

skeye a écrit :


Si le code que tu as posté est un template je me bouffe une couille.
 


T'es sûr? [:petrus dei]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 02-12-2008 à 14:32:48    

drasche a écrit :


T'es sûr? [:petrus dei]


certain.
Cette syntaxe sert à utiliser les structures de contrôle de php tout en passant son temps à ouvrir/fermer les tags php pour afficher du html...là il s'en sert pour construire une requête sql...[:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-12-2008 à 14:45:15    

sa me permet de mieux voir mes boucles, c'est une habitude et tout aussi rapide d'après les benchs.


---------------
contribution open source http://www.phpclasses.org/browse/file/23687.html
Reply

Marsh Posté le 02-12-2008 à 15:48:59    

xaviou10 a écrit :

sa me permet de mieux voir mes boucles, c'est une habitude et tout aussi rapide d'après les benchs.


rapide ou pas, c'est laid.
Mais bon si ça te fait plaisir...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-12-2008 à 15:49:57    

Et donc personne ne va lui parler d'injection SQL? [:petrus75]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 02-12-2008 à 15:51:53    

drasche a écrit :

Et donc personne ne va lui parler d'injection SQL? [:petrus75]


 bah non puisque

Citation :

tout ce passe dans un back-office, donc pour les $_post il n'y a rien à dire.


 
[:dawak]
 

Spoiler :

[:psywalk]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-12-2008 à 15:53:08    

(de toute manière il suffit d'attendre qu'il fasse un test avec une apostrophe dans un champ pour qu'il revienne demander pourquoi ça plante, hein...[:petrus75])


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed