Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1137 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  requete access dans php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete access dans php

n°1985428
Jarod511
****
Posté le 19-04-2010 à 12:11:56  profilanswer
 

Salut à tous,
 
J'ai un problème qui me dépasse et je vois vraiment pas du tout ce qui fait planter mon programme. Voila, j'ai une base ACCESS sur laquelle je lance des requêtes via une appli en php.
Ma requete access doit copier plusieurs champ d'une table vers une autre table. Cette requête je l'ai exécuté dans ACCESS et elle marche.  
 

Code :
  1. INSERT INTO catalogue
  2. SELECT Banque.NUMTRA AS NUMTRA,
  3. Banque.NOMMAL AS NomPatient,
  4. Banque.NJFMAL AS NJFPatient,
  5. Banque.PREMAL AS PrenomPatient,
  6. Banque.DOSNPI AS IdPatient,
  7. Banque.DATNAI AS DateNai,
  8. Banque.SEXMAL AS Sexe
  9. FROM Banque
  10. WHERE Banque.DCD='oui'
  11. And
  12. ((Banque.NbTotal>1));


 
Ensuite, je l'ai transposé en php et là j'ai une erreur :  
 

Code :
  1. $nomtable = $_POST["nomtable"] ;
  2. $Insert = "INSERT INTO catalogue
  3. SELECT ".$nomtable.".NUMTRA AS NUMTRA,
  4. ".$nomtable.".NOMMAL AS NomPatient,
  5. ".$nomtable.".NJFMAL AS NJFPatient,
  6. ".$nomtable.".PREMAL AS PrenomPatient,
  7. ".$nomtable.".DOSNPI AS IdPatient,
  8. ".$nomtable.".DATNAI AS DateNai,
  9. ".$nomtable.".SEXMAL AS Sexe
  10. FROM ".$nomtable."
  11. WHERE ".$nomtable.".DCD='oui'
  12. And
  13. ((".$nomtable.".NbTotal>1))";
  14. $requete2 = odbc_exec($cnx, $Insert);


Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Le nombre de valeurs de la requête doit coïncider avec le nombre de champs destination.
 
Est ce que quelqu'un aurait une idée s'il vous plait ??  
Merci.

mood
Publicité
Posté le 19-04-2010 à 12:11:56  profilanswer
 

n°1985441
olivthill
Posté le 19-04-2010 à 13:21:29  profilanswer
 

1. Il faudrait afficher le contenu de $Insert pour voir si la requête contient vraiment ce qu'il faut.
 
2. Il ne faut pas s'attendre à avoir exactement le même comportement en exécutant la requête dans l'onglet des requêtes d'Access, et en l'exécutant par un driver ODBC. Par exemple, je ne suis pas certain que tous les drivers ODBC supportent la syntaxe Insert.. Select. Dans ce cas, il faudrait séparer le traitement, pour récupérer les données avec Select, puis faire des Insert pour chaque ligne retournée par le Select. Ou bien, peut-être que le driver ODBC voudrait avoir la liste des champs derrrière le nom de la table, par exemple INSERT INTO catalogue(NUMTRA, NomPatient...

n°1985452
Jarod511
****
Posté le 19-04-2010 à 13:41:39  profilanswer
 

Salut Olivthill,
 
Merci pour ta réponse. Je ne savais que le driver odbc était aussi capricieux. J'ai rajouté comme tu me l'as conseillé de rajouter la liste des champs derrrière le nom de la table : INSERT INTO catalogue(NUMTRA, NomPatient... )
et maintenant ça marche. Merci beaucoup pour ton aide.
 
Par contre, tu as marqué dans ton point 2 : "Par exemple, je ne suis pas certain que tous les drivers ODBC supportent la syntaxe Insert.. Select. Dans ce cas, il faudrait séparer le traitement, pour récupérer les données avec Select, puis faire des Insert pour chaque ligne retournée par le Select"
C'est à dire qu'il faut que je fasse, un truc du genre:
 

Code :
  1. $action1 = "SELECT ...."
  2. odbc_exec($cnx, $action1);
  3. $action2 = "INSERT INTO ".$action1." ";
  4. odbc_exec($cnx, $action2);


 
???
 
Merci encore pour l'aide.

n°1985471
olivthill
Posté le 19-04-2010 à 14:51:54  profilanswer
 

J'ai utilisé des vieux drivers ODBC, mais apparamment, les drivers actuels acceptent la syntaxe du insert..select, donc, ma première remarque est à oublier.

n°1985515
Jarod511
****
Posté le 19-04-2010 à 16:46:38  profilanswer
 

Ok. Merci beaucoup pour ton aide.
 
A+  
 :)

n°1987340
erwan83
Du Shift DEL tu te méfieras !
Posté le 25-04-2010 à 01:33:10  profilanswer
 

Juste pour l'info, j'ai une base qui frole les 400 000 fichiers sur un serveur et ce ne sont que des fichiers texte, ça booste bien mieux que ACCESS qui reste vraiment un petit rigolo à coté. PHP m'attaque les index à une vitesse assez affolante, en tout cas il fait des opérations bien plus rapidement sur des fichiers TXT qu'il ne le ferait sur des .MDB...
A voir.


---------------
http://www.ypikay.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  requete access dans php

 

Sujets relatifs
Requete update ACCESSRequete modifier valeur d'un champ sous access
[Access] Requete "imbriquée"Problème requête ACCESS
[Access 2003]Créer une table à partir d'une requèteACCESS - Requete sql pour textbox
[VBA Access] Problème de requêteRequéte sur Access
Afficher le resultat d'une requête SQL (VBA access)Intégré le résultat d'une requête access dans un mail en corp de texte
Plus de sujets relatifs à : requete access dans php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR