zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Knoten in der Schleife | Warenkorb Teil 4

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 30.04.2011, 19:25
Benutzerbild von philosapiens
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 08.05.2009
Ort: Berlin Südende
Beiträge: 297
philosapiens befindet sich auf einem aufstrebenden Ast
Standard Knoten in der Schleife | Warenkorb Teil 4

Hallo,

so langsam ist es mir echt peinlich. Alles was ich in Richtung meines Warenkorb-Projektes angefasst habe, musste ich bisher immer hier gerade rücken lassen.
Nun bin ich schon so weit und wieder hänge ich! Mist!

Also hier Frage 4:

Wie bekomme ich die Variablen, mit dem Inhalt "Ja" in ein Array?

Hier der Code:
PHP-Code:
...
<?php

$Artikel 
= array(
  
#array('Titel','Beschreibung','Preis'),
  
array(
    
'Geschenkpaket gelb',
    
'Dieses bezaubernde gelbe Geschenkpaket ist 8cm x 8cm breit und lang mit einer Höhe von 6cm.',
    
'3,95 €'
    
),
  array(
    
'Geschenkpaket rosa',
    
'Dieses bezaubernde rosafarbene Geschenkpaket ist 7cm x 7cm breit und lang mit einer Höhe von 5cm.',
    
'3,45 €'
    
),
  array(
  
'Präsentschachtel gold',
  
'Dieses bezaubernde goldene Präsentschachtel hat die Ausmaße: 4cm x 8 cm in der Grundfläche und hat eine Höhe von 7cm. Die Röschenapplikationgehört ebenfalls zum Artikel.',
  
'5,65 €'
  
),
  array(
  
'Duftseife in herzform',
  
'Eine sehr angenehmduftende, herzförmige Duftseife. Duftrichtung Vaillie. Ein kleines Säckchen und eine Duftseife ist Lieferumfang inbegriffen.',
  
'2,96 €')
  );
  
for (
$c 0$c <= count($Artikel)-1$c++) {
    
$cc $c+1;
    
    if (!isset(
$_SESSION['warenkorb_anzahl_artikel_' $cc])) {
        
$_SESSION['warenkorb_anzahl_artikel_' $cc] = 0// erste Definition der Variable, FALLS DIESE NOCH NICHT IN DER SESSION EXISTIERT
    
}
    
    if (isset(
$_POST['Warenkorb_Artikel_' $cc])) { // wurde der Inhalt des "value-Feldes" vom "name-Feldes" aus dem Formular übergeben?
        
if ($_POST['Warenkorb_Artikel_' $cc] == 'in den Warenkorb') {
            
$_SESSION['warenkorb_anzahl_artikel_' $cc] = $cc// ist dieser Inhalt "in den Warenkorb", dann erhöhe die Variable um 1 ?
            
}
        else {
            
$warenkorbinhalt =  'leer, weil Übergabe nicht "in den Warenkorb'// ist der Inhalt nicht "in den Warenkorb" dann zeige "leer-a" an.
        
}
    }    
    else {
        
$warenkorbinhalt =  'leer, weil nix übergeben wurde'// wurde nichts übergeben, dann zeige "leer-b" an.
    
}
}  

for (
$c 0$c <= count($Artikel)-1$c++) {
    
$cc $c+1;
    if (
$_SESSION['warenkorb_anzahl_artikel_' $cc] == $cc) {
        
$_SESSION['warenkorbinhalt'] = array('Artikel_'.$_SESSION['warenkorb_anzahl_artikel_' $cc].'' => 'Ja');
    }
}    

?>

<h3>Inhalt vom Warenkorb</h3>
<p>Folgende Artikel haben Sie zum Kauf markiert:</p>
<p>Artikel 1: <?php echo $_SESSION['warenkorb_anzahl_artikel_1']; ?></p>
<p>Artikel 2: <?php echo $_SESSION['warenkorb_anzahl_artikel_2']; ?></p>
<p>Artikel 3: <?php echo $_SESSION['warenkorb_anzahl_artikel_3']; ?></p>
<p>Artikel 4: <?php echo $_SESSION['warenkorb_anzahl_artikel_4']; ?></p>

<p>Inhalt von $warenkorbinhalt: <?php print_r($warenkorbinhalt); ?></p>
<p>Inhalt von $_SESSION['warenkorbinhalt']: <?php print_r($_SESSION['warenkorbinhalt']); ?></p>

...
Es geht um diesen Teil:
PHP-Code:
...
<?php

