alle Datensätz einer Tabellenauswahl abarbeiten

julia29

Erfahrenes Mitglied
Hallo,
habe eine SQL-Tabelle mit Datensätzen die durch download abgearbeitet werden sollen. In dem Feld "URL" sind http-Adressen gespeichert die auf eine Textdatei zeigen. Diese Textdatei (externer Datenbank-Export) soll heruntergeladen und csv-mäßig aufbereitet werden (überflüssige Zeichen und Zeilenschaltungen weg). Danach wird dieser Text in die eigene SQL eingelesen. Klappt eigentlich alles ganz gut, nur werden nicht alle Einträge des URL-Feldes abgearbeitet, sondern immer nur der letzte Eintrag.

1. was müßte ich wie ändern, damit alle URL-Einträge nacheinander abgearbeitet werden?

2. In dem heruntergeladenen, strukturiertem Text stecken URL's (http://www.externe-domain.de/bilder/1234.jpg) mit Bildern die auch tatsächlich mit heruntergeladen und in den Ordner / bilder / abgelegt werden sollen. Wie müsste ich hierbei vorgehen?

PHP:
<?php
#error_reporting(E_ALL);

// Suche nach Datensätze die abgearbeitet werden sollen
// include = Login-Daten zur SQL
include ("02check.php");
$Query = "SELECT * 
	FROM down_group WHERE aktiv=1
	ORDER BY gruppe";
$result = mysql_query($Query) or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
  $group1=$row['gruppe'] ;
  // Kontrolle des url-Feldes mit Link der ausgelesen werden soll
  echo ("<td VALIGN=top><FONT FACE=\"Arial\"><FONT SIZE=\"-2\">$row[url]<br>");
  // Aufruf des url-Feldes mit Link der ausgelesen werden soll
  $dateiname= $row['url'] ;
}  
// für temporäre Auslagerung der Daten
$temppath= "../daten/temp.txt";
$path= "../daten/$group1.txt";

// Verbindung der URL aus dem Feld url hergestellt
// Daten bearbeiten Zeilenschaltungen usw.
$datei = implode("",file($dateiname));

$datei = ereg_replace("\r\n","", $datei);
$datei = ereg_replace("\n","", $datei);
$datei = ereg_replace("\r","", $datei);
$datei = str_replace("|ABC", "\n |ABC", $datei);

echo "<br><br><br>";
echo $datei;
echo "<br><br>";

$fopen = fopen($temppath, "w+");
$schreiben = fwrite($fopen, $datei);
fclose($fopen);

if ($schreiben == true) { echo "<BR> TRUE!</BR>";}

$fp = @fopen($temppath, "r") or die ("Kann Datei nicht lesen.");


//Dateigröße bestimmen
$dateigroesse = filesize($path);

echo "<br>$path hat folgende Größe: $dateigroesse<br />";


while ($line = fgets($fp)) {
$my_array = explode('|',$line,71);

echo "$line<br>";


// Text in die MySQL schreiben
include ("02check.php");
$sql = "INSERT INTO tabelle1 SET    feld06='$my_array[6]',
									feld05='$my_array[5]',
                                    feld04='$my_array[4]',
                                    feld03='$my_array[3]',
                                    feld02='$my_array[2]',
                                    feld01='$my_array[1]',
									feld00='$my_array[0]';";
if( mysql_query($sql)){
echo "Eingetragen!<br>";
}

}
fclose($fp);
?>

Kann mir da einer einen Hinweis geben wie ich da vorgehen muss?
Danke schon mal
Julia
 
1. Deine while Schleife hört in der Zeile
PHP:
$dateiname= $row['url'];
auf - Du überschreibst $dateiname solange, bis die Schleife beendet ist. Klar, der letzte Eintrag bleibt dann noch - das war's aber auch...

2. In der Config den funktionen fopen(); und file_get_contents(); erlauben, URLs aufzurufen. Dann einfach schauen was du machen willst und eine der Varianten hier wählen:
PHP:
$img1 = imagecreatefromjpeg($url);
imagejpeg($pfad);
PHP:
$img2 = file_get_contents($url);
file_put_contens($pfad);
Alternativ dazu gibt es in Curl noch interessante Methoden...

Greetz
Enum

PS: In der Config bzw. php.ini Datei muss stehen:
Code:
allow_url_fopen = On
 
Zuletzt bearbeitet:
Zurück