TXT-File aufbröseln
Einklappen
X
-
PHP-Code:echo "<pre>";
$CSV = "test.txt";
$filearray = file($CSV);
echo $counter = count($filearray);
//$filearray = file("$CSV");
for($t=0; $t<$counter; $t++)
{
echo $t."\\n";
$durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);
$k=0;
for ($i=0; $i<count($durchlauf); $i++)
{
echo $i."\\n";
$startwert = $i==0 ? $i : $durchlauf[$i-1]+$k;
$item[] = substr($filearray[$t],$startwert,$durchlauf[$i]);
$k=$k+$durchlauf[$i-1];
}
}
print_r($item);
und was heisst "Ich bekomme immer nur den ersten Datensatz ???" ?
Kommentar
-
ne, alle datensaätze stehen in einem array !
PHP-Code:$CSV = "test.txt";
$filearray = file($CSV);
$counter = count($filearray);
for($t=0; $t<$counter; $t++)
{
$durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);
$k=0;
for ($i=0; $i<count($durchlauf); $i++)
{
$startwert = $i==0 ? $i : $durchlauf[$i-1]+$k;
$item[$t][] = substr($filearray[$t],$startwert,$durchlauf[$i]); // <= hier lag dein denkfehler
$k=$k+$durchlauf[$i-1];
}
}
for($i=0;count($item);$i++)
{
print_r($item[$i]);
}
über $item[0][0] - $item[0][11] kommst du an den ersten datensatz, den 2. mit $item[1][0] - $item[1][11], usw ...
Kommentar
-
-
Ich werd' noch wahnsinnig !!! Wieso funzt das nicht:
PHP-Code:$CSV = "test.txt";
$filearray = file("$CSV");
$counter = count($filearray);
for($t=0; $t<$counter; $t++)
{
$durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);
$k=0;
for ($i=0; $i<count($durchlauf); $i++)
{
$startwert = $i==0 ? $i : $durchlauf[$i-1]+$k;
$item[] = substr($filearray[$t],$startwert,$durchlauf[$i]);
$k=$k+$durchlauf[$i-1];
}
$res = mysql_query("replace into bestaende values ('$item[0]', '$item[1]', '$item[2]', '$item[3]', '$item[4]', '$item[5]', '$item[6]', '$item[7]', '$item[8]', '$item[9]', '$item[10]', '$item[11]')") or die(mysql_error());
}
Kommentar
-
PHP-Code:$CSV = "test.txt";
$filearray = file("$CSV");
$counter = count($filearray);
for($t=0; $t<$counter; $t++)
{
$durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);
$k=0;
for ($i=0; $i<=count($durchlauf); $i++)
{
$startwert = $i==0 ? $i : $durchlauf[$i-1]+$k;
$item[] = substr($filearray[$t],$startwert,$durchlauf[$i]);
$k=$k+$durchlauf[$i-1];
}
$res = mysql_query("replace into bestaende values ('$item[0]', '$item[1]', '$item[2]', '$item[3]', '$item[4]', '$item[5]', '$item[6]', '$item[7]', '$item[8]', '$item[9]', '$item[10]', '$item[11]')") or die(mysql_error());
$k = 0;
}
mfg
Kommentar
-
@trashar
wozu setzt du ein 2. mal $k=0
@honny
- hatten wir uns nicht auf ein mehrdimensionales array geeinigt?
- innerhalb der ersten schleife ($t...) bleibt $item und sein inhalt erhalten,
--> d.h. beim 2. durchlauf geht es mit $item[12] für den 2. datensatz weiter
- entweder nimmst du meinen ersten vorschlag auf, mit $item[$t][] zu arbeiten
oder
- setz vor dem "for($i=0....) mal "$item=array();" ein
Kommentar
-
mit $item[$t][]:
PHP-Code:$CSV = "test.txt";
$filearray = file("$CSV");
$counter = count($filearray);
for($t=0; $t<$counter; $t++)
{
$durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);
$k=0;
for ($i=0; $i<count($durchlauf); $i++)
{
$startwert = $i==0 ? $i : $durchlauf[$i-1]+$k;
$item[$t][] = substr($filearray[$t],$startwert,$durchlauf[$i]);
$k=$k+$durchlauf[$i-1];
}
$res = mysql_query("replace into bestaende values ('$item[$t][0]', '$item[$t][1]', '$item[$t][2]', ...)") or die(mysql_error());
}
Kommentar
Kommentar