for ($c 0$c <= count($Artikel)-1$c++) {
    
$cc $c+1;
    if (
$_SESSION['warenkorb_anzahl_artikel_' $cc] == $cc) {
        
$_SESSION['warenkorbinhalt'] = array('Artikel_'.$_SESSION['warenkorb_anzahl_artikel_' $cc].'' => 'Ja');
    }

?>
...
Ergebnis sollte eigentlich so aussehen:
Zitat:
Inhalt von $_SESSION['warenkorbinhalt']:
Array (
[Artikel_1] => Ja
[Artikel_3] => Ja
)
Wenn man sich eben nur für diese beiden Artikel durch Klick auf den submit-Button entschieden hat. Leider wird jedoch immer nur der geklickte Artikel mit der höchsten Nummer in das Array übernommen. Warum nur???

Hier nochmal die Testseite:

http://metamorphose.idealseiten.de/warenkorb.html

Benutzer: xhtml
PW.: test

Vielen Dank schon einmal für Eure Zeit!
__________________
Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.

Mein aktuelles Projekt bei idealseiten.de
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 30.04.2011, 21:35
ofHouse
XHTMLforum-Mitglied
 
Registriert seit: 20.04.2011
Beiträge: 128
Borsti befindet sich auf einem aufstrebenden Ast
Standard

Also auf den ersten Blick machst du es dir viel zu kompliziert.

Du solltest vielleicht nochmal überdenken, wie du deine Artikel anlegst.
Du schreibst mit deiner einen For-Schleife ja erstmal grundsätzlich alle Artikel in die Session rein, die du da hast.

Vom Grundsatz her sollte man die Session so klein wie möglich halten

Besser wäre es, wenn du erstmal jedem deiner Artikel eine eindeutige ID zuweist und dein Warenkorb dann so aussieht:
$_SESSION['warenkorb'] = array( [1234] => 5, [12345] => 2);
ich hab jetzt mal die IDs rot markiert. Grün markiert sind die aktuellen Anzahlen.
Mehr brauchst du dann in der Session gar nicht zu speichern, weil du mit der ID jederzeit dann alle anderen Informationen zum Artikel abrufen kannst.
Und wenn mal eine Anzahl hinterher im Warenkorb gelöscht werden soll, löscht du einfach den kompletten Teil des Arrays raus.

Hinterher wirst du (hoffentlich) die einzelnen Artikel aus einer Datenbank holen, da wirst du um IDs eh nicht drum herum kommen, deswegen solltest du jetzt schon dein Script auf einzelne Artikel-IDs bauen.

In deinem Formular wirst du es dann noch einfacher haben, weil du einfach sagst:
HTML-Code:
<input type="text" name="anzahl" value="0" />
<input type="hidden" name="artikelID" value="1234" />
dann musst du auch nicht so komische Konstruktionen bilden wie:

PHP-Code:
$_POST['Warenkorb_Artikel_' $cc
sondern kannst mit
PHP-Code:
$_POST['anzahl'];
$_POST['artikelID']; 
einfach und für alle Form-Elemente übergreifend die Informationen abgreifen

Denk mal drüber nach
__________________
LG f

@ofhouse
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 01.05.2011, 08:34
Benutzerbild von philosapiens
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 08.05.2009
Ort: Berlin Südende
Beiträge: 297
philosapiens befindet sich auf einem aufstrebenden Ast
Standard

Hallo Borsti,

vielen Dankl für Deine Anregung. Das liest sich alles ziemlich griffig. Mal sehen, wie weit ich das umsetzen kann.

Das obige von mir geschilderte Problem konnte ich tatsächlich einmal selbst lösen.

Ich habe einfach die Zeile
PHP-Code:
$_SESSION['warenkorb_anzahl_artikel_' $cc] = $cc// ist dieser Inhalt "in den Warenkorb", dann erhöhe die Variable um 1 ? 
geändert in
PHP-Code:
 $_SESSION['warenkorb_anzahl_artikel_' $cc] = 1// ist dieser Inhalt "in den Warenkorb", dann setze die Variable auf 1 
und dann weiter unten einfach nur folgende Abfrage eingefügt:
PHP-Code:
<p>Im Warenkorb befinden sich gerade <?php echo (array_sum($_SESSION)); ?> Artikel.</p>
Aber nach Deinen Hinweisen werde ich nun das Konstrukt wohl nochmal überdenken müssen.

Bis hierher einmal mehr: Vielen Dank!
__________________
Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.

Mein aktuelles Projekt bei idealseiten.de
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
For Schleife optimieren rs-web Serveradministration und serverseitige Scripte 13 12.08.2010 22:39
Problem beim befüllen einer Datenstruktur s3rial_ Javascript & Ajax 0 24.07.2010 11:54
Little Boxes Teil 1: Crashkurs zu HTML und CSS online lesen pmmueller Ressourcen 6 25.02.2010 15:17
Bescheid: Little Boxes - Teil 0 (Null) pmmueller Ressourcen 29 28.12.2008 15:54
dem "g" fehlt der untere teil weserweb CSS 4 01.10.2003 12:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:41 Uhr.