Guten Tag!
Ich versuche mich momentan an einem Shopsystem und möchte mich gleichzeitig an OOP heranwagen; habe hier ein schönes Buch neben mir liegen, was mein Problem auch soweit getroffen hat, alles schien gut zu gehen, bis der Warenkorb auf einmal nicht wie erwartet angezeigt wurde, weil im Objekt nichts abgespeichert wird (anscheinend, soweit bin ich bei der 'Fehleranalyse' gekommen).
Hänge jetzt hier schön längere Zeit fest, habe versucht in anderen Themen was zu finden, konnte aber leider nichts passendes auftreiben.
Der Code der Klasse:
So hoffe das war gekürzt genug.
Beim Aufruf der showcart() Methode wird die elseschleife durchlaufen; die if-Schleife nur, wenn ich 0<= schreibe anstelle 0<; dann wird allesdings nur der HTML-Code ohne die erwarteten Daten angezeigt.
Der Code, wo eigentlich ein Artikel abgespeichert werden sollte:
Ich bekomme keinen Fehler ausgegeben.
Bei dem 2. Codeteil wird mir die Erfolgsmeldung ausgegeben und die übergebenen Variablen $id, $name usw. werden ebenfalls korrekt angezeigt.
Deshalb meine Frage zu meinem Hauptproblem:
Warum wird anscheinend nichts abgespeichert?
Ich bin leider ratlos.
Danke im Voraus,
Sven
Ich versuche mich momentan an einem Shopsystem und möchte mich gleichzeitig an OOP heranwagen; habe hier ein schönes Buch neben mir liegen, was mein Problem auch soweit getroffen hat, alles schien gut zu gehen, bis der Warenkorb auf einmal nicht wie erwartet angezeigt wurde, weil im Objekt nichts abgespeichert wird (anscheinend, soweit bin ich bei der 'Fehleranalyse' gekommen).
Hänge jetzt hier schön längere Zeit fest, habe versucht in anderen Themen was zu finden, konnte aber leider nichts passendes auftreiben.
Der Code der Klasse:
PHP:
<?php
class warenkorb
{
var $art_anzahl=0;// Enthaelt die Anzahl der Artikel
var $artikel=array();//assoz. Array fuer die Artikel
var $datum=-1; // enthaelt das aktuelle Datum
function warenkorb() // Konstruktor initialisiert
{ // die Eigenschaften
$this->datum=date("Y-m-d-H"); // Fragt das Datum ab
}
function additem($id,$name,$size,$preis) // Fuegt dem Warenkorb
{
$this->artikel[]=array($id,$name,$size,$preis); // einen Artikel hinzu
$this->art_anzahl+=1; // Anzahl Artikel korrigieren
return true;
}
function removeItem($id) //Entfernt Artikel aus
{ // dem Korb
if (true===isset($this->artikel[$art_nr])) // Artikel im
{ // Warenkorb?
unset($this->artikel[$art_nr]); //Artikel loeschen
$this->art_anzahl-=$menge; //Artikelanzahl reduz.
return true; //Artikel entfernt od. Menge reduziert
}
return false; // Artikelnummer nicht im Warenkorb
}
function showcart() // Gibt den Warenkorb aus
{
if (0<count($this->artikel)) // Sind Artikel im Korb?
{
echo "
<table border=0 width=85% cellspacing=0>
<tr>
<td colspan=5 class=tpc><p style=\"margin-left:5\">WARENKORB<font size=2> - ($this->art_anzahl) Artikel enthalten</td>
</tr>
";
$gesamtpreis = '0';
foreach ($this->artikel as $artnr=>$menge) // Alle Artikel auslesen
{
echo "
<tr>
<td width=1%></td>
<td width=40% class=con5a><p style=\"margin-left:5\">$menge[1]</td>
<td width=15% class=con5 align=center>$menge[2]</td>
<td width=15% class=con5 align=center>$menge[3]</td>
<td width=10% class=con5 align=center><a href=\"index.php?page=warenkorb&del=$artnr\">löschen</a></td>
</tr>
";
$gesamtpreis+=$menge['3'];
}
echo "
<tr height=25>
<td width=1%></td>
<td width=40% colspan=4 class=con><br><br><br></td>
</tr>
<tr height=25>
<td width=1%></td>
<td width=15% align=center class=con4 bgcolor=#CC6600><font color=white><b>Gesamtbetrag: <font size=3>$gesamtpreis Euros</td>
<td width=10% class=con4 align=center> <a href=\"index6.html\" onmouseover=\"Bildwechsel(navi6, navi6Pressed);\" onmouseout=\"Bildwechsel(navi6, navi6Out);\"><img name=navi6 border=0 src=img/bestellen.jpg></a> </td>
</tr>
</table>
";
return true; // Ausgabe erfolgreich
}
else
{
echo "Warenkorb leer.";
return false; // Warenkorb leer
}
}
}
?>
So hoffe das war gekürzt genug.
Beim Aufruf der showcart() Methode wird die elseschleife durchlaufen; die if-Schleife nur, wenn ich 0<= schreibe anstelle 0<; dann wird allesdings nur der HTML-Code ohne die erwarteten Daten angezeigt.
Der Code, wo eigentlich ein Artikel abgespeichert werden sollte:
PHP:
<?php
.
.
.
case "add":
$wahl = $korb->additem($id,$name,$size,$preis);
if($wahl)
{
echo "Der Artikel $name wurde Ihrem Warenkorb erfolgreich hinzugefügt.<br>";
echo "$id<br>$name<br>$size<br>$preis";
}
if(!$wahl)
{
echo 'Fehler aufgetreten.';
}
break;
}
Ich bekomme keinen Fehler ausgegeben.
Bei dem 2. Codeteil wird mir die Erfolgsmeldung ausgegeben und die übergebenen Variablen $id, $name usw. werden ebenfalls korrekt angezeigt.
Deshalb meine Frage zu meinem Hauptproblem:
Warum wird anscheinend nichts abgespeichert?
Ich bin leider ratlos.

Danke im Voraus,
Sven
Zuletzt bearbeitet: