CSV to MySQL Problem

Radhad

Erfahrenes Mitglied
Hallo Zusammen!

Wie der Name sagt habe ich da ein Problem, undich vermute mal es handelt sich um den Upload. Das habe ich leider bisher nicht verstanden wie das funktioniert und wäre für jede Hilfe dankbar, wenn mir das jemand verständlich erklären kann wie das funktioniert.

Der User soll eine CSV Datei auswählen, und diese soll dann direkt in eine Datenbank geschrieben werden. Anbei natürlich der Code :)
PHP:
<?php
  include("dbconnection.php");
  if (empty($_POST["csv"])) { ?>
    <form  method="post" action="csvimport.php">
    CSV-Datei: <input type="file" name="csv"><br>
    <input type="submit" value="Absenden">
    </form>
<?php
  }
  else {
    $handle = fopen ($_FILES['csv']['tmp_name'],"r");
    while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) {
      mysql_connect($host,$user,$password);
      $sqlinsert = "INSERT INTO mail (Anrede, Name, eMail) VALUES ('$data[0]','$data[1]','$data[2]');";
      mysql_select_db($dbname);
      mysql_query($sqlinsert);
    }
    fclose ($handle);
  }
?>


MfG Radhad
 
Fehler? Sorry meine Kristallkugel hab ich grad verliehen ...

Dinge, die ich ändern würde (seh ich nicht als Fehlerquelle):
  • Wozu verbindest du doppelt zur DB?! Einmal mit der dbconnection.php und dann nochmal extra.
PHP:
$sqlinsert = "INSERT INTO `mail` (Anrede, Name, eMail) VALUES ('".$data['0']."','".$data['1']."','".$data['2']."');";
 
In der dbconnection.php stehen zur Zeit nur die Variablen als Test, ist noch nicht wirklich optimiert. Die INSERT-Anweisung wrdei ch dementsprechend ändern.


MfG Radhad
 
Ahso, hab ich ja garnicht geschrieben..

Die Daten kommen nicht in die DB. Er zeigt nach dem ausführen "Die Seite kann nicht angezeigt werden" an.

Tabellenstruktur:
ID int Primärschlüssel AutoIncrement
Anrede varchar
Name varchar
eMail varchar
 
Ich denke mal das der Upload einfach nicht funktioniert. Versuche mal
Code:
 <form  method="post" action="csvimport.php" enctype="multipart/form-data">
   <input type="hidden" name="MAX_FILE_SIZE" value="50000"> 
    CSV-Datei: <input type="file" name="csv"><br>
    <input type="submit" value="Absenden">
  </form>
ohne enctype im Formular wird der Upload nicht arbeiten.


bye

//edit: die Action stimmt aber? also dein File heißt auch "csvimport.php"?
 
Probiers doch mit Selfdebugging und lass dir testweise
die Werte von $data via print_r($data) ausgeben, dann
kannst du schauen ob die CSV Datei ordungsgemäß
eingelesen wird oder nicht etc.

//edit: Gnarf, so ein blöder Fehler - auf sowas acht ich
schon gar nicht mehr :rolleyes:
 
Ich habde das enctype hinzugefügt, und auch das print_r($data), jetzt komme ich am Ende bei der csvimport.php Datei raus, aber es wird mein Testdatensatz nicht angezeigt und auch nicht in die DB geschrieben.

"action" ist richtig.
 
Dann lass Dir zum Beispiel mal Dein sql-Statement ausgeben. Da schlummert vielleicht der Fehler. Und wenn Du nach mysql_query() noch Fehler abfängst, kriegste eventuell sogar ne Fehlermeldung. Probier mal, ob Dir das weiterhilft!

PHP:
$sqlinsert = "INSERT INTO mail (Anrede, Name, eMail) VALUES ('".$data[0]."','".$data[1]."','".$data[2]."');"; 
echo($sqlinsert);
      mysql_select_db($dbname); 
      mysql_query($sqlinsert) or die(mysql_error());
 
Oder könnte das PRoblem daher kommen, dass ich die CSV-Datei Included habe auf meiner Index Seite? Müsste ich dann "action" statt auf csvimport.php auf index.php?action=2 setzen?

EDIT: Nützt auch nichts... Öffne ich das halt in einem neuen Fenster ;)

Die connection zur DB muss nicht geschlossen werden, oder?
 
Zuletzt bearbeitet:
Zurück