bonjour,

Voila mon probleme,

je souhaite recuperer le nom des champs que contient une table construite avec ACCESS.
Donc j'ai créé un lien ODBC vers cettte base et ensuite je m'y connecte via PHP comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
$connACCESS = odbc_connect("****","***","**") or die(" Impossible de se connecter à la base de données ACCESS");
ensuite je recupere le nom des tables avec ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
while($table2=mysql_fetch_row($result2)){
//liste des tables de la base ACCESS
 $resultACCESS = odbc_tables($connACCESS);
//tant que l'on n'arrive pas à la fin de la liste des table de la base ACCESS
 while (odbc_fetch_row($resultACCESS)){
    $tableACCESS=odbc_result($resultACCESS, 3);
ensuite je veux pouvoir recuperer le nom des champs de chaque table,
malheureusement le code que j'ai ecrit n'est pas bon car je me perd dans
le resultat que renvoi les fonction ( connection_id, result_id, ... ) je ne
sais plus quoi mettre.

voila le code qui ne marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if ($table2[0]==odbc_result($resultACCESS, 3)){
//liste des champs de la base ACCESS et nombre de champs
     $listchamps=odbc_columns($connACCESS);
     $nbchamp=odbc_num_fields($listchamps);
//sauvegarde des noms de champs de la base ACCESS et mysql pour pouvoir s'en servir dans les requêtes
     for ($i=1;$i<=$nbchamp;$i++){
        $tablo[$i]=odbc_field_name($listchamps, 4);
        echo "$tablo[$i]";print "<br />";}
     for ($i=0;$i<$nbchamp;$i++){
        $champ[$i]=mysql_field_name($table2[0],$i);}echo "$champ[1]";print "<br />";
//requête servant à selectionner les données des champs de la base ACCESS et exécution de la requête
     $req="select ";
     for ($i=0;$i<$nbchamp;$i++){
        $req=$req."$tablo[$i] ";}
     $req=$req."from $tableACCESS";
     $result3 = odbc_exec( $connACCESS,$req );
//boucle servant à remplir les tables MySQL avec les données de la requêtes précédentes
     while (odbc_fetch_row($result3))
       {
        for ($i=0;$i<$nbchamp;$i++){
          $tab[$i]=odbc_result( $result3, $i);}
        $query2="INSERT INTO $table2[0] (";
        for ($i=0;$i<$nbchamp-1;$i++){
          $query2=$query2."$champ[$i],";}
        $query2=$query2."$champ[$nbchamp]) VALUES ( ";
        for ($i=0;$i<$nbchamp-1;$i++){
          $query2=$query2."$tab[$i],";}
        $query2=$query2."$tab[$nbchamp])";
        $resultat2=mysql_query($query2,$conn2);}}}}
en fait j'ecris ce script afin de pouvoir vider toutes les tables d'une base
MySQL et de les remplir avec les donnees de la base ACCESS.

Voila, merci de m'aider et n'hesitez pas a poser de question si c'est pas clair