CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
29.09.2005, 17:56:39
|
Junior Member
|
|
Registriert seit: Feb 2005
Beiträge: 181
|
|
$_POST daten fehlen
Ich habe ein Bestellformular, welches die Daten so bekommt:
PHP-Code:
foreach($user_cart->items as $key => $row) {
print '<input type="hidden" name="Schriftzug " value= " ' . $key . '">';
print '<input type="hidden" name="Menge " value= "' . $row['qty'] . '">';
print '<input type="hidden" name="Schriftart " value= "' . $row['product'] . '">';
print '<input type="hidden" name="Farbe " value= "' . $row['color'] . '">';
print '<input type="hidden" name="Fett " value= "' . $row['fett'] . '">';
print '<input type="hidden" name="Kursiv " value= "' . $row['kursiv'] . '">';
print '<input type="hidden" name="Gesamtlaenge " value= "' . $row['laenge'] . '">';
Nun hatte ich es per mailto versendet, wo auch bei mehreren Artikeln im Korb diese untereinander standen.
Nun will ich es aber anders lösen, aber wenn ich
echo '<pre>';
print_r($_POST);
echo '</pre>';
abrufe, dann zeigt es nur den letzten Artikel an. Wieso ist das so?
Kann ich das anders lösen?
|
29.09.2005, 18:35:32
|
|
Member
|
|
Registriert seit: Mar 2002
Ort: Port 80, localhost-city, 127/0/0/1
Beiträge: 878
|
|
AW: $_POST daten fehlen
Nunja, die lösung ist einfach: Es zeigt nur den letzten an, weil du für jedes objekt in deinem einkaufswagen die werte in die selbe variable speicherst - du überschreibst die werte also ständig. der letzte wert, der den vorigen überschrieben hat ist der, der am ende bleibt.
Eine simple lösung wäre beispielsweise, die werte so anzugeben:
Code:
print '<input type="hidden" name="Schriftzug[]" value= " ' . $key . '">';
dann werden alle werte für Schriftzug in einem array gespeichert...
Alternativ könntest du in deiner schleife auch noch eine Variable hochzählen:
PHP-Code:
$i=0;
foreach($user_cart->items as $key => $row) {
print '<input type="hidden" name="Schriftzug'.$i.'" value= " ' . $key . '">';
# und so weiter...
$i++;
}
Bedenke aber, dass Bestellformulare und Shopsysteme mit realem geld zu tun haben und es eine menge bösartiger Menschen im Internet gibt, die nur auf ein schlecht programmiertes Shopsystem warten, um sich zu bereichern, oder 20.000 Mountainbikes auf kosten eines anderen Benutzers zu bestellen.
Mal ganz ehrlich: Würdest du bei Amazon kaufen, wenn du wüsstest, dass das System von einem Praktikanten (oder jemand anderem mit wenig ahnung) programmiert wurde?
Ich will dich jetzt nicht falsch einschätzen, aber das war ein ziemliches anfängerproblem - und auch wenn du sonst perfekt programmieren kannst - webprogrammierung ist etwas anders - vor allem was den sicherheitsaspekt betrifft! (Vergiss vor allem nicht die moralische Anforderung an einen Händler gegenüber seiner Kunden, die erwarten, dass sie mit absoluter sicherheit und vertraulichkeit rechnen können)
|
29.09.2005, 18:36:58
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
AW: $_POST daten fehlen
Die zwei rettenden Zeichen sind sicher [ und ]
Zeig mal das Formular und etwas mehr Code.
|
29.09.2005, 20:03:15
|
Junior Member
|
|
Registriert seit: Feb 2005
Beiträge: 181
|
|
AW: $_POST daten fehlen
Die ganze Form:
PHP-Code:
print '<form action="mailto:test@test.de" method="post" enctype="text/plain">';
foreach($user_cart->items as $key => $row) {
print '<input type="hidden" name="Schriftzug " value= " ' . $key . '">';
print '<input type="hidden" name="Menge " value= "' . $row['qty'] . '">';
print '<input type="hidden" name="Schriftart " value= "' . $row['product'] . '">';
print '<input type="hidden" name="Farbe " value= "' . $row['color'] . '">';
print '<input type="hidden" name="Fett " value= "' . $row['fett'] . '">';
print '<input type="hidden" name="Kursiv " value= "' . $row['kursiv'] . '">';
print '<input type="hidden" name="Gesamtlaenge " value= "' . $row['laenge'] . '">';
}
print '<tr><td>
<input type="radio" name="Spiegelverkehrt" value="nein" checked>Normal<br>
<input type="radio" name="Spiegelverkehrt" value="Ja">innen<br></td></tr>
<tr><td> </td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA"><h5>Bitte senden an:</h5></font></td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA">Nachname:</font></td><td><input name="Nachname"></td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA">Vorname:</font></td><td><input name="Vorname"></td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA">Forum Nick:</font></td><td><input name="Nickname"></td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA">Strasse:</font></td><td><input name="Strasse"></td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA">PLZ:</font></td><td><input name="PLZ"></td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA">ORT:</font></td><td><input name="Ort"></td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA">LAND:</font></td><td><input name="Land"></td></tr>
<tr><td><font face="VERDANA,ARIAL,HELVETICA">Versand:</font></td><td>
<select name="Versand">
<option value="Post 2 EUR" checked>Deutschland 2 EUR</option>
<option value="Post 2 EUR" >Europa 3,50 EUR</option>
<option value="Post 2 EUR" >Welt 5,00 EUR</option>
<option value="Abholung">Hole ich ab</option>
<option value="Sammelbestellung">Sammelbestellung**</option>
</select>
</td></tr><tr><td><font face="VERDANA,ARIAL,HELVETICA">Sammelcode</font></td><td><input name="Sammelcode"><br>
** Nur bei Sammelbestellung<br>(Den Code anfragen)</td></tr>
<tr><td><INPUT type="submit" value="Absenden">
</tr></table>';
Bei der Lösung:
PHP-Code:
print '<form action="bezahl.php" method="post">';
und in der bezahl.php ist drin:
PHP-Code:
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
Dann kommt nur de letzte Artikel.
Bei mailto kommen alle.
@Matt
Das Sicherheitsproblem ist mir bekannt, allerdings ist das für ein Forum, und deswegen ist betrug eigentlich ausgeschlossen. Aber THX für Deine Besorgnis
|
29.09.2005, 20:05:51
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
AW: $_POST daten fehlen
Was sollen denn diese Leerzeichen bei den Feldnamen (name="Schriftzug ")?
Ändere diese mal so ab: name="Schriftzug[]" und dann schau Dir $_POST nochmal an.
|
30.09.2005, 10:33:46
|
Junior Member
|
|
Registriert seit: Feb 2005
Beiträge: 181
|
|
AW: $_POST daten fehlen
Das sieht schon gut aus.
PHP-Code:
Array
(
[Schriftzug] => Array
(
[0] => test1
[1] => test2
)
[Menge] => Array
(
[0] => 1
[1] => 1
)
.
.
.
Kann ich die Ausgabe der Bestellungen denn nun irgendwie formatieren?
also das ich einen zusammenhängenden text bekomme?
Also so in der Art:
Schriftzug1 test1 Menge 1 ...
Schriftzug2 test2 Menge1 ...
|
30.09.2005, 11:41:08
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: $_POST daten fehlen
Einfach die Arrays mit foreach durchlaufen:
PHP-Code:
<?php
foreach($_POST['Menge'] as $key => $data) {
printf('Schriftzug%d %s Menge %d', $key + 1, $_POST['Schriftzug'][$key], $_POST['Menge'][$key]);
}
?>
|
30.09.2005, 12:34:01
|
Junior Member
|
|
Registriert seit: Feb 2005
Beiträge: 181
|
|
AW: $_POST daten fehlen
Das klappt.
Wenn ich aber alle Daten haben möchte:
PHP-Code:
foreach($_POST['Menge'] as $key => $data) {
printf('Schriftzug%d %s Menge %d %s Schriftart %d
%s Farbe %d %s Kursiv %d %s Gesamtlaenge %d %s Spiegelverkehrt %d',
$key + 1, $_POST['Schriftzug'][$key], $_POST['Menge'][$key], $_POST['Schriftart'][$key],
$_POST['Farbe'][$key], $_POST['Kursiv'][$key], $_POST['Gesamtlaenge'][$key],
$_POST['Spiegelverkehrt'][$key]);
}
Dann kommt das hier:
Warning: printf(): Too few arguments in /srv/www/htdocs/.....
|
30.09.2005, 13:06:57
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: $_POST daten fehlen
Du definierst mit %d und %s mehr Platzhalter als du letztendlich an Argumenten übergibst. Warum bentutzt du zum Beispiel d bei Farbe und Schriftart?
|
30.09.2005, 13:46:10
|
Junior Member
|
|
Registriert seit: Feb 2005
Beiträge: 181
|
|
AW: $_POST daten fehlen
Kann ich da denn beliebige Platzhalter nehmen, oder wie definiere ich das?
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:37:01 Uhr.
|