cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 2010
-
29 juin 2007 à 15:00
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 2010
-
1 juil. 2007 à 10:44
Hello ,
je cherche à créer un table MySQL à l'identique de ma table ODBC
mais je butte sur ma boucle ...
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 30 juin 2007 à 13:42
Salut,
voici le code de ma fonction :
function odbc_create_table($conn, $odbc_table) {
$d = mysql_query('DROP TABLE IF EXISTS '.$odbc_table.'');
if (!$d) {
echo mysql_error();
echo 'impossible de supprimer la table'.$odbc_table;
exit;
}
$sql = 'select * from '.$odbc_table.' order by 1,2,3 ';
$req = odbc_prepare($conn, $sql);
if(!$req) die('Impossible de charger la table : '.$odbc_table);
if (!$do_create) {
echo mysql_error();
echo 'impossible de creer la table '.$odbc_table;
exit;
}
}
echo '<script language="javascript">document.location.href=\''.$_SERVER['PHP_SELF'].'\';</script>';
}
mais, je butte, j'ai des erreurs ...
je veux qu'à chaque champs de ma table ODBC, il le crée en format MySQL,
j'ai donc vérifier avec $debut, que c'est bien le premier champ de la table
sinon, il concatène avec le . la varaible $sql2
Je regarde aussi le format du champ, car MysQL ne supporte pas "CHAR" alors j'ai mis VARCHAR
et suivant, si c'est un VARCHAR ou non, il ajoute la précesion ($len)
apres mon objectif, c'est d'ajouter toute les valeurs de la table, mais, je dois d'abord parer ce problème.
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 30 juin 2007 à 14:17
Oups,
je remet mon code sans erreur :
function odbc_create_table($conn, $odbc_table) {
//supprime la table importeée si elle existe déjà
$d = mysql_query('DROP TABLE IF EXISTS '.$odbc_table.'');
if (!$d) {
echo mysql_error();
echo 'impossible de supprimer la table'.$odbc_table;
exit;
}
//requete selection de la table odbc
$sql = 'select * from '.$odbc_table.' order by 1,2,3 ';
$req = odbc_prepare($conn, $sql);
if(!$req) die('Impossible de charger la table : '.$odbc_table);
// pour chaque champ de la table ODBC
for ($i = 1; $i <= odbc_num_fields($req); $i++) {
$champ = odbc_field_name($req, $i);
$format = odbc_field_type($req, $i);
$len = odbc_field_precision($req, $i);
//si premier champ = true
if ($debut = true) {
// si le format est CHAR alors le passe en VARCHAR
if ($format = "CHAR") {
$format = "VARCHAR";
$sql2 = '`'.$champ.'` '.$format.' ( '.$len.' ) NOT NULL default ';
}else{
$sql2 = '`'.$champ.'` '.$format.' NOT NULL default ';
}
//fin du premier champ
$debut = false;
//sinon si debut = faux ...
}elseif ($debut = false){
// meme opération pour le formatage du champ
if ($format = "CHAR") {
$format = "VARCHAR";
$sql2 = $sql2.', `'.$champ.'` '.$format.' ( '.$len.' ) NOT NULL default ';
}else{
$sql2 = $sql2.', `'.$champ.'` '.$format.' NOT NULL default ';
}
}
}
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 1 juil. 2007 à 10:44
Salut,
l'erreur est au niveau de la syntaxe SQL
1 - il ne me converti pas le "CHAR" en VARCHAR
2 - il ne me concatène pas $sql2= $sql2. etc... (j'ai donc uniquement le dernier champ de ma table ODBC et non tous les champs
Je fait un echo pour voir mon $do_create .....
je fais $do_create = mysql_query($sql1.$sql2.$sql3); mais impossible de créer la table.
L'erreur doit venir de ma boucle :
// pour chaque champ de la table ODBC
for ($i = 1; $i <= odbc_num_fields($req); $i++) {
$champ = odbc_field_name($req, $i);
$format = odbc_field_type($req, $i);
$len = odbc_field_precision($req, $i);
//si premier champ = true
if ($debut = true) {
// si le format est CHAR alors le passe en VARCHAR
if ($format = "CHAR") {
$format = "VARCHAR";
$sql2 = '`'.$champ.'` '.$format.' ( '.$len.' ) NOT NULL default ';
}else{
$sql2 = '`'.$champ.'` '.$format.' NOT NULL default ';
}
//fin du premier champ
$debut = false;
//sinon si debut = faux ...
}elseif ($debut = false){
// meme opération pour le formatage du champ
if ($format = "CHAR") {
$format = "VARCHAR";
$sql2 = $sql2.', `'.$champ.'` '.$format.' ( '.$len.' ) NOT NULL default ';
}else{
$sql2 = $sql2.', `'.$champ.'` '.$format.' NOT NULL default ';
}
}