|
|
|
|
Salut,
Je cherche à importer le contenu d’un fichier texte dans ma table Utilisateur sous MySQL.
Mon fichier texte se présente comme ci-dessous.
,Nasbe, 192.168.1.2,
,Jean, 192.168.1.3,
,Marc, 192.168.1.5,
,Jacques, 192.168.1.6,
,Louis, 192.168.2.5,
,Marcel, 192.168.3.5,
Il est dynamique, c'est-à-dire qu'il se modifie tout le temps. C'est pourquoi je ne fais pas un bête import mais que je cherche à l'importer de cette manière.
J'ai d'abord créer ce petit bout de script, qui fonctionne sans problème. Simplement j'aimerai pouvoir y rajouter la deuxième partie du code ci-dessous. A quelle niveau dois-je le faire. A chaque fois que j'essaie j'ai des erreurs parse error. Quelqu'un aurait-il une piste??
<?php
$Fichier = "C:\\Users\\Nasbe\\Desktop\\AdressageIP.txt";
if (file_exists($Fichier)) {
$fp = fopen($Fichier, "r");
flock ($fp, LOCK_SH); // Bloquer le fichier en écriture
$ligne = fgets($fp, 1000);
$resultat = $ligne;
while (!feof($fp)){
$ligne = fgets ($fp,1000);
$resultat .= $ligne;
}
echo $resultat;
flock ($fp, LOCK_UN); // Bloquer le fichier en lecture
fclose ($fp);
}
?>
/*
$bd ='gestionacces';
$lien = mysql_pconnect ('localhost', 'root', '');
mysql_select_db($bd);
$table = 'utilisateurs';
if ($lien == FALSE){
echo "connexion impossible à la base $bd";
} else {
foreach ($resultat) {
$champs = explode(",", $resultat);
$query = "INSERT INTO utilisateurs";
$query .= "(IdUtilisateur, NomUtilisateur, IP)";
$query .= "VALUES";
$query .= "(".$champs[0].", '".$champs[1]."', '".$champs[2]."')";
mysql_query($query);
mysql_close($lien);
}
?>
Merci en tout cas d'avoir pris le temps de me lire.
Configuration: Windows Vista Internet Explorer 7.0
Salut,
$resultat=array();
$resultat[] = $ligne;
while (!feof($fp)){
$ligne = fgets ($fp,1000);
$resultat[]=$ligne;
ou alors pourquoi n'utilises tu pas la fonction php file(fichier) ? elle fait tout ouvrir, lire le fichier et met dans un array et ferme. vas voir sur Google |
Oui effectivement, erreur de fatigue. Voilà maintenant que j'ai corrigé, j'ai toujours un problème de parse error. Je comprends pas, si tu pouvais me débloquer, ca serait vraiment cool.
|
Non tu n'as pas tout corrigé, tu mets bien $resultat=array();
$resultat=array();
$resultat[] = $ligne;
while (!feof($fp)){
$ligne = fgets ($fp,1000);
$resultat[]=$ligne;
Ce qui empile chaque ligne dans l'array $resultat sinon essayes à la place de tout la partie : if (file_exists($Fichier)) { $fp = fopen($Fichier, "r"); flock ($fp, LOCK_SH); // Bloquer le fichier en écriture $ligne = fgets($fp, 1000); $resultat=array(); $resultat = $ligne; while (!feof($fp)){ $ligne = fgets ($fp,1000); $resultat.= $ligne; } flock ($fp, LOCK_UN); // Bloquer le fichier en lecture fclose ($fp); }
if (file_exists($Fichier)) {
$resultat=file($fichier);
}
et là c'est tout prêt et tu mets ta boucle foreach($resultat){ etc.... |
Ok c'est nickel, ca fonctionne en partie.
|
Tu peux modifier ta table mysql en mettant le champ ID en auto_increment (extra)
$i=1;
foreach ($resultat as $res) {
$champs = explode(",", $res);
$query = "INSERT INTO utilisateurs";
$query .= "(IdUtilisateur, NomUtilisateur, IP)";
$query .= "VALUES";
$query .= "('$i'.$champs[0].", '".$champs[1]."', '".$champs[2]."')";
mysql_query($query);
$i++;
}
|
Mon champ IdUtilisateur est déjà en auto-incrément. Et ca fonctionne toujours pas. Je te remets mon code ci-dessous où je fais un test de ma requête insert. Il me met le message d'erreur suivant :
|
En fait voilà comment est rempli ma table
|
Ton fichier texte est :
|