array in mail packen
tropenberta
- php
0 Steel0 sniper0 tropenberta0 Steel
0 tropenberta
hi leuts
wenn ich innerhalb einer schleife
echo"$y. ID: $fid[$y] Produkt: $produktname[$y] Preis: $produktpreis[$y]<br>";
bekomm ich so ne ausgabe:
1. ID:34 Produkt:xyz Preis:xyz
2. ID:101 Produkt:xyz Preis:xyz
3. ID:2 Produkt:xyz Preis:xyz
...
wie lange die liste ist hängt davon ab wieviele produkte ausgewählt wurden. kann von 1 bis 1000 sein ($y=1-1000). nachdem das letzte produkt erreicht ist wird die schleife verlassen.
jetzt möchte ich gerne den inhalt von den array´s $fid[], $produktname[] und $produktpreis[] so in einen mail befehl packen das es in der mail genauso erscheint wie bei der echo ausgabe.
lg micha
Hi!
jetzt möchte ich gerne den inhalt von den array´s $fid[], $produktname[] und $produktpreis[] so in einen mail befehl packen das es in der mail genauso erscheint wie bei der echo ausgabe.
Was genau ist denn Dein Problem dabei? Der Zeilenumbruch? "\n"
moin
danke für deine antwort steel.
das problem ist das ich nicht weis wie lange die arrays sind. bzw ich weis nicht wie ich
als erstes fid[1] produktname[1] produktpreis[1], dann als zweites fid[2] ...
ausgebe. in ner schleife könnte ich es, aber ich möchte ja nicht das die mail funktion öfters wiederholt wird. also müsste ich ne schleifen funktion machen die nur innerhalb der mail funktion die zahlen addiert.
bitte bedenkt das ich nicht mal ansatzweise die möglichkeiten von php kenne. bin dabei nach und nach mir php zu erschliesen.
mail ( schleife( fid[$x] ... ) )
LG
Micha
moin leuts
also hab mir folgendes überlegt:
$p = "1";
while ( $p < 1000 ){
if ( $fid == "" ){
break;
} else {
$bestellung = "$p. ID:$fid[$p] Produkt:$produktname Preis:$produktpreis<br>";
$p++;
}
}
echo "$bestellung";
schaut auch schonmal gut aus, aber hab jetzt diese ausgabe:
1. ID: 4. Produkt: xyz Preis: 2.50
2. ID: 7. Produkt: abc Preis: 2.90
3. ID: 8. Produkt: lop Preis: 3.50
999. ID: Produkt:Array Preis:Array
verstehe jetzt nicht ganz warum die 999. ausgegeben wird.
lg
micha
uups - sry.
mein vorheriger threat stimmt nicht - funktioniert doch noch nicht. ich hatte vergessen nen echo befehl raus zu nehmen.
$p = "0";
while ( $p < 1000 ){
if ( $fid == "" ){
break;
} else {
$bestellung = "$p. ID:$fid[$p] Produkt:$produktname Preis:$produktpreis<br>";
$p++;
}
}
echo "$bestellung";
hiermit bekomme ich diese ausgabe:
999. ID: Produkt:Array Preis:Array
also er überschreibt die variable. muss aber an den string dranhängen, erweitern.
geht doch irgendwie mit dem . oder ?
LG
micha
Moin,
warum so kompliziert?
$p = "0";
while ( $p < 1000 ){
Sind es immer genau 1000 Elemente? Warum greifst du nicht auf die Anzahl der Elemente direkt zu? Beispielsweise so:
for($p = 0; $p < sizeof($fid); $p++) {
...
}
else {
$bestellung = "$p. ID:$fid[$p] Produkt:$produktname Preis:$produktpreis<br>";
$p++;
}
Du kannst einfach an die Variable Bestellung anhängen. Das geht so:
$bestellung .= "$p. ID:$fid[$p] Produkt:$produktname Preis:$produktpreis\n";
Grüße Marco
hi marco
danke für deine antwort.
hab mir erstmal das mit dem anhängen angeschaut und habs jetzt mal so gemacht;
$p = "1";
while ( $p < 1000 ){
if ( $fid == "" ){
break;
} else {
$bestellung .= "$p. ID:$fid[$p] Produkt:$produktname[$p] Preis:$produktpreis[$p]<br>";
$p++;
}
}
echo "$bestellung";
bekomme jetzt die bestellung wie folgt ausgegeben:
1. ID: 13. Produkt: abc Preis: 6.00
2. ID: 14. Produkt: xyz Preis: 6.00
3. ID: Produkt: Preis:
4. ID: Produkt: Preis:
...
999.
was ich nicht versteh ist, ich sage doch wenn $fid leer ist steige aus der schleife aus.
macht aber anscheinend nicht.
lg
micha
Moin,
bekomme jetzt die bestellung wie folgt ausgegeben:
- ID: 13. Produkt: abc Preis: 6.00
- ID: 14. Produkt: xyz Preis: 6.00
- ID: Produkt: Preis:
- ID: Produkt: Preis:
...
Hättest du error_reporting auf "ALL" stehen würdest du auch haufenweise Fehler (oder zumindest Warnings) bekommen, da das Array ja offensichtlich nicht so viele Einträge hat.
was ich nicht versteh ist, ich sage doch wenn $fid leer ist steige aus der schleife aus.
macht aber anscheinend nicht.
Das liegt daran, dass du das ganze Array prüfst und nicht nur den aktuellen Satz. Das heißt, du musst in der Abfrage nicht nur $fid
prüfen (weil das ja nicht leer ist), sondern $fid[$p]
.
Aber ich habe schonmal darauf hingewiesen: Warum nimmst du nicht eine For-Schleife und gehst das Array durch? Das wäre IMHO die einfachste und effizienteste Variante.
Grüße Marco
Der Code den Du uns zeigst kann nicht mit dem Code übereinstimmen, der das gezeigte Ergebnis liefert. Nur auf die Sache mit der 999 kann ich Dir Auskunft geben:
Deine Abbruchbedingung greift nicht, weil ($fid == "") niemals wahr wird - es ist ja ein Array. Es greift also nur: while ( $p < 1000 ). Ergo ist p beim letzten Durchlauf gleich 999.
Bemühe Dich um fundiertes Wissen darüber, was Du tust - bevor versuchst einen Shop zu schreiben.
hi jörg
yo hab ich gemerkt. hab´s bissl umgeschrieben und macht jetzt was es soll.
$p = "1";
while ( $p < 1000 ){
if ( $fid[$p] == "" ){
break;
} else {
$bestellung .= "$p. ID:$fid[$p] Produkt:$produktname[$p] Preis:$produktpreis[$p]<br>";
$p++;
}
}
ich danke euch allen für die unterstützung.
lg
micha
Der Code den Du uns zeigst kann nicht mit dem Code übereinstimmen, der das gezeigte Ergebnis liefert. Nur auf die Sache mit der 999 kann ich Dir Auskunft geben:
Deine Abbruchbedingung greift nicht, weil ($fid == "") niemals wahr wird - es ist ja ein Array. Es greift also nur: while ( $p < 1000 ). Ergo ist p beim letzten Durchlauf gleich 999.
Bemühe Dich um fundiertes Wissen darüber, was Du tust - bevor versuchst einen Shop zu schreiben.
Hi!
Was ich nicht verstehe: Warum 1000? Mehr darf nicht? Du haettest das ganze Problem nicht gehabt, wenn die Obergrenze der Schleife die Arraygroesse waere, wie es dir hier vorgeschlagen wurde.
hi steel
yo ich weis schon - habs ja auch mittlerweile gelöst.
aber wenn ich jetzt die variable mit mail versende hab ich keinen umbruch mehr in der mail.
stattdessen sehe ich das <br> - logisch ist ja auch kein html bei der mail.
muss ich aber sauber aufgelistet bekommen.
lg
micha
aber wenn ich jetzt die variable mit mail versende hab ich keinen umbruch mehr in der mail.
stattdessen sehe ich das <br>
Du bekommst, was Du gibst. Ersetze den HTML-Zeilenumbruch ("<br>") durch das Text-Zeichen für den Zeilenumbruch. Innerhalb von doppelten Quotas ist das sehr einfach zu machen: "\n".
Ich warne immer noch davor, das Ergebnis Deiner Bemühungen online zu stellen. Obiges können so fast alle Programmiersprachen - deshalb glaube ich, dass Du gar keine Programmierkenntnisse hast. Wer aber solche grundlegenden Dinge nicht beherrscht macht sehr wahrscheinlich grobe Fehler welche im Endeffekt zu einer Angreifbarkeit oder Missbrauchsmöglichkeit des Servers führen.
hi jörg
du liegst mit deiner vermutung schon richtig.
das ist nur zum üben. bin momentan bissl am rum probieren.
danke dir aber für den hinweis und deine hilfe.
lg
micha
Hallo,
bin momentan bissl am rum probieren.
und wie schmeckt er? Schon high? :-)
*scnr*
Martin
^^
mag sein
Tja, mein Lieber,
jetzt möchte ich gerne den inhalt von den array´s $fid[], $produktname[] und $produktpreis[] so in einen mail befehl packen das es in der mail genauso erscheint wie bei der echo ausgabe.
Da musst Du Dich wohl oder übel mal mit dem MIME-Standard, Mutlipart-Messages befassen. Das läuft auf eine Entscheidung ob HTML-Mail oder ein druckbares Medium im Attachment, z.B. eine PDF-Datei.
Auch im ersten Fall wird das eine MIME-Mail, idealerweise als multipart/alternative, es ist der Sache Rechnung zu tragen, dass manche Email-Clients eben nicht HTML darstellen können oder deren Nutzer das untersagen.
Hast Du HTML oder PDF, so ist die Darstellung einer Rechnung oder eines Lieferscheins kein Thema mehr.
Hast Du PHP, so stehen Dir viele Möglichkeiten offen, recherchiere, was es in der Sache schon gibt und entwickle nebenher Dein Verständnis, das ist unumgänglich.
Gus
so leuts
hab noch ein kleines problem und zwar wenn ich die bestellung mit echo ausgebe habe ich die richtige form.
versende ich das ganze aber als mail ist die ausgabe in der mail anders. an der stelle wo in der variablen die <br> kommt wird kein umbruch gemacht sondern das br ausgegeben. habs auch mal mit /n probiert ist aber das gleiche.
würde aber gerne die ausgabe haben wie beim echo.
vermute mal das hat was damit zu tun oder:
$header = 'Content-type: text/plain; charset=UTF-8' . "\r\n";
denk mal das hat was mit dem content-type zu tun oder ?
wenn ich den auf html stelle klappt aber auch nicht.
lg
micha
Moin!
hab noch ein kleines problem und zwar wenn ich die bestellung mit echo ausgebe habe ich die richtige form.
versende ich das ganze aber als mail ist die ausgabe in der mail anders. an der stelle wo in der variablen die <br> kommt wird kein umbruch gemacht sondern das br ausgegeben. habs auch mal mit /n probiert ist aber das gleiche.
/ ist nicht gleich \
ja ich meine in der mail habe ich keinen umbruch und sehe /n.
will ich natürlich nicht - brauch nen umbruch.
lg
micha
sry
hab /n gemacht anstatt \n
jetzt gehts.
lg
micha
hi leuts
noch ne frage zu while und for schleifen.
es wird meistens die for schleife verwendet, zumindest in den beispielen die ich betrachte.
hat das einen grund ?
ne while schleife macht doch das gleiche, oder ?
bzw was ist der unterschied zwischen den beiden ?
lg
micha
Hallo,
es wird meistens die for schleife verwendet, zumindest in den beispielen die ich betrachte.
hat das einen grund ?
ne while schleife macht doch das gleiche, oder ?bzw was ist der unterschied zwischen den beiden ?
prinzipiell lassen sie sich ineinander überführen. Die for-Schleife vereinigt halt eine Initialisierung, eine Bedingung und z.B. eine Zählfunktion zentral im Schleifenkopf, während man bei der while-Schleife diese beiden Ausdrücke vor der Schleife bzw. am Ende des Schleifenrumpfs zusätzlich formulieren muss.
Klassisch wird eine for-Schleife verwendet, wenn die Anzahl der Schleifendurchläufe vorher bekannt ist und die Schleife im Grunde ein stures Durchzählen ist, während man die while-Schleife gern verwendet, wenn sich die Schleifenbedingung während des Durchlaufs immer wieder neu ergeben kann. Das ist aber nur eine Faustregel und kein Gesetz.
Ciao,
Martin
PS: Du plenkst. Das ist sehr unangenehm zu lesen.
danke für deine antwort martin.
lg
#micha