par
bart0356 » 05 juin 2009, 09:21
Bonjour à tous et à toutes,
Nouvellement arrivé dans le monde du PHP j'essaie depuis plusieurs jours de créer un petit script qui récupère des données depuis une base SQL pour les copier dans une autre ( les données étant
pratiquement identique, seule les intitulés de champ changent)
Il s'agit d'une migration de base de données e-commerce.
J'ai à peu prêt reussi mon code qui fonctionne lors que la première base contient une entrée seulement, les choses se compliquent lorsque les bases sont + remplies, en effet une seule entrée
est prise en compte et ensuite j'ai un duplicate content.
Je pense qu'il s'agit d'une erreur mon script et je sollicite votre aide.
Le code est certainement très basique et non optimisé, j'apprends sur le tas et n'ai aucune formation de php.
Voici donc ce que j'ai reussi à faire
$i = 0;
$comptage = mysql_query("select COUNT(*) from address_book"); // on compte les entrées dans adress_book qui est ma table de base
$total = mysql_fetch_row($comptage); // array
while ($i <= $total[0]) // on boucle tant qu'il y a des entrées
{
$result_osc = mysql_query("select * from address_book"); // on recupere les anciennes données
$tab_custom=mysql_fetch_array($result_osc); // array
$address = addslashes($tab_custom['entry_city']); // évite les problèmes d'apostrophe dans les adresses
// On insère les données
$up=mysql_query("INSERT INTO `"._DB_PREFIX_ ."address` (id_address, id_country, id_state,
id_customer, id_manufacturer, id_supplier, alias, company, lastname, firstname, address1,
address2,postcode,city, other, phone, phone_mobile, date_add, date_upd, active, deleted) VALUES('".$tab_custom[address_book_id]."', '8', '0', '".$tab_custom[customers_id]."','0','0',
'mon adresse','','".$tab_custom[entry_firstname]."', '".$tab_custom[entry_lastname]."',
'".$tab_custom[entry_street_address]."', '".$tab_custom[entry_suburb]."',
'".$tab_custom[entry_postcode]."','".$address."', '', '".$tab_custom2[customers_telephone]."',
'".$tab_custom2[customers_fax]."','".$date_jour."', '".$date_jour."', '1', '0' )") or die(mysql_error());
$i++; // et on boucle sur le suivant
}
Eventuellement j'ai trouvé une solution provisoire qui est de rajouter cette ligne :
$del=mysql_query("DELETE FROM address_book LIMIT 1") or die(mysql_error());
dans la boucle, ce qui a pour conséquence de supprimer une entrée à chaque fois et du coup le traitement se fait, mais je suis sur qu'il y a beaucoup plus simple.
Merci d'avance
Cordialement,
Bonjour à tous et à toutes,
Nouvellement arrivé dans le monde du PHP j'essaie depuis plusieurs jours de créer un petit script qui récupère des données depuis une base SQL pour les copier dans une autre ( les données étant
pratiquement identique, seule les intitulés de champ changent)
Il s'agit d'une migration de base de données e-commerce.
J'ai à peu prêt reussi mon code qui fonctionne lors que la première base contient une entrée seulement, les choses se compliquent lorsque les bases sont + remplies, en effet une seule entrée
est prise en compte et ensuite j'ai un duplicate content.
Je pense qu'il s'agit d'une erreur mon script et je sollicite votre aide.
Le code est certainement très basique et non optimisé, j'apprends sur le tas et n'ai aucune formation de php.
Voici donc ce que j'ai reussi à faire
[php]
$i = 0;
$comptage = mysql_query("select COUNT(*) from address_book"); // on compte les entrées dans adress_book qui est ma table de base
$total = mysql_fetch_row($comptage); // array
while ($i <= $total[0]) // on boucle tant qu'il y a des entrées
{
$result_osc = mysql_query("select * from address_book"); // on recupere les anciennes données
$tab_custom=mysql_fetch_array($result_osc); // array
$address = addslashes($tab_custom['entry_city']); // évite les problèmes d'apostrophe dans les adresses
// On insère les données
$up=mysql_query("INSERT INTO `"._DB_PREFIX_ ."address` (id_address, id_country, id_state,
id_customer, id_manufacturer, id_supplier, alias, company, lastname, firstname, address1,
address2,postcode,city, other, phone, phone_mobile, date_add, date_upd, active, deleted) VALUES('".$tab_custom[address_book_id]."', '8', '0', '".$tab_custom[customers_id]."','0','0',
'mon adresse','','".$tab_custom[entry_firstname]."', '".$tab_custom[entry_lastname]."',
'".$tab_custom[entry_street_address]."', '".$tab_custom[entry_suburb]."',
'".$tab_custom[entry_postcode]."','".$address."', '', '".$tab_custom2[customers_telephone]."',
'".$tab_custom2[customers_fax]."','".$date_jour."', '".$date_jour."', '1', '0' )") or die(mysql_error());
$i++; // et on boucle sur le suivant
}
[/php]
Eventuellement j'ai trouvé une solution provisoire qui est de rajouter cette ligne :
[php]
$del=mysql_query("DELETE FROM address_book LIMIT 1") or die(mysql_error());
[/php]
dans la boucle, ce qui a pour conséquence de supprimer une entrée à chaque fois et du coup le traitement se fait, mais je suis sur qu'il y a beaucoup plus simple.
Merci d'avance
Cordialement,