csv in sql übertragen
sohlbach
- php
findet hier jemand noch einen Fehler? ich kann die entsprechende Datei im dropdown auswählen aber wenn ich auf übertragen klicke, passiert nichts. keine Meldung oder Übertragung in DB. zugangsdaten stimmen auch. an $select_DB wird auch der wert übergeben aber funktionieren tuts doch nicht.
vielleicht liegt der Fehler in der csv Datei? ist da noch was zu beachten? in der 1. Zeile hab ich die tabellenfelder und in den weiteren zeilen die dazugehörigen werte.
danke schon mal!!!
<?php
// Definition der Datenbanken und csv-Dateien
$db_MenuTitle[0] = "Begegnungen"; // Bezeichnung des Eintrags - erscheint im Dropdown
$db_Hostname[0] = "localhost"; // Datenbank-Host (muss nicht zwingend immer localhost sein)
$db_UserName[0] = "xxx"; // Benutzername für diese Datenbank
$db_Password[0] = "xxx"; // Zugehoeriges Passwort
$db_Database[0] = "tippspielv01"; // Datenbank, auf die zugegriffen werden soll
$db_Table[0] = "spieltag"; // Table, in den die CSV-Datei übertragen werden soll
$db_File[0] = "Spieltag.csv"; // Verzeichnispfad zur Textdatei (CSV etc.) auf dem Webserver
$db_Terminated[0] = ";"; // Trennzeichen, das in der Textdatei verwendet wird
$db_MenuTitle[1] = "Tipps";
$db_Hostname[1] = "localhost";
$db_UserName[1] = "xxx";
$db_Password[1] = "xxx";
$db_Database[1] = "tippspielv01";
$db_Table[1] = "tipps";
$db_File[1] = "tipps.csv";
$db_Terminated[1] = ";";
$db_MenuTitle[2] = "Benutzer";
$db_Hostname[2] = "localhost";
$db_UserName[2] = "xxx";
$db_Password[2] = "xxx";
$db_Database[2] = "tippspielv01";
$db_Table[2] = "benutzer";
$db_File[2] = "benutzer.csv";
$db_Terminated[2] = ";";
//$db_MenuTitle[3] = "";
//$db_Hostname[3] = "localhost";
//$db_UserName[3] = "";
//$db_Password[3] = "";
//$db_Database[3] = "";
//$db_Table[3] = "";
//$db_File[3] = "";
//$db_Terminated[3] = ";";
//$db_MenuTitle[4] = "";
//$db_Hostname[4] = "localhost";
//$db_UserName[4] = "";
//$db_Password[4] = "";
//$db_Database[4] = "";
//$db_Table[4] = "";
//$db_File[4] = "";
//$db_Terminated[4] = ";";
//$db_MenuTitle[5] = "";
//$db_Hostname[5] = "localhost";
//$db_UserName[5] = "";
//$db_Password[5] = "";
//$db_Database[5] = "";
//$db_Table[5] = "";
//$db_File[5] = "";
//$db_Terminated[5] = ";";
if (isset ($select_db)) {
// Connect zur Datenbank
mysql_connect($db_Hostname[$select_db], $db_UserName[$select_db], $db_Password[$select_db]) || die("Can't Connect to Database: ".mysql_error());
mysql_select_db($db_Database[$select_db]);
// Bisherige Daten aus der Datenbank löschen
$del = "DELETE FROM ".$db_Table[$select_db];
// CSV-Datei in die Datenbank übertragen
$sql = "LOAD DATA INFILE '$db_File[$select_db]' REPLACE INTO TABLE ".$db_Table[$select_db]." FIELDS TERMINATED BY '$db_Terminated[$select_db]'";
// MySQL-Statements ausführen
if (mysql_query ($del) and mysql_query ($sql)) {
$message = "Übertragung erfolgreich";
}
else {
$message = "Übertragung fehlgeschlagen. Grund: ". mysql_error ();
}
}
// Generierung des DropDown-Menues
function generate_dropdown () {
global $db_MenuTitle, $db_Hostname, $db_UserName, $db_Password, $db_Table, $db_File, $db_Terminated;
if (is_array ($db_MenuTitle)) {
reset ($db_MenuTitle);
while (list ($key, $val) = each ($db_MenuTitle)) {
echo "<option value="".$key."">".$val."</option>";
}
}
}
?>
<html>
<head>
<title>Admin</title>
</head>
<body bgcolor="#EAEAEA">
<form action="<?php echo $PHP_SELF; ?>" method="POST">
<table border="0" cellspacing="0" cellpadding="5" bgcolor="#C0C0C0" width="50%">
<tr>
<th>CSV übertragen</th>
<th> </th>
</tr>
<tr valign="bottom">
<td>
<select name="select_db" size="<?php echo count ($db_MenuTitle); ?>">
<?php generate_dropdown (); ?>
</select>
</td>
<td>
<input type="Submit" name="submit" value="submit">
</td>
</tr>
</table>
</form>
{:.language-php}
echo $message; ?></p>
</body>
</html>
Hallo,
findet hier jemand noch einen Fehler?
einen? Viele!
[...] aber funktionieren tuts doch nicht.
das ist keine Fehlerbeschreibung, siehe Zitat 1438.
[...] viel überflüssiger Code gelöscht.
// Connect zur Datenbank
mysql_connect($db_Hostname[$select_db], $db_UserName[$select_db], $db_Password[$select_db]) || die("Can't Connect to Database: ".mysql_error());
Ja, ich weiß: es ist ein Skript nur für einen Admin. Dennoch ist die() keine besonders hübsche Fehlerbehandlung, siehe Zitat 1282
mysql_select_db($db_Database[$select_db]);
// Bisherige Daten aus der Datenbank löschen
$del = "DELETE FROM ".$db_Table[$select_db];
TRUNCATE zu nutzen wäre eine bessere Idee.
// CSV-Datei in die Datenbank übertragen
$sql = "LOAD DATA INFILE '$db_File[$select_db]' REPLACE INTO TABLE ".$db_Table[$select_db]." FIELDS TERMINATED BY '$db_Terminated[$select_db]'";
// MySQL-Statements ausführen
Warum HTML-Entities in PHP-Code-Kommentaren? Sinnlos!
if (mysql_query ($del) and mysql_query ($sql)) {
$message = "Übertragung erfolgreich";
Führe die Statements einzeln aus.
Prüfe den Erfolg!
Freundliche Grüße
Vinzenz