Ankündigung

Einklappen
Keine Ankündigung bisher.

variable erhöhen, etwas komplizierter

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • variable erhöhen, etwas komplizierter

    Hallo zusammen,

    mein erstes Posting hier. Ich hoffe, der ein oder andere kann mir möglicherweise weiterhelfen!

    Baue gerade einen kleinen php-Warenkorb, funktioniert auch soweit, nach mühsamsten Anfänger-Problemen.

    Jetzt lasse ich mir eine Mail zusenden, die auflisten soll, was bestellt wurde. Funktioniert auch ganz gut, soweit.

    Ich lasse mir mittels <?php ob_start(); ?> und ob_get_flush();?> einen Teil meines Codes auslesen - dieser wird in einer Variable gespeichert, die in jenem Teil, der die E-Mail generiert, ausgelesen und verarbeitet wird.

    Weil mein Korb vorher per foreach generiert wird, wird die Variable allerdings immer wieder überschrieben, so dass schließlich immer nur das letzte Produkt übergeben werden kann.

    Die relevante Zeile in der Tabelle der generierten Produkte, ist diese hier:

    PHP-Code:
    <td><?php ob_start(); ?><?php echo $item['name']; ?><?php $_SESSION['bestell_artikel'] = ob_get_flush();?></td>
    <?php ob_start(); ?> zeichnet auf.
    <?php echo $item['name']; ?> gibt den Namen des ersten Produkts aus.
    <?php $_SESSION['bestell_artikel'] = ob_get_flush();?> schließt die Aufzeichnung und übergibt den Inhalt an die Session-Variable 'bestell_artikel', mit der ich dann weiterarbeite.

    Ich würde gerne die Variable
    PHP-Code:
     $_SESSION['bestell_artikel'
    jedes Mal miterhöhen, damit ich später dann wieder jede einzeln abfragen kann.

    Die gesamte Schleife, falls relevant, sieht so aus:
    PHP-Code:
            <?php 
            
    // ALLE ITEMS AUSGEBEN
            
    foreach ($_SESSION['SHOPPING_CART'] as $itemNumber => $item) {
            
    ?>
            <tr id="item<?php echo $itemNumber?>">    
                <td><?php ob_start(); ?><?php echo $item['name']; ?><?php $_SESSION['bestell_artikel'] = ob_get_flush();?></td>
                <td><input class="item_qty" name="items_qty[<?php echo $itemNumber?>]" type="text" id="item<?php echo $itemNumber?>_qty" value="<?php ob_start(); ?><?php echo $item['qty']; ?><?php $_SESSION['bestell_anzahl'] = ob_get_flush();?>" size="2" maxlength="3" /></td>
                <td><?php echo $item['price']; ?>&nbsp;€</td>      
                <td><a href="?remove=<?php echo $itemNumber?>">Entfernen</a></td>
            </tr>
            <?php
            
    }
            
    ?>
    Kann ich an die Variable noch irgendwie $itemNumber anhängen?

    Über hilfe freue ich mich wirklich sehr!

  • #2
    PHP-Code:
    <td><?php ob_start(); ?><?php echo $item['name']; ?><?php $_SESSION['bestell_artikel'] = ob_get_flush();?></td>
    Warum echo'st du da nur um es in output buffering zu schreiben ?
    Weshalb machst du nicht eine einfache zuweisung ?

    Beispiel:

    PHP-Code:
    foreach (/* ... */) {
    $_SESSION['bestell_artikel'] = $item['name'];
    echo 
    $item['name'];

    Oder du unterteilst das ganze nochmal in Array:
    PHP-Code:
    $_SESSION['bestell_artikel'] = array();
    /* irgendein code */
    $_SESSION['bestell_artikel'][] = $item['name']; 
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      Ergänzend und eventuell konkreter auf den Punkt:

      Statt der festen Variable 'bestell_artikel in
      PHP-Code:
      <?php $_SESSION['bestell_artikel'] = ob_get_flush();?>
      möchte ich gerne eine sich erhöhende haben, die ich dann auch einzeln auslesen kann.

      Wahrscheinlich liegt die Lösung bereits in der foreach-Schleife und somit nahe, aber ich kapier' einfach als Anfänger noch nicht, wie ich sie schreiben muss.

      Kommentar


      • #4
        @ByStones

        Ich dachte, ich nutze das OB nur 'zusätzlich', um später den Inhalt wieder nutzen/abfragen zu können.

        In der Mail, die ich mir senden lasse, steht dann auf Grund der entsp. Variable innerhalb der Mail-Generierung, das Produkt/der Inhalt, den ich hier mittels OP umkreise..

        Kommentar


        • #5
          Das macht doch keinen Sinn irgendwas mit ob abzufangen nur damit man es später besser erkennt...

          Erstell ein array in welchem du dann alle Werte die du "zusäzlich" einfangen willst speicherst und die dann bei der Mailgenerierung wieder ausliest und ausgibst.

          P.S.: Was genau willst du eigentlich machen (hab bisher ein bisschen ins Blaue geraten) ?
          Willst du bestell_artikel mit der entsprechenden $itemNumber zwischenspeichern und dann später benutzen ?
          Signatur:
          PHP-Code:
          $s '0048656c6c6f20576f726c64';
          while(
          $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

          Kommentar


          • #6
            P.S.: Was genau willst du eigentlich machen (hab bisher ein bisschen ins Blaue geraten) ?
            Willst du bestell_artikel mit der entsprechenden $itemNumber zwischenspeichern und dann später benutzen ?
            Ja, genau. Nur ist es im Moment so, dass immer nur das letzte Produkt in der Variable auftaucht, das diese ja mit jedem Durchlauf der Schleife überschrieben wird.

            --

            Bevor ich die Mail zusammenbauen lasse, hole ich mir so die vorher abgefangenen Inhalte zurück:

            PHP-Code:
            $welcherArtikel = ($_SESSION['bestell_artikel']);
            $anzahlArtikel = ($_SESSION['bestell_anzahl']); 
            und nutze die beiden dann zur Ausgabe in der Mail.

            Kommentar


            • #7
              Naja dann machs wie ich oben geschrieben habe.
              Signatur:
              PHP-Code:
              $s '0048656c6c6f20576f726c64';
              while(
              $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

              Kommentar


              • #8
                Vielen Dank erst einmal!
                Vor allem für die rasant schnelle Hilfestellung.

                Habe gerade, glaub' ich, eine Möglichkeit gefunden, die für mich Sinn macht.

                Jetzt nochmals alles umzustellen/umzubauen, ist für mich heute Abend zu kompliziert - es läuft ja auch schon fast, wenn der Code (z.B. mittels OB) auch nicht besonders ist.

                Danke aber trotdem nochmals!

                Kommentar

                Lädt...
                X