Toutes mes données ne s'enregistrent pas dans ma base

konavab86 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
 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);



1 réponse

Utilisateur anonyme
 
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.
0
konavab86 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
il n'ya en réalité rien de particulier dans ma 2300è ligne
aucun message d'erreur signalé
je pense que l'hypothèse de la limitation en temps d'exécution des scripts est à explorer

Mais comment on fait pour enlever cette limitation de temps d'exécution de script?
0
konavab86 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Utilisateur anonyme
 
C'est quoi cette erreur d'offset ? Tu peux recopier le message d'erreur complet ? Ça ne me dit rien du tout a priori.
0
konavab86 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Notice: Undefined offset: 2 in C:\wamp\www\criconsom_base\fichier_base.php on line 59
Call Stack
# Time Memory Function Location
1 0.0132 403160 {main}( ) ..\fichier_base.php:0



voila l'erreur qu'il signale
0
Utilisateur anonyme
 
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.
0