Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Daten aus der csv per php in mysql [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Daten aus der csv per php in mysql


 
Stoner
18-12-2003, 11:23 
 
Ich hab nun schon tagelang gelesen und probiert,

habe ein Script gebastelt, das mir eine CSV-Datei per php in eine MySql-Datenbank eintragen soll. Die Datenbank ist vorhanden, die Tabelle auch, aber nix passiert, ich bekomme nicht mal eine Fehlermeldung.
<?
$link = mysql_connect ("localhost", "", "") or die ("keine Verbindung möglich<br>");
print ("Verbindung erfolgreich<br>");
$result = mysql_list_tables("abrechnung");
if (!$result)
{
$res = mysql_create_db("abrechnung");
if ($res)
{
print ("<br>Datenbank erfolgreich angelegt\n");
}
else
{
printf ("Fehler beim Anlegen der Datenbank: %s\n", mysql_error ());
}
}
else print ("<br>Datenbank schon vorhanden<br>");
while ($row = mysql_fetch_row($result))
{
print "Tabelle: $row[0]<br>";
}
$rows = 1;
$fp = fopen ("beispiel.csv","r");
$tab = ("LOAD DATA LOCAL INFILE $fp INTO TABLE 'affilinet' FIELDS TERMINATED BY ';' ");
if(!$tab)
{
print ("<br>ERROR");
}
else print ("<br>allet klar<br>");
fclose ($fp);
$fields = mysql_list_fields("abrechnung", "affilinet", $link);
$columns = mysql_num_fields($fields);
for ($i = 0; $i < $columns; $i++)
{
echo mysql_field_name($fields, $i) . "\n";;
}
$results = mysql_query("SELECT * FROM affilinet", $link);
$num_rows = mysql_num_rows($results);

echo "$num_rows Rows\n";
?>

auf dem Bildschirm erscheint folgende Meldung:

Verbindung erfolgreich

Datenbank schon vorhanden
Tabelle: affilinet

allet klar
Datum Nummer Status SubPartnerID Programm Lead/Sale Netto Prov-Wert Auszahlung
0 Rows

Womit klar ist, dass nix in die Datenbank eingetragen wird.
Kann mir jemand sagen, wo der Fehler liegt?

Gruß Stoner

 
muecke0815
18-12-2003, 11:30 
 
den teil solltest du dir mal anschauen:

$fp = fopen ("beispiel.csv","r");
$tab = ("LOAD DATA LOCAL INFILE $fp INTO TABLE 'affilinet' FIELDS TERMINATED BY ';' ");

hier wird ein dateihandle einer string-variablen zugeordnet. und ... nichts. kann ja nix passieren. $tab muß u.a. ausgeführt werden... den rest solltest du allein herauskriegen.

 
Seccho
18-12-2003, 11:34 
 
Hätte sonst gerade das zur Hand...

<?php
// Definition der Datenbanken und csv-Dateien

$db_MenuTitle[0] = "Eintrag 1"; // Bezeichnung des Eintrags - erscheint im Dropdown
$db_Hostname[0] = "192.168.1.99"; // Datenbank-Host (muss nicht zwingend immer localhost sein)
$db_UserName[0] = "root"; // Benutzername f&uuml;r diese Datenbank
$db_Password[0] = ""; // Zugehoeriges Passwort
$db_Database[0] = "test"; // Datenbank, auf die zugegriffen werden soll
$db_Table[0] = "auftraege"; // Table, in den die CSV-Datei &uuml;bertragen werden soll
$db_File[0] = "c:/programme/apache~1/apache/htdocs/imp/auftraege.txt"; // Verzeichnispfad zur Textdatei (CSV etc.) auf dem Webserver
$db_Terminated[0] = ";"; // Trennzeichen, das in der Textdatei verwendet wird

$select_db = 0;
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&ouml;schen
$del = "DELETE FROM ".$db_Table[$select_db];

// CSV-Datei in die Datenbank &uuml;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&uuml;hren
if (mysql_query ($del) and mysql_query ($sql)) {
$message = "&Uuml;bertragung erfolgreich";
}
else {
$message = "&Uuml;bertragung fehlgeschlagen. Grund: ". mysql_error ();
}
}
exit();
?>

 
muecke0815
18-12-2003, 11:48 
 
ja oder so :)

@Secco
ist
$select_db = 0;
if (isset ($select_db)) {
nicht irgendwie überflüssig?

und
if (mysql_query ($del) and mysql_query ($sql)) {
nicht etwas gefährlich? Schließlich können theoretisch doch daten eingepflegt werden ohne die tabelle vorher zu löschen...

 
Seccho
18-12-2003, 11:53 
 
@ muecke0815

Stimmt... ist jedoch nur ein scriptlet aus unserem Intranet (!) wenn hier jemand müll baut, dann schlag ich ihm den kopf ab :)

Sollte auch nur als Hilfe dastehn, nicht als fertiges script


Mahlzeit

 
muecke0815
18-12-2003, 11:55 
 
allet kloar. denke auch es sollte helfen den weg zu finden...

 
Stoner
18-12-2003, 12:35 
 
wow

 
Stoner
18-12-2003, 12:36 
 
wow :huep:
alles paletti, manchmal ist das brett vorm kopp doch recht dick
:rocks:

 
Seccho
18-12-2003, 12:39 
 
:) Danach sagen das alle


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:38 Uhr.