Ankündigung

Einklappen
Keine Ankündigung bisher.

Header Redirect (Seite aktualisieren)

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Header Redirect (Seite aktualisieren)

    Hallo zusammen

    habe ein kleines Problem mit meinem Skript:

    PHP-Code:
    <html>
    <?php
    session_start
    (); 
    $datenarr $_SESSION['warenkorb']; 
    foreach (
    $datenarr as $key => $asd) { 
    $articleId[$key] = $asd['articleId']; 
    $price[$key] = $asd['price'];
    $unset $key;       
    echo  
    "articleId: ".$asd['articleId']."<br />";
    echo  
    "price: ".$asd['price']."<br />";?>
    <a href="cart.php?item=<?php echo $unset;?>">X</a>
    <?php
    echo "<br />";

    if(
    $_GET['item']>=0){
    $item $_GET['item'];
    unset(
    $datenarr[$item]);
    $_SESSION['warenkorb'] = $datenarr;  
    header('Location: cart.php');
    }
    ?>
    </html>
    So, ich kann da ganz einfach per Knopfdruck Items aus meinem Array löschen.
    Leider wird erst bei einem Seiten refresh das Array "neu geladen".

    Per header kann ich ja eine andere Seite aufrufen, leider die gleiche nicht... sonst hängt man ja in einem Loop fest.

    Kann mir jemand sagen wie ich das sonst lösen kann, oder gibt es eine Lösung das Array dann neu zu ehmmm ich nenne es mal rendern....

    Danke vielmals

  • #2
    Du kannst keinen PHP-redirect (mehr) machen, wenn Du vorher schon einen Output (echo) gemacht hast.

    Kommentar


    • #3
      Was hindert Dich daran den Löschvorgang vor den Auslesevorgang zu setzen? Dann hast Du aktuelle Daten.

      Kommentar


      • #4
        Genau, die Ausgabe darf erst nach session_start erfolgen. Also:

        PHP-Code:
        <?php
        session_start
        (); // session starten
        ob_start(); // sämtliche ausgaben noch zurückhalten
        ?>
        <html>

        <?php 
        $datenarr 
        $_SESSION['warenkorb']; 
        foreach (
        $datenarr as $key => $asd) { 
        $articleId[$key] = $asd['articleId']; 
        $price[$key] = $asd['price'];
        $unset $key;       
        echo  
        "articleId: ".$asd['articleId']."<br />";
        echo  
        "price: ".$asd['price']."<br />";?>
        <a href="cart.php?item=<?php echo $unset;?>">X</a>
        <?php
        echo "<br />";

        if(
        $_GET['item']>=0){
        $item $_GET['item'];
        unset(
        $datenarr[$item]);
        $_SESSION['warenkorb'] = $datenarr;  
        header('Location: cart.php');
        }

        ob_end_flush(); // rausspülen in den äther und dieses "zurückhalten" (puffern) beenden
        ?>
        </html>
        Grundsätzlich wäre es auch super wenn Du schaust was MVC (Model-View-Controller) ist. Ein "Design-Pattern" das solche Probleme verhindern kann

        Kommentar


        • #5
          Klasse ... und was ändert das nun bzgl. des Problems mit dem Header-Redirect? Gar nichts! header() steht nämlich immer noch nach einer Ausgabe.

          VG

          Kommentar


          • #6
            Wenn er das ob_end_flush an das wirkliche Ende der Ausgabe setzt, oder das Skript nach der Headerangabe beendet(die, exit) (und vorher sichergeht, das alles in den Puffer geschrieben wurde) sollte das Funktionieren, allerdings löst das nichts an dem Ursprünglichem Problem (EVA googlen) und ist nur ein rumgemurkse vom Feinsten.

            Was hindert dich daran, der Headerangabe(sollte btw. ein absoluter Pfad sein) einen Parameter hinzuzufügen, oder abhängig von der Session (if/switch-case/whatever) eine Aktion auszuführen? (Oder das ganze im selben Request zu behandeln?)

            Kommentar


            • #7
              Bitte beachten: Anmerkungen zu Crosspostings

              [MOD: Thread geschlossen]

              Kommentar

              Lädt...
              X