online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Uesch vom 21.03.2019, 21:04 Options

Warenkorb

Hallo allerseits,

ich habe mal versucht, auf der Basis von Cookies einen Warenkorb zu erstellen. Nun habe ich aber das Problem, dass, wenn jemand auf "Warenkorb" klickt, sich der Warenkorb automatisch (wäre besser) oder per Mausklick auf einen Button aktualisiert. Habe folgendes versucht, aber funzt nicht. Kann mir jemand sagen, warum?

Gruß, Üsch


Zitat:
<?php

echo "Hallo Herr " . $HTTP_COOKIE_VARS["vorname"];
echo " " . $HTTP_COOKIE_VARS["nachname"];
echo ", Sie haben folgendes zu Ihrem Warenkorb hinzugefügt:<br/><br/>" . $HTTP_COOKIE_VARS["anzahl"];
echo " " . $HTTP_COOKIE_VARS["bestellung"];

if ($HTTP_POST_VARS ["refresh"]) {
header( "location: $PHP_SELF?" );
}
?>
<input type="button" value="Refresh" name="refresh">


Antwort schreiben

Antwort 1 von helfer_001 vom 21.03.2019, 21:25 Options

ich fang zwar selber erst an mit php aber soweit ich weiß braucht man da noch einen form-tag um den input.
Oder geht das auch ohne?

ich wür mal versuchen im form tag zu aktualisieren:

<form action="$PHP_SELF" method="POST">
<input type="button" value="Refresh" name="">
</form>


das müsste es eigentlich erledigen (aßer ich hab mich vertippt^^)


aber ich würde den Warenkorb eher mit sessions machen statt mit cookies, das ist doch viel einfacher...

Antwort 2 von helfer_001 vom 21.03.2019, 21:41 Options

nein das PHP_SELF muss ja im php ausgeführt erden also so ungefähr:

<form action=" <?php echo $PHP_SELF; ?>" method="POST">
<input type="button" value="Refresh" name="">
</form>


so müsste es gehen ...
kanns leider derzeit nicht ausprobieren sry

Antwort 3 von Uesch vom 23.03.2019, 16:59 Options

