Toutes mes données ne s'enregistrent pas dans ma base
konavab86
Messages postés
12
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Mon code consiste a recupérer toutes les lignes du fichier testImport.txt que je dois enregistrer dans ma bd
j'ai au total 15213 lignes de mon fichier a mettre dans la bd
tout marche bien aucune erreur sauf que il s'arrete au 2300e enregistrement
je veux savoir qu'est ce qui fait sa. Merci bcp pour vos reponses.
je vous donne mon code que voici
require_once "/Connections/connexion.php";
$nomComplet='D:\\testImport.txt';
$tab = file($nomComplet);
for($i=0 ; $tab[$i]; $i++){
$tableau=explode(";",$tab[$i]);
$connexion = @mysql_connect($hostname_connexion, $username_connexion, $password_connexion) or trigger_error(mysql_error(),E_USER_ERROR);
@mysql_select_db($database_connexion,$connexion);
$nom=str_replace("\"", "", $tableau[2]);
$nom=str_replace("'"," ",$nom);
$prenom=str_replace("\"", "", $tableau[3]);
$prenom=str_replace("'"," ",$prenom);
$cellulaire=trim(str_replace("\"", "", $tableau[5]));
$sexe=str_replace("\"", "", $tableau[6]);
if($tableau[7]=="")
{
$naissance="";
}
else
{
$naissance=str_replace("\"", "", $tableau[7]);
$naissance=explode("/",$naissance);
$annee=$naissance[2];
$mois=$naissance[1];
$jour=$naissance[0];
$naissance=sprintf("%4d-%02d-%02d",$annee,$mois ,$jour);
}
$profession=str_replace("\"", "", $tableau[8]);
$profession=str_replace("'"," ",$profession);
$telephone=str_replace("\"", "", $tableau[10]);
$email=trim(str_replace("\"", "", $tableau[11]));
$debutAdhesion=str_replace("\"", "", $tableau[12]);
$debutAdhesion=explode("/",$debutAdhesion);
$debutAdhesion=sprintf("%4d-%02d-%02d",$debutAdhesion[2],$debutAdhesion[1],$debutAdhesion[0]);
$boitePostal=str_replace("\"", "", $tableau[13]);
$numeroCarte=trim(str_replace("\"", "", $tableau[15]));
$expirationCarte=str_replace("\"", "", $tableau[16]);
$expirationCarte=explode("/",$expirationCarte);
$expirationCarte=sprintf("%4d-%02d-%02d",$expirationCarte[2],$expirationCarte[1],$expirationCarte[0]);
$commune=str_replace("\"", "", $tableau[9]);
$conseiller=str_replace("\"", "", $tableau[17]);
$photo=str_replace("\"", "", $tableau[14]);
$sql="insert into consommateur (
id_conso
,nom
,prenom
,cellulaire
,sexe
,date_naissance
,profession
,telephone
,email
,date_adhesion
,boite_postale
,numero_carte
,date_expiration_carte
,id_commune
,id_conseiller
,photo
) values
(NULL,
'$nom','$prenom','$cellulaire',
'$sexe','$naissance','$profession',
'$telephone','$email','$debutAdhesion',
'$boitePostal','$numeroCarte','$expirationCarte',
'$commune','$conseiller','$photo'
)";
$result=mysql_query($sql);
mysql_close($connexion);
Mon code consiste a recupérer toutes les lignes du fichier testImport.txt que je dois enregistrer dans ma bd
j'ai au total 15213 lignes de mon fichier a mettre dans la bd
tout marche bien aucune erreur sauf que il s'arrete au 2300e enregistrement
je veux savoir qu'est ce qui fait sa. Merci bcp pour vos reponses.
je vous donne mon code que voici
require_once "/Connections/connexion.php";
$nomComplet='D:\\testImport.txt';
$tab = file($nomComplet);
for($i=0 ; $tab[$i]; $i++){
$tableau=explode(";",$tab[$i]);
$connexion = @mysql_connect($hostname_connexion, $username_connexion, $password_connexion) or trigger_error(mysql_error(),E_USER_ERROR);
@mysql_select_db($database_connexion,$connexion);
$nom=str_replace("\"", "", $tableau[2]);
$nom=str_replace("'"," ",$nom);
$prenom=str_replace("\"", "", $tableau[3]);
$prenom=str_replace("'"," ",$prenom);
$cellulaire=trim(str_replace("\"", "", $tableau[5]));
$sexe=str_replace("\"", "", $tableau[6]);
if($tableau[7]=="")
{
$naissance="";
}
else
{
$naissance=str_replace("\"", "", $tableau[7]);
$naissance=explode("/",$naissance);
$annee=$naissance[2];
$mois=$naissance[1];
$jour=$naissance[0];
$naissance=sprintf("%4d-%02d-%02d",$annee,$mois ,$jour);
}
$profession=str_replace("\"", "", $tableau[8]);
$profession=str_replace("'"," ",$profession);
$telephone=str_replace("\"", "", $tableau[10]);
$email=trim(str_replace("\"", "", $tableau[11]));
$debutAdhesion=str_replace("\"", "", $tableau[12]);
$debutAdhesion=explode("/",$debutAdhesion);
$debutAdhesion=sprintf("%4d-%02d-%02d",$debutAdhesion[2],$debutAdhesion[1],$debutAdhesion[0]);
$boitePostal=str_replace("\"", "", $tableau[13]);
$numeroCarte=trim(str_replace("\"", "", $tableau[15]));
$expirationCarte=str_replace("\"", "", $tableau[16]);
$expirationCarte=explode("/",$expirationCarte);
$expirationCarte=sprintf("%4d-%02d-%02d",$expirationCarte[2],$expirationCarte[1],$expirationCarte[0]);
$commune=str_replace("\"", "", $tableau[9]);
$conseiller=str_replace("\"", "", $tableau[17]);
$photo=str_replace("\"", "", $tableau[14]);
$sql="insert into consommateur (
id_conso
,nom
,prenom
,cellulaire
,sexe
,date_naissance
,profession
,telephone
,date_adhesion
,boite_postale
,numero_carte
,date_expiration_carte
,id_commune
,id_conseiller
,photo
) values
(NULL,
'$nom','$prenom','$cellulaire',
'$sexe','$naissance','$profession',
'$telephone','$email','$debutAdhesion',
'$boitePostal','$numeroCarte','$expirationCarte',
'$commune','$conseiller','$photo'
)";
$result=mysql_query($sql);
mysql_close($connexion);
1 réponse
-
Bonjour
Quelques pistes :
Il y a quelque chose de particulier dans ta 2300 ème ligne?
Il y a un message d'erreur?
La 2300 ème ligne ne viendrait pas au bout de 30 secondes par hasard ? Car la durée d'exécution des scripts est limitée.-
-
Merci bcp le père . En effet dans le fichier php.ini j'ai pu trouver la directive set_maximum_time et je l'ai fait passé de 30 à 300 pour que mon script puisse s'executer intégralement
Et là il a pu enregistré dans la base jusqu'a l'enregistrement no 13256 et c'est là qu'il met une erreur de offset . Je pense que je suis pret du but . Je vais encore chercher l'origine des ces dernières erreurs. MERCI ET GRAND MERCI A LE PERE -
-
-
C'est sûrement sur la ligne $nom=str_replace("\"", "", $tableau[2]); ...
L'enregistrement lu est sans doute une ligne vide, donc l'explode avec les point virgules ne te donne pas un tableau - en tous cas pas avec assez d'éléments.
Au fait, 2 remarques :
Il est aberrant de faire la connexion à la base de données à l'intérieur de ton for et de la refermer à chaque fois. Tu te connectes une seule fois avant le for, tu refermes la connexion une seule fois après. Ça ira beaucoup plus vite...
Plutôt que de bricoler toi-même des explode, lis ton fichier avec fgetcsv. C'est fait pour.
-