Bonjour, je suis entrain de travailler sur l'export de BDD Access vers Mysql en utilisant DSN-less(connexion sans DSN), le problème c'est que j'arrive pas envoyer tous les entrées de la table source, pour être plus précis : la table crée chez mysql est vide (les champs sont tous crées mais les valeurs sont vides) ;l'erreur est :
Notice : Undefined offset: 0 inc:\program files\easyphp1-8\www\-import&export-\import_table.php on line 50
Notice: Undefined offset: 1 inc:\program files\easyphp1-8\www\-import&export-\import_table.php on line 53
Notice: Undefined offset: 2 inc:\program files\easyphp1-8\www\-import&export-\import_table.php on line 53
voila comment j'ai définit mon script :
<?
require ('fonction_exportation.php');
//recuperation de donnees du formulaire
$db_source=$_POST['db_source'];
$login=$_POST['login'];
$mdp=$_POST['mdp'];
$db_dest=$_POST['db_dest'];
$table_access=$_POST['nom_table_dest'];
$base_access=$_POST['base_access'];
//connexion mysql
$con=mysql_connect("localhost","root","");
mysql_select_db($db_source,$con);
//connexion a la base access
$db_dest1=str_replace("\\","\\\\",$db_dest);
$cnx_str=sprintf("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\%s;" ,$db_dest1);
$cnx=odbc_connect($cnx_str,"root","")or die ("Impossible de se connecter à la base de donnée") ;
//champ de la table sourcce
$field=champs_mysql($table_access);
$nom_champ=$field[0];$type_champ=$field[1];$taille_champ=$field[2];
$nb_champ=count($nom_champ);
$champ=$nom_champ[0];$type_access=$type_champ[0];$taille=$taille_champ[0];
$type_mysql=convertir_access_mysql($type_access,$taille);
//creation de table dans mysql avec premier champ
$sql="CREATE TABLE $table_access($champ $type_mysql)";
echo "$sql";
$connect=mysql_query($sql);
//ajout des champs restant
for($ii=1;$ii<$nb_champ;$ii++)
{
$champ=$nom_champ[$ii];
$type_access=$type_champ[$ii];
$taille=$taille_champ[$ii];
$type_mysql=convertir_access_mysql($type_access,$taille);
$sql="ALTER TABLE $table_access ADD COLUMN $champ $type_mysql";
mysql_query($sql);
}
//insertion d'enregistrement
$req_recup=odbc_exec($cnx,"select*from $table_access");
while($res_recup=odbc_fetch_array($req_recup))
{
$sql_insert="INSERT INTO $table_access ($champ[0])VALUES(".$res_recup[0].")";
for($ii=1;$ii<$nb_champ;$ii++)
{
$valeur[$ii]=$res_recup[$ii];
if($type_champ[$ii]=='date')
{
$date_fr=$res_recup[$ii];//jj-mm- aaaa
$jj=substr($date_us,0,2);
$mm=substr($date_us,3,2);
$aaaa=substr($date_us,6,3);
$date_us=".$aaaa.'-'.$mm.'-'.$jj.";
$valeur[$ii]=$date_us;
}
$sql_insert="$sql_insert,".$valeur[$ii]."";
}
$sql_insert="$sql_insert)";
echo "$sql_insert";
mysql_query($con,$sql_insert);
}
//fin de mis à jour de table
?>
Je vous remercie d'avance pour les réponses que vous allez m'apportez !!
J'utilise windows XP SP2, MSAccess2003, easyphp1-8