Hi, ich habe folgendes Problem:
Mit dem untenstehenden Script lese ich aus einer *.csv-Datei Zeile für Zeile aus, und füge diese dann in die Tabelle 'ecdl'.
Klappt alles wunderbar.
Mein Problem ist jetzt, dass jeder Datensatz (Zeile) nur einmal in der DB vorhanden sein darf. Das Script soll also, bei jedem durchlauf der while-Schleife, das Array welches die Inhalte der CSV-Datei beinhaltet mit ALLEN Zeilen der Datenbankeinträge vergleichen. Wenn ein Datensatz mit einem aus der DB übereinstimmt, soll dieser übersprungen werden.
Ich habe es eben mit einer 2. Whileschleife in der aktuellen probiert. Die befindet sich in der unten aufgeführten Schleife. Das "$a"-Array wird bei jedem durchlauf der 2. Schleife mit jeder Zeile in der DB verglichen. Bei übereinstimmung wird es übersprungen, andernfalls eingetragen.
Das Problem dabei ist nur, dass die 2. Whileschleife nur so oft durchgelaufen wird, solange sich Datensätze in der Tabelle befinden. Und da sich die INSERT INTO Anweisung eben in dieser 2. Schleife befindet, werden auch nur höchstens die Anzahl von Datensätzen eingetragen, die sich in der DB befinden.
Das ist jetzt das derzeitige Script, ohne die 2. While-Schleife.
Ich hoffe ihr könnt mir helfen, und habt mich auch verstanden. Denn das Script eilt.
Mit dem untenstehenden Script lese ich aus einer *.csv-Datei Zeile für Zeile aus, und füge diese dann in die Tabelle 'ecdl'.
Klappt alles wunderbar.
Mein Problem ist jetzt, dass jeder Datensatz (Zeile) nur einmal in der DB vorhanden sein darf. Das Script soll also, bei jedem durchlauf der while-Schleife, das Array welches die Inhalte der CSV-Datei beinhaltet mit ALLEN Zeilen der Datenbankeinträge vergleichen. Wenn ein Datensatz mit einem aus der DB übereinstimmt, soll dieser übersprungen werden.
Ich habe es eben mit einer 2. Whileschleife in der aktuellen probiert. Die befindet sich in der unten aufgeführten Schleife. Das "$a"-Array wird bei jedem durchlauf der 2. Schleife mit jeder Zeile in der DB verglichen. Bei übereinstimmung wird es übersprungen, andernfalls eingetragen.
Das Problem dabei ist nur, dass die 2. Whileschleife nur so oft durchgelaufen wird, solange sich Datensätze in der Tabelle befinden. Und da sich die INSERT INTO Anweisung eben in dieser 2. Schleife befindet, werden auch nur höchstens die Anzahl von Datensätzen eingetragen, die sich in der DB befinden.
Das ist jetzt das derzeitige Script, ohne die 2. While-Schleife.
PHP-Code:
<?
function add_csv($userfile)
{
$fp = fopen($userfile,'r');
while ($a = fgetcsv($fp, 2000, ";"))
{
if(count($a)>=0)
{
$imp_records = array('datum'=>$a[0],'tmp'=>$a[1],'tester'=>$a[2],
'cardid'=>$a[3],'schueler'=>$a[4],'modul'=>$a[5],'erg'=>$a[6]);
$result = db_query("insert into ecdl
(datum, tmp, tester, cardid, schueler, modul, erg)
values ('$a[0]','$a[1]','$a[2]','$a[3]','$a[4]',
'$a[5]','$a[6]')") or db_die();
}
}
}
?>
Kommentar