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 :
ensuite je recupere le nom des tables avec ce code :
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 veux pouvoir recuperer le nom des champs de chaque table,
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);
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 :
en fait j'ecris ce script afin de pouvoir vider toutes les tables d'une base
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);}}}}
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
Partager