Danke erstmal, aber funzt leider trotzdem nicht :(

Antwort 4 von rabies vom 23.03.2019, 17:23 Options

Dass das oben gezeigte Script-Snippet nicht funktioniert, kann verschiedene Gründe haben, zum einen verwendest Du keine Superglobalen Variablen, diese sind seit Version 4.1.x in PHP vorhanden, und sollten auch genutzt werden. Ich mutmaße, dass auf Deinem Webspace/Server eine neuere Version von PHP installiert ist, als eine 4.1.x.

Dementsprechend solltest Du auf Cookie-Variablen via
$_COOKIE
zugreifen.

Beispiel:
$_COOKIE['nachname']



Außerdem gibst Du einem input-Button ein
name-
und
value-
Attribut mit, das ist keine saubere Lösung, ob das die gängigen Browser überhaupt interpretierten, kann ich nicht sagen. Es ist ohnehin falsch. Wenn man Variablen setzen möchte, die allerdings nicht ersichtlich im Browser auftauchen sollen, sollte man das über
<input type="hidden" name="Variablenname" value="Wert"/>
tun.

Eine saubere Lösung wäre:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
	<input type="hidden" name="refresh" value="1"/>
	<input type="submit" value="Refresh"/>
</form>


Grüße,
rabies.

Antwort 5 von Uesch vom 23.03.2019, 19:23 Options

Genial, danke! Es funzt!

Antwort 6 von Uesch vom 23.03.2019, 19:29 Options

Vielleicht kannst du mir noch hierbei helfen:

Ich möchte, dass, wenn man einen weiteren Artikel hinzufügt, ein neuer Cookie mit anderem Namen gespeichert wird. Habe es so probiert, es funzt auch bei der $radiogroup, aber bei der $anzahl speichert er immer genau das Gleiche, das man beim ersten Mal eingegeben hatte:

Zitat:
if ($_GET[nachname] AND $nachname != "" AND $vorname != "" AND $radiogroup != "") {
setcookie("geschlecht", "$geschlecht", time()+900);
setcookie("vorname", "$vorname", time()+900);
setcookie("nachname", "$nachname", time()+900);


if ($HTTP_COOKIE_VARS["bestellung"] == "") {
setcookie("bestellung", "$radiogroup", time()+900);
setcookie("anzahl", "$anzahl", time()+900);
}
elseif ($HTTP_COOKIE_VARS["bestellung"] != "" ) {
setcookie("anzahl2", "$anzahl", time()+900);
setcookie("bestellung2", "$radiogroup", time()+900);
}

}



Gruß,
Üsch

Antwort 7 von rabies vom 24.03.2019, 00:14 Options

Nun, in diesem Code-Beispiel nutzt Du schon wieder
$HTTP_COOKIE_VARS
. Du solltest den Code komplett mit
$_COOKIE
umsetzen.

--rabies.

Antwort 8 von rabies vom 24.03.2019, 00:19 Options

Und wenn wir schon bei Korrektur sind:

if ($HTTP_COOKIE_VARS["bestellung"] == "")


Könnte man in:

if (!empty($_COOKIE["bestellung"]))


umändern. Das wäre imho performanter.

Antwort 9 von Uesch vom 24.03.2019, 01:14 Options

Ok, danke. Nun hab ich noch ein hoffentlich letztes Problem: Beim Klick auf "Bestellung abschicken" soll das vorher eingegebene an meine Emailadresse geschickt werden. Habe etwas gebastelt, allerdings wird die Email jetzt bei jedem Neu-Laden der Seite gesendet und nicht nur beim Klick auf "Bestellung abschicken"! Hier der Code, vll kannst du mir noch einmal helfen? Danke!

Zitat:
<td><br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="refresh" value="1"/><br>
<input type="submit" value="Warenkorb aktualisieren"/>
</form>
<td><br>
<form action="<?php setcookie("bestellung", "$radiogroup", time()-3600);?>">
<input type="hidden" name="loeschen" value="1"/><br>
<input type="submit" value="Bestellung löschen"/>
</form>
<td><br>
<form action="<?php mail("max@mustermann.land",$subject,$body, $more);?>">
<br>
<input type="submit" value="Bestellung abschicken"/>
</form>

Antwort 10 von helfer_001 vom 24.03.2019, 01:28 Options

verwende doch einfach noch eine hiddenbox die du beim laden auf 1 setzt und verpacke den mail befehl in eine if-anweisung

Antwort 11 von helfer_001 vom 24.03.2019, 01:33 Options

if($_GET[mail]){
<form action="<?php mail("max@mustermann.land",$subject,$body, $more);?>">
}
 <input type="hidden" name="mail"/>


so ungefähr kA ob das jetzt fonktioniert...
hab am laptop kein XAMPP...

Antwort 12 von Uesch vom 24.03.2019, 13:05 Options

Aber jetzt ist ja PHP und HTML vermischt. Das if($_GET[mail]){ muss ja in den PHP-Bereich und der Rest in den HTML-Bereich.

Antwort 13 von harrrharrr vom 24.03.2019, 13:55 Options

Zitat:
Aber jetzt ist ja PHP und HTML vermischt.

Vermischt ist da nichts, sondern schön getrennt, das ist schon richtig so.

Gruß
harrr

Antwort 14 von Uesch vom 24.03.2019, 14:24 Options

Ja und in welchen Teil soll ich das jetzt schreiben? Da, wo der PHP-Bereich ist? Weil dann gibt es einen Fehler wegen dem <
Wenn ich es unten in den HTML-Bereich schreibe, dann erkennt er ja das PHP nicht und ich kann ja auch nicht schreiben: <?php if($_GET[mail]){ ?>
<form action="<?php mail("max@mustermann.land",$subject,$body, $more);?>">
}
<input type="hidden" name="mail"/>

Antwort 15 von helfer_001 vom 28.03.2019, 20:51 Options

<?php if($_GET[mail]){
echo '<form action="mail("max@mustermann.land",$subject,$body, $more);?>">';
}
echo "<input type="hidden" name="mail"/>";

das mit dem echo hättest du dir zwar selbst denken können, aber hier bitte....

Antwort 16 von helfer_001 vom 28.03.2019, 20:57 Options

sorry hochkomma vergessen so siehts aus


<?php
if($_GET[mail]){
echo '<form action="' . mail("max@mustermann.land",$subject,$body, $more); . '">';
}
echo "<input type="hidden" name="mail"/>";

jetzt müsste es stimmen

Antwort 17 von Uesch vom 29.03.2019, 16:00 Options

Danke,

aber es kommt folgende Fehlermeldung:

Zitat:
Parse error: syntax error, unexpected '.'
in der Zeile mit
Zitat:
echo '<form action="' . mail("max@mustermann.land",$subject,$body, $more); . '">';

Antwort 18 von rabies vom 29.03.2019, 16:59 Options

Aeeeh! Einspruch. Ihr schlagt hier etwas den falschen Weg ein.

Das
action-
Attribut eines Formulares MUSS auf eine gültige URL, ein verarbeitendes JavaScript, oder einen
mailto:-
Link verweisen. Nicht auf eine PHP-Funktion.

In dem oben gezeigtem Scriptteil (
<?php mail("max@mustermann.land",$subject,$body, $more);?>
) würde gar keine Ausgabe kommen. Das
action-
Attribut würde einfach leer bleiben.

Desweiteren wüsste ich gerne, wozu
$_GET['mail']
in diesem Beispiel dient? An welcher Stelle wird es gesetzt, und warum?

Ich würde hier ein gesondertes Formular zum Abschicken benutzen.

HTML-Teil:

<form action="<?php echo $_SERVER['PHP_SELF'].'?action=abschicken'; ?>" method="get">
	<input type="submit" value="Bestellung abschicken!">
</form>


PHP-Teil (evtl. an den Kopf des Dokumentes setzen):


<?php
	if(isset($_GET['action'] && $_GET['action'] == 'abschicken') {
		$MailEmpfaenger = 'max@mustermann';
		$MailBetreff = 'Neue Bestellung!';
		$MailNachricht = ''; // Hier die Nachricht aus den Cookie-Daten heraus zusammenbauen.
		if(@mail ( $MailEmpfaenger, $MailBetreff, $MailNachricht )) $MailStatus = 'Email erfolgreich versendet!';
		else $MailStatus = 'Email konnte nicht gesendet werden!';
	}
?>


$MailStatus
kannst Du dann ja nach belieben, irgendwo auf der Seite per
echo $MailStatus
ausgeben lassen, um dem User zu zeigen, dass da auch etwas im Hintergrund passiert ist. :)

Grüße,
rabies.

Antwort 19 von Uesch vom 30.03.2019, 19:17 Options

Danke, aber klappt leider nicht: Diesen Part verstehe ich auch nicht so ganz:
Zitat:
if(@mail ( $MailEmpfaenger, $MailBetreff, $MailNachricht ))

Auf jeden Fall habe ich alles versucht, aber gibt immer nen Fehler.

Antwort 20 von rabies vom 02.04.2019, 10:47 Options

aber gibt immer nen Fehler. [/code]

Präziser ging's ooch nich', wa? So kann man Dir aber schlecht helfen...

Ähnliche Themen

Probleme beim Online Shopping
Tinkerbell  30.01.2007 - 71 Hits - 1 Antwort

Wie programmiert man das?
ManuelaSalzuburg  09.04.2007 - 75 Hits - 1 Antwort

1:n Beziehung oder n:1 Beziehung?!
Mel  09.08.2007 - 102 Hits - 28 Antworten

Kennt sich jemand mit Session und unset aus?
ClaudiaGauss  13.07.2007 - 41 Hits - 3 Antworten

2 Sessions
ZapT  17.12.2007 - 112 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026