Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Insert in DB

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Ice Man
PostRank 9
PostRank 9
Beiträge: 2477
Registriert: 04.06.2003, 19:16

Beitrag von Ice Man » 22.11.2006, 15:27

Folgendes Problem.

Ich bekomme von einem PP immer eine Email, wenn jemand was in deren Shop bestellt hat. Früher hab ich das alles per Excel gemacht, da kamen 2-3 Mails pro Tag. Nun sind es paar mehr, und ich will das nun professioneller machen.

Meine Idee, alles über ne Mysql DB
Ich will ein Texteingabe Feld machen, da kopiere ich diese Einträge rein, und dann sind diese in der DB. Funktioniert auch bei nur einem Eintrag bestens. Aber zum Glück bestellen die Leute oft mehr, so das es mehr Kohle gibt :D

Beispiel

19.11.2006;DVD;Matrix Revolution;1;19.99;19.99;1.99
19.11.2006;DVD;irgendwas;2;10.00;20.00;2.00
.
.
.
Also

Datum|Art|Produkt|Anzahl|Einzelpreis|Gesamtpreis|Provision

Das Problem, wie sage ich dem Insert Script, Achtung neue Zeile.
Also wieder einfügen ?

Es geht bisher so
Aufsplitten des Strings in einzelne Komponenten
Dann insert in einzelne Spalten.
Klappt auch bei nur einer Zeile bestens, aber wie mach ich das bei 2 Zeilen, das jede Zeile einzeln in die DB kommt.

Also geht das überhaupt über das Text Eingabefeld
Als per

Code: Alles auswählen

<textarea type=\"text\"....
Ich bastle schon gut 60 min, aber irgendwie will der meine 2. Zeile nicht :D

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 22.11.2006, 15:37

poste doch mal den code den du bis jetzt zum einfügen verwendest...

Black Alpha
PostRank 1
PostRank 1
Beiträge: 26
Registriert: 28.10.2006, 19:30
Wohnort: Hannover

Beitrag von Black Alpha » 22.11.2006, 15:40

ja du kannst das über das textarea machen...
könntest z.B. dann die zeilen aufsplitten....
sind ja mit \n getrennt

kleine frage... was bedeutet PP?
...Ich bekomme von einem PP immer eine Email....

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Ice Man
PostRank 9
PostRank 9
Beiträge: 2477
Registriert: 04.06.2003, 19:16

Beitrag von Ice Man » 22.11.2006, 15:45

Code: Alles auswählen

## Aufsplitten 
$teile = explode&#40;';',$eintag&#41;;

## Eintragen in DB
$query2 = mysql_query&#40;"Insert into pp &#40;datum,typ,name,preis,prov&#41; VALUES &#40;'$teile&#91;0&#93;',$teile&#91;1&#93;',$teile&#91;2&#93;',$teile&#91;5&#93;',$teile&#91;6&#93;'&#41;"&#41;;
Das müste jetzt bestimmt in eine Schleife, damit das bei einer 2. oder 3. Zeile nochmal passiert.

PP = Partner Programm

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 22.11.2006, 15:49

sowas in der art dürfte es sein:

Code: Alles auswählen


## Aufsplitten
$zeilen = explode&#40;'\n',$eintag&#41;;

foreach &#40;$zeilen as $zeile&#41; &#123;

## Aufsplitten
$teile = explode&#40;';',$zeile&#41;;

## Eintragen in DB
$query2 = mysql_query&#40;"Insert into pp &#40;datum,typ,name,preis,prov &#41; VALUES &#40;'$teile&#91;0&#93;',$teile&#91;1&#93;',$teile&#91;2&#93;',$teile&#91;5&#93;',$teile&#91;6&#93;'&#41;"&#41;;

&#125;

Black Alpha
PostRank 1
PostRank 1
Beiträge: 26
Registriert: 28.10.2006, 19:30
Wohnort: Hannover

Beitrag von Black Alpha » 22.11.2006, 15:56

ich weiß nicht ob das so sinnvoll ist, für jeden eintrag ein neuen querry zu machen....

ich habe dir mal was rausgesucht...
so sollte es auch gehen:

Code: Alles auswählen

INSERT INTO tbl_name &#40;a,b,c&#41; VALUES&#40;1,2,3&#41;,&#40;4,5,6&#41;,&#40;7,8,9&#41;;
(1,2,3) ist dabei ein datensatz und (4,5,6) der nächste usw.

quelle:
dev.mysql.com/doc/refman/5.1/de/insert.html

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 22.11.2006, 16:05

stimmt dann also so,

Code: Alles auswählen

$zeilen = explode&#40;'\n',$eintag&#41;;
$sql = "Insert into pp &#40;datum,typ,name,preis,prov &#41; VALUES";

foreach &#40;$zeilen as $zeile&#41; &#123;
  $teile = explode&#40;';',$zeile&#41;;
  $sql .= " &#40;'$teile&#91;0&#93;',$teile&#91;1&#93;',$teile&#91;2&#93;',$teile&#91;5&#93;',$teile&#91;6&#93;'&#41;, ";
&#125; 

$sql = substr&#40;$sql, 0, -2&#41;;

mysql_query&#40;$sql&#41;;

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 22.11.2006, 16:19

pebosi hat geschrieben:stimmt dann also so,

Code: Alles auswählen

$zeilen = explode&#40;'\n',$eintag&#41;;
$sql = "Insert into pp &#40;datum,typ,name,preis,prov &#41; VALUES";

foreach &#40;$zeilen as $zeile&#41; &#123;
  $teile = explode&#40;';',$zeile&#41;;
  $sql .= " &#40;'$teile&#91;0&#93;',$teile&#91;1&#93;',$teile&#91;2&#93;',$teile&#91;5&#93;',$teile&#91;6&#93;'&#41;, ";
&#125; 

$sql = substr&#40;$sql, 0, -2&#41;;

mysql_query&#40;$sql&#41;;
wollte gerade sagen das du dann am Ende ein KOMMA hast aber das machst du ja mit substr weg .....
ich mach soche Sachen .....

Code: Alles auswählen


$trenner = ''; // trenner ist leer

schleife ..... bei mir sind es while
&#123;
  $content .= $trenner . "blablabla";
   $trenner = ',';
&#125; $content .= ';';
Also, ich ergänze den Trenner vorne nicht hinten .... und beim ertenmal ist der Trenner nicht vorhanden, für den 2ten Durchlauf wird er dann gestzt
.... und hier zum Abschluß noch den Semikolon anhängen ... der fehlt glaub bei dir noch

Ice Man
PostRank 9
PostRank 9
Beiträge: 2477
Registriert: 04.06.2003, 19:16

Beitrag von Ice Man » 22.11.2006, 16:28

@ pebosi

Irgendwie ist es immer noch alles eine zeile.

Ich hab mal '$teile[7]' verwendet, da kam das was eigentlich in Zeile 2 stehen soll.
Er sieht das wohl alles als eine komplette Zeile ?

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 22.11.2006, 16:40

Ice Man hat geschrieben:Er sieht das wohl alles als eine komplette Zeile ?
mach mal aus dem "mysql_query($sql); " ein "echo($sql);"
dann siehst du was abgeliefert wird.....

Ice Man
PostRank 9
PostRank 9
Beiträge: 2477
Registriert: 04.06.2003, 19:16

Beitrag von Ice Man » 22.11.2006, 16:44

Insert into pp (datum,typ,name,preis,prov ) VALUES ('2006..','xxxx','xxxxx','xxxxxx')

Also alles soweit richtig, aber ebend nur eine Zeile

Erhöhe ich die Zahlen bei Teile,
dann trägt er die 2. Zeile ein, aber nur die 2. Zeile

Ich denke er trennt die Zeilen nicht, und behandelt alles als eine.

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 22.11.2006, 16:49

hm die hochkommas sollte man noch korrigieren :)

probier das mal:

Code: Alles auswählen

$zeilen = explode&#40;'\n',$eintag&#41;;
$sql = "Insert into pp &#40;datum,typ,name,preis,prov &#41; VALUES";

foreach &#40;$zeilen as $zeile&#41; &#123;
  $teile = explode&#40;';',$zeile&#41;;
  $sql .= " &#40;'$teile&#91;0&#93;','$teile&#91;1&#93;','$teile&#91;2&#93;','$teile&#91;5&#93;','$teile&#91;6&#93;'&#41;,";
&#125;

$sql = substr&#40;$sql, 0, -1&#41;;

mysql_query&#40;$sql&#41;;

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 22.11.2006, 16:55

Code: Alles auswählen

$zeilen = explode&#40;'\n',$eintag&#41;;
echo &#40;"<br>#Zeilen ".count&#40;$zeilen&#41; &#41;;


foreach &#40;$zeilen as $zeile&#41; &#123;
  $teile = explode&#40;';',$zeile&#41;;
echo &#40;"<br>#Teile ".count&#40;$teile&#41; &#41;;
&#125;
was spricht er?

Ice Man
PostRank 9
PostRank 9
Beiträge: 2477
Registriert: 04.06.2003, 19:16

Beitrag von Ice Man » 22.11.2006, 16:57

ja, das hatte ich auch bemerkt, und vorhin schon bei mir geändert.

Es wird aber trotzdem nur eine Zeile ausgeben oder eingetragen.

Würde ich stat $teile[0] dieses $teile[7] nehmen, dann hab ich den beginn von Zeile 2.

Also ist alles in einem kompletten String.
Also das was eigentlich in der neuen Zeile sein sollte, hängt am Ende der 1. Zeile usw.

Also eine riesig lange Zeile.

Ich hab mal

echo "$eintag";
gemacht,
Auf der Seite ist nun alles hintereinander
aber im Quelltext sind die Zeilen schön getrennt.

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 22.11.2006, 16:58

pebosi hat geschrieben:hm die hochkommas sollte man noch korrigieren :)

probier das mal:

Code: Alles auswählen

$zeilen = explode&#40;'\n',$eintag&#41;;
$sql = "Insert into pp &#40;datum,typ,name,preis,prov &#41; VALUES";

foreach &#40;$zeilen as $zeile&#41; &#123;
  $teile = explode&#40;';',$zeile&#41;;
  $sql .= " &#40;'$teile&#91;0&#93;','$teile&#91;1&#93;','$teile&#91;2&#93;','$teile&#91;5&#93;','$teile&#91;6&#93;'&#41;,";
&#125;

$sql = substr&#40;$sql, 0, -1&#41;;

mysql_query&#40;$sql&#41;;

was für Hochkomma?



aber ....

$zeilen = explode('\n',$eintag);


dort müssen doppelteAnführungszeichen rein, damit aus dem \n ein NewLine wird

$zeilen = explode("\n",$eintag);

Antworten