souci avec explode ...

Répondre
i M@N
le 12/03/2005 à 15:38
i M@N
Hello !

J'ai un fichier .txt duquel je voudrais récupérer les données pour les mettre dans une base de données :fichier visiteurs.txt
date1 #file1 #ip1 #host1 #navigateur1
date2 #file2 #ip2 #host2 #navigateur2
date3 #file3 #ip3 #host3 #navigateur3
Voici mon code :
<?

$source = "./visiteurs.txt";

$fp = @fopen ("$source","r");

$texte_complet = @fread ($fp, @filesize("$source"));
$tableau = preg_split ("/(?=\n)/", $texte_complet);

$nb_lignes = count($tableau);

$i = 0;
for ($i=0; $i<=$nb_lignes; $i++) {
if ($i != $nb_lignes) {

$datas = explode ("#",$tableau[$i]); // explosion ...


count($datas);
for($j = 0;$j < count($datas);$j++)
{

$data_date = explode("#",$datas[0]);
$data_file = explode("#",$datas[1]);
$data_ip = explode("#",$datas[2]);
$data_host = explode("#",$datas[3]);
$data_navigateur = explode("#",$datas[4]);

echo '<b>1</b> '.$data_date[$j].' <b>2</b> '.$data_file[$j].' <b>3</b> '.$data_ip[$j].' <b>4</b> '.$data_host[$j].' <b>5</b> '.$data_navigateur[$j].'';
}


}
else {
echo '<b>1</b> '.$data_date[$j].' <b>2</b> '.$data_file[$j].' <b>3</b> '.$data_ip[$j].' <b>4</b> '.$data_host[$j].' <b>5</b> '.$data_navigateur[$j].'';
}

}

// on ferme le fichier
fclose ($fp);

?>

Et voici ce que ça m'affiche :
1 date1 2 file1 3 ip1 4 host1 5 navigateur1
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 date2 2 file2 3 ip2 4 host2 5 navigateur2
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 date3 2 file3 3 ip3 4 host3 5 navigateur3
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
J'y suis presque mais là je bloque un peu ... je comprends pas pourquoi il m'affiche les
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5


D'avance merci,

@+...
One Love, One Heart, One Unity.
keitarosan
le 12/03/2005 à 16:41
keitarosan
<?php
$source = "./visiteurs.txt";

$fp = @fopen ("$source","r");
while (!feof ($fp))
{
$tableau[] = fgets($fp, 4096);
}
// on ferme le fichier
fclose ($fp);

foreach($tableau as $line)
{
list($data_date,$data_file,$data_ip,$data_host,$data_navigateur) = explode("#", $line);

echo '
<b>1</b> '.$data_date[$j].'
<b>2</b> '.$data_file[$j].'
<b>3</b> '.$data_ip[$j].'
<b>4</b> '.$data_host[$j].'
<b>5</b> '.$data_navigateur[$j].'';
}
?>


Voila, le code est plus simple, et je pense que t'auras moins de probleme :)

je ne l'ai pas tester, mais bon, ca doit s'approcher du resultat attendu :)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
i M@N
le 12/03/2005 à 17:12
i M@N
Reuh ...

Merci beaucoup ! smiley

<?

$source = "./visiteurs.txt";

$fp = @fopen ("$source","r");
while (!feof ($fp))
{
$tableau[] = fgets($fp, 4096);
}
// on ferme le fichier
fclose ($fp);

foreach($tableau as $line)
{
list($data_date,$data_file,$data_ip,$data_host,$data_navigateur) = explode("#", $line);

echo '
<b>1</b> '.$data_date.'
<b>2</b> '.$data_file.'
<b>3</b> '.$data_ip.'
<b>4</b> '.$data_host.'
<b>5</b> '.$data_navigateur.'';
}


?>
T'avais juste laissé le [$j] qui foutait le bordel ... ça fonctionne impec sans.

@+...
One Love, One Heart, One Unity.
zebden
le 12/03/2005 à 17:23
zebden
Tu peux remplacer

<?php
$source = "./visiteurs.txt";

$fp = @fopen ("$source","r");
while (!feof ($fp))
{
$tableau[] = fgets($fp, 4096);
}
// on ferme le fichier
fclose ($fp);
?>

par

<?php
$source = "./visiteurs.txt";
$tableau = file($source);
?>

^^
zebdinou pour les intimes / Blog : http://www.zebden.fr
Rex
le 12/03/2005 à 17:34
Rex
Salut,

Vous êtes en train de vous emmerder pour rien !

fscanf
Un hamster dit : J'ai dressé le scientifique, quand j'appuie sur le bouton, il me donne des graines
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours