php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Sonstiges > Archiv / Trash
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Archiv / Trash Hier findet ihr alles, was aus anderen Foren verschoben wurde, weil es inhaltlich in keines der anderen Foren passt.

 
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-08-2006, 10:07
phpmännchen
 Junior Member
Links : Onlinestatus : phpmännchen ist offline
Registriert seit: Apr 2006
Beiträge: 74
phpmännchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard csv datei auslesen und speichern

Hallo Leute,

ich habe volgendes Problem!

ich habe eine csv Datei die so aufgebaut ist:

A B C D E F G H I

1 123 eee fds jad kzt aha bdy goi hed

2 123 eee fds jad kzt aha bdy goi hed

3 123 eee fds jad kzt aha bdy goi hed

4 123 eee fds jad kzt aha bdy goi hed

Also abcd... sind halt die spalten und 1234.... sind die zeilen.
In jeder Spalte steht was.


Meine SQL ist so aufgebaut:

--
-- Tabellenstruktur für Tabelle `artikel`
--

CREATE TABLE `artikel` (
`artikelnr` varchar(10) collate latin1_german2_ci NOT NULL,
`artikel` varchar(60) collate latin1_german2_ci NOT NULL,
`hersteller` varchar(30) collate latin1_german2_ci NOT NULL,
`herstellernr` varchar(60) collate latin1_german2_ci NOT NULL,
`eancode` varchar(30) collate latin1_german2_ci NOT NULL,
`warengruppe` varchar(30) collate latin1_german2_ci NOT NULL,
`netto` varchar(20) collate latin1_german2_ci NOT NULL,
`status` varchar(20) collate latin1_german2_ci NOT NULL,
`beschreibung` varchar(500) collate latin1_german2_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;

--
-- Daten für Tabelle `artikel`
--

Spalte A soll in artikelnr gespeichert werden
Spalte B in artikel
usw.
Ein datensatz steht in einer Zeile, D.H. die PHP soll jede
Zeile als einen Datensatz in die Datenbank abspeichern.

Hier mein PHP versuch:

So wird die csv zwar angezeigt aber nicht gespeichert.

PHP-Code:
<?php
include ("vars.php"); 

//liest dir deine datei in ein array "Funst glaube ich richtig"
$array file('artikel.csv'); 

//Array zeilenweise abarbeiten. "Geht"
foreach($array as $row

 
$fields=explode(';',$row); //teilt dir deine reihe in spalten auf - trenner =; 

// ab in die datenbank ? "hier komme ich nicht weiter"
$aendern "UPDATE artikel Set 1= '$artikelnr[0]', 2= '$artikel[1]', 3 
 '$fields[1]' WHERE art = '$fields[2]'\n"

$update mysql_query($aendern); 


//giebt aus... "Aber stimmt irgendwie noch nicht ganz"
 
echo "<b><br>erstes feld: ".$fields."<br></b>"
 
print_r($fields); 

  }  
?>
Habe schon alles mögliche ausprobiert, funst aber alles leider nicht.
Was mache ich falsch und wie kann ich diesen text oprimieren?

Ich bin ratlos, daher bitte ich Euch um hilfe.
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 31-08-2006, 10:25
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

du möchtest das mysql BULK INSERT feature benutzen.

PHP-Code:
$file_name 'path/to/file.csv';
$table_name 'artikel';
$query "LOAD DATA INFILE {$file_name} INTO TABLE {$table_name}
  FIELDS TERMINATED BY ' '  LINES TERMINATED BY '\n'"
;

mysql_query($query,$db) or die('OHA!');

// usw. 

Mehr kann man da nicht optimieren.

greets

//EDIT: den feldterminator auf dein format angepasst
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

Geändert von closure (31-08-2006 um 10:31 Uhr)
  #3 (permalink)  
Alt 31-08-2006, 10:29
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also das sieht mir nach Humbug aus
PHP-Code:
$aendern "UPDATE artikel Set 1= '$artikelnr[0]', 2= '$artikel[1]', 3 
 '$fields[1]' WHERE art = '$fields[2]'\n"

Du hast gar keine Felder mit Namen 1 oder 2 in artikel (zumindest nach deinem Post zu urteilen). Woher kommen denn die Vars $artikelnr und $artikel ?
Mach mal
PHP-Code:
$update mysql_query($aendern) OR die(mysql_error().'<br />'.$aendern); 
Sollte dir ein paar Fehlermeldungen um die Ohren werfen

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
  #4 (permalink)  
Alt 31-08-2006, 10:35
phpmännchen
 Junior Member
Links : Onlinestatus : phpmännchen ist offline
Registriert seit: Apr 2006
Beiträge: 74
phpmännchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jahlives
Also das sieht mir nach Humbug aus
PHP-Code:
$aendern "UPDATE artikel Set 1= '$artikelnr[0]', 2= '$artikel[1]', 3 
 '$fields[1]' WHERE art = '$fields[2]'\n"

Du hast gar keine Felder mit Namen 1 oder 2 in artikel (zumindest nach deinem Post zu urteilen). Woher kommen denn die Vars $artikelnr und $artikel ?
Mach mal
PHP-Code:
$update mysql_query($aendern) OR die(mysql_error().'<br />'.$aendern); 
Sollte dir ein paar Fehlermeldungen um die Ohren werfen

Gruss

tobi
Jo jetzt zeigt er mir im Explorer dieses hier an:

Unknown column 'art' in 'where clause'
UPDATE artikel Set artikelnr= '10047', artikel= 'Organizer ASUS ZUB Autoladegerät A636/A632', hersteller = 'ASUS' WHERE art = 'ASUS'

Aber er schreibt es nicht in die db.

code:
PHP-Code:
<?php
include ("vars.php"); 

//liest dir deine datei in ein array 
$array file('artikel.csv'); 

//Array zeilenweise abarbeiten. 
foreach($array as $row

 
$fields=explode(';',$row); //teilt dir deine reihe in spalten auf - trenner =; 

// ab in die datenbank 
$aendern "UPDATE artikel Set artikelnr= '$fields[0]', artikel= '$fields[1]',
hersteller = '$fields[2]' WHERE art = '$fields[2]'\n"

$update mysql_query($aendern) OR die(mysql_error().'<br />'.$aendern);

//machwas... 
// echo "<b><br>erstes feld: ".$fields."<br></b>"; 
 
print_r($fields); 

  }  
?>
Ja bei Hamburg.... :-)
  #5 (permalink)  
Alt 31-08-2006, 10:51
Guido
 Member
Links : Onlinestatus : Guido ist offline
Registriert seit: Jan 2001
Beiträge: 324
Guido ist zur Zeit noch ein unbeschriebenes Blatt
Guido eine Nachricht über ICQ schicken Guido eine Nachricht über AIM schicken
Standard

Deine CSV-Datei scheint ja mit TAB getrennt zu sein.
Wieso steht denn dort
PHP-Code:
$fields=explode(';',$row); 
anstatt
PHP-Code:
$fields=explode("\t",$row); 
?

Alternativ für einmalige / seltene Imports kann man aber auch DB-Verwaltungs-Software - wie Navicat (Kommerziel) oder Aqua Data Studio (frei bei nichtkommerziellem Einsatz) - verwenden.
Ich habe insbesondere mit sehr großen Dateien (die größte war ca. 500 MB) sehr gute Erfahrungen mit letzterer Software.
  #6 (permalink)  
Alt 31-08-2006, 10:52
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Unknown column 'art' in 'where clause'
Was verstehst du an dieser Fehlermeldung nicht ? Suche mal nach der Spalte art in deiner Tabelle. Findest du diese ?

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
  #7 (permalink)  
Alt 31-08-2006, 10:56
phpmännchen
 Junior Member
Links : Onlinestatus : phpmännchen ist offline
Registriert seit: Apr 2006
Beiträge: 74
phpmännchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jahlives
Was verstehst du an dieser Fehlermeldung nicht ? Suche mal nach der Spalte art in deiner Tabelle. Findest du diese ?

Gruss

tobi
Nein, die tabelle giebt es nicht! Habe ich auch schon geändert!
art is wech!

PHP-Code:
<?php
include ("vars.php"); 

//liest dir deine datei in ein array 
$array file('artikel.csv'); 

//Array zeilenweise abarbeiten. 
foreach($array as $row

 
$fields=explode("\t",$row); //teilt dir deine reihe in spalten auf - trenner =; 

// ab in die datenbank 
$aendern "UPDATE artikel Set artikelnr= '$fields[0]', artikel= '$fields[1]',
hersteller = '$fields[2]' WHERE artikelnr = '$fields[0]'\n"

$update mysql_query($aendern) OR die(mysql_error().'<br />'.$aendern);

//machwas... 
// echo "<b><br>erstes feld: ".$fields."<br></b>"; 
 
print_r($fields); 

  }  
?>
Habs jetzt so umgeändert aber er speichert immer noch nicht!
Ich werde wahnsinnig. Hmmm
  #8 (permalink)  
Alt 31-08-2006, 11:04
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Keine Fehlermeldungen mehr ?
Was ergibt ein var_dump($fields) ?
Ach ja und du hast doch bestimmt
PHP-Code:
error_reporting(E_ALL); 
am Anfang deines Scriptes so wie's in unseren Regeln steht ?

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
  #9 (permalink)  
Alt 31-08-2006, 11:05
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Hör auf mit so "Fehlermeldungen" wie
Zitat:
er speichert immer noch nicht!
Damit kann man nicht arbeiten!

Poste Queries, Fehlermeldungen, etc. Error_reporting? (warum frag ich eigentlich immer wieder?)
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
  #10 (permalink)  
Alt 31-08-2006, 11:09
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
Leute, es war doch schon Zeitverschwendung, sich mit dieser Person zu beschäftigen, als sie sich noch adeno4you nannte ...
Auch da konnte man dutzende Male sagen, E_ALL benutzen, vernünftige Problembeschreibungen liefern, etc. - und im nächsten Thread ging dann wieder alles von vorne los.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
  #11 (permalink)  
Alt 31-08-2006, 11:10
phpmännchen
 Junior Member
Links : Onlinestatus : phpmännchen ist offline
Registriert seit: Apr 2006
Beiträge: 74
phpmännchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von TobiaZ
Hör auf mit so "Fehlermeldungen" wie Damit kann man nicht arbeiten!

Poste Queries, Fehlermeldungen, etc. Error_reporting? (warum frag ich eigentlich immer wieder?)
Ok ok,
werd ich mahen.

Aber das speichern is halt mein problem!

Werd es mal ganz umschreiben!
Mal sehen was er mir ausgiebt
  #12 (permalink)  
Alt 31-08-2006, 11:12
phpmännchen
 Junior Member
Links : Onlinestatus : phpmännchen ist offline
Registriert seit: Apr 2006
Beiträge: 74
phpmännchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von wahsaga
OffTopic:
Leute, es war doch schon Zeitverschwendung, sich mit dieser Person zu beschäftigen, als sie sich noch adeno4you nannte ...
Auch da konnte man dutzende Male sagen, E_ALL benutzen, vernünftige Problembeschreibungen liefern, etc. - und im nächsten Thread ging dann wieder alles von vorne los.
Was soll das denn jetzt schon wieder?

Ich bin nicht all4you und werde es auch nie sein!
Verstehst Du das nicht ?
Ich und all4you "den Du ja gesperrt hast weil keine Ahnung"
sind zwei verschiedene Persohnen die sich unter dem Nahmen unseres Chefs angemeldet haben weil er es so wollte!
OK?

Also ich bin ich "PHPMÄNSCHEN" und "ALL4YOU" ist
ein Kolege!
  #13 (permalink)  
Alt 31-08-2006, 11:13
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von phpmännchen
Also ich bin ich "PHPMÄNSCHEN" und "ALL4YOU" ist
ein Kolege!
Wie auch immer - trotzdem absolut eine Liga.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
  #14 (permalink)  
Alt 31-08-2006, 11:18
phpmännchen
 Junior Member
Links : Onlinestatus : phpmännchen ist offline
Registriert seit: Apr 2006
Beiträge: 74
phpmännchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von wahsaga
Wie auch immer - trotzdem absolut eine Liga.
Was hast Du eigentlich gegen mich oder all4you?
Das verstehe wer will. Deine willkühr all4you und
jetzt auch mir steine in den weg zu legen ist echt
nicht fair. Ich bin Anfänger und vergesse ab und dann mal
was, was ist denn so schlimm mich einfach darauf
hinzuweisen? Andere machen das auch und wie man sehen kann setzte ich es auch um. Nein Du schreibst immer solche äusserungen
wie oben und hast eigentlich doch keinen grund dazu!

Aber egal Du bist so wie Du bist!
  #15 (permalink)  
Alt 31-08-2006, 11:20
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von phpmännchen
Ich bin Anfänger und vergesse ab und dann mal
was, was ist denn so schlimm mich einfach darauf
hinzuweisen?
Warum muss man dich immer wieder auf das gleiche hinweisen?

Wenn du ein Gedächtnis wie ein Sieb hast - dann schreib dir die wichtigen Punkte halt irgendwo auf.
Oder lies die Regeln des Forums, vor jedem neuen Posting, welches du machst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
 

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:30 Uhr.