Assoc. Array Problem

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

  • Assoc. Array Problem

    Hallo zusammen

    ich möchte zuerst mal auf den Thread verweisen:

    http://www.php-resource.de/forum/php...n-ausgabe.html

    Ich versuche etwas ganz ähnliches

    PHP-Code:
    $usr $_SESSION['username'];
    $art $_GET["art"];
    $username $usr
    $artikel "SELECT * FROM products WHERE nummer = ".$_GET['art'];
    $ergebnis mysql_query($artikel)
    OR die(
    "Error: $artikel <br>".mysql_error());
    while(
    $row mysql_fetch_object($ergebnis)) 

        
    $name $row->name;
        
    $preis $row->preis;
    }
    $newCartEntry = array(
        
    'articleId' => $art,
        
    'name' => $name,
        
    'username' => $usr,
        
    'price' => $preis.";"
    );
    var_dump($newCartEntry);
    $_SESSION['cart']['items'][] = $newCartEntry
    Eigentlich ganz einfach - ich versuche verschiedene Informationen in mein Array zu schreiben.... das funktioniert per var_dump dann auch ziemlich gut bzw. sieht gut aus:

    array(4) { ["articleId"]=> string(3) "333" ["name"]=> string(21) "I7 HC Prozessor Intel" ["username"]=> string(5) "kevin" ["price"]=> string(4) "119;" }


    Die Ausgabe verstehe ich leider hinten und vorne nicht... hab mich da dämlich gegoogelt:

    PHP-Code:
    <?php
    session_start
    (); 
    $datenarr $_SESSION['cart']; 

    foreach (
    $datenarr as $key => $items) { 
    $name[$key] = $items['name']; 
    $articleId[$key] = $items['articleId'];
                    
    echo  
    "name: ".$items['name']."<br />";
    echo  
    "Anzahl: ".$items['articleId']."<br /><br />";
    }  
    ?>

    Fehlermeldungen bekomme ich div. an den Kopf geschmissen


    Notice: Undefined index: name in C:\xampp\htdocs\cart.php on line 6

    Notice: Undefined index: articleId in C:\xampp\htdocs\cart.php on line 7

    Notice: Undefined index: name in C:\xampp\htdocs\cart.php on line 9
    name:

    Notice: Undefined index: articleId in C:\xampp\htdocs\cart.php on line 10
    Anzahl:

    kann mir jemand helfen... möchte doch nur die Werte eingermassen schön dargestellt haben -.-

    Danke

    mfg

  • #2
    Lass dir innerhalb der Schleife ausgeben, was $items tatsächlich enthält.

    (Und bitte formatiere solche Testausgaben lesbar, wenn du sie hier postest – dafür gibt es z.B. den [code]-Tag.)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo

      Danke für deine Antwort.

      Habe das Skript überarbeitet:

      PHP-Code:
      <?php
      SESSION_START
      ();
      $con mysql_connect("localhost","root","test"); 
      //Verbindung zur DB herstellen 
      if (!$con

        die(
      'Could not connect: ' mysql_error()); 

      mysql_select_db("neekmart"$con); 
      $usr $_SESSION['username'];
      $art $_GET["art"];
      $username $usr
      $artikel "SELECT * FROM products WHERE nummer = ".$_GET['art'];
      $ergebnis mysql_query($artikel)
      OR die(
      "Error: $artikel <br>".mysql_error());
      while(
      $row mysql_fetch_object($ergebnis)) 

          
      $name $row->name;
          
      $preis $row->preis;
      }

      $warenkorb $_SESSION['warenkorb']; 
      $b['name'] = $name
      $b['articleId'] = $art
      $b['username'] = $usr
      $b['price'] = $preis
      $warenkorb[] = $b
      $_SESSION['warenkorb'] = $warenkorb
      header("Location: cart.php");
      ?>

      und dann cart.php

      PHP-Code:
      <?php
      session_start
      (); 
      $datenarr $_SESSION['warenkorb']; 

      foreach (
      $datenarr as $key => $asd) { 
      $articleId[$key] = $asd['articleId']; 
      $price[$key] = $asd['price'];
                      
      echo  
      "articleId: ".$asd['articleId']."<br />";
      echo  
      "price: ".$asd['price']."<br /><br />";
      }  
      ?>
      Was mir nicht ganz klar ist, was mache ich da mit dem $asd?
      Habs noch nicht so mit dem assoc. Array

      Ausgabe bisher:
      HTML-Code:
      Notice: Undefined index: warenkorb in C:\xampp\htdocs\cart.php on line 3
      
      Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\cart.php on line 5
      Immerhin schonmal paar weniger...


      mfg

      Kommentar


      • #4
        Ehmmm ich bin verwirrt... es scheint zu funktionieren - habe den Cache gelöscht


        Code - falls noch jemand das Problem hat:

        PHP-Code:
        <?php
        SESSION_START
        ();
        $con mysql_connect("localhost","root","test"); 
        //Verbindung zur DB herstellen 
        if (!$con

          die(
        'Could not connect: ' mysql_error()); 

        mysql_select_db("neekmart"$con); 
        $usr $_SESSION['username'];
        $art $_GET["art"];
        $username $usr
        $artikel "SELECT * FROM products WHERE nummer = ".$_GET['art'];
        $ergebnis mysql_query($artikel)
        OR die(
        "Error: $artikel <br>".mysql_error());
        while(
        $row mysql_fetch_object($ergebnis)) 

            
        $name $row->name;
            
        $preis $row->preis;
        }

        $warenkorb $_SESSION['warenkorb']; 
        $b['name'] = $name
        $b['articleId'] = $art
        $b['username'] = $usr
        $b['price'] = $preis
        $warenkorb[] = $b
        $_SESSION['warenkorb'] = $warenkorb
        header("Location: cart.php");
        ?>

        cart.php
        PHP-Code:
        <?php
        session_start
        (); 
        $datenarr $_SESSION['warenkorb']; 

        foreach (
        $datenarr as $key => $asd) { 
        $articleId[$key] = $asd['articleId']; 
        $price[$key] = $asd['price'];
                        
        echo  
        "articleId: ".$asd['articleId']."<br />";
        echo  
        "price: ".$asd['price']."<br /><br />";
        }  
        ?>
        Danke

        Kommentar


        • #5
          Assoc. Array weiterverwenden - PHP Forum: phpforum.de

          Kommentar


          • #6
            Hi tschedei,
            Zitat von tschedei Beitrag anzeigen
            Ehmmm ich bin verwirrt... es scheint zu funktionieren - habe den Cache gelöscht
            Code - falls noch jemand das Problem hat:
            Ehmmm . . . bin auch verwirrt. Was hat diese Werteschieberei von einer Variablen in die andere zu bedeuten?

            $usr = $_SESSION['username'];
            $username = $usr;

            Hier speicherst du eine $_GET-Variable . . .

            $art = $_GET["art"];

            . . . aber du benutzt die neue Variable nicht . . .

            $artikel = "SELECT * FROM products WHERE nummer = ".$_GET['art'];

            Hier . . .

            $b['name'] = $name;
            $b['articleId'] = $art;
            $b['username'] = $usr;
            $b['price'] = $preis;

            . . . legst du Werte in einem Array ab.

            Und anschließend speicherst du dieses Array als Element in einem Array . . .

            $warenkorb[] = $b;

            Warum nicht gleich . . .

            $_SESSION['warenkorb'] = $b;

            Gruß
            Günni

            Kommentar


            • #7
              Das kommt dabei raus, wenn man sich ein Script aus illustrierenden Codeschnipseln verschiedener Leute in verschiedenen Foren zusammenstrickt, ohne groß Plan davon zu haben.

              Schutz vor SQL-Injection wird wohl auch erst kommen, wenn sich jemand erbarmt, ihm eine Kopiervorlage zu machen.

              Kommentar


              • #8
                @guenni - die Werteschiebere beim usernamen war noch für einen anderen Teil, welchen ich inzwischen abgeschlossen habe.

                @mermshaus

                Schutz vor SQL Injenctions (z.B. Real Esc. String) wurde eingefügt.

                Ich fange gerne mit den Funktionen an, bevor ich dann weitere Elemente einbaue.
                Inzwischen funktioniert alles einwandfrei.

                Also bei allem Respekt:
                PHP-Code:
                wenn sich jemand erbarmtihm eine Kopiervorlage zu machen
                Halt die Klappe...


                /Closed

                Kommentar


                • #9
                  Würde gerne noch einbringen dass es sinnvoll ist Zahlen Werte auf INT zu prüfen um sicher zu gehen:

                  PHP-Code:
                  $artikel "SELECT * FROM products WHERE nummer = ".(INT)$_GET['art']; 
                  und auch bei den Variablen:

                  PHP-Code:
                  $b['name'] = $name
                  besser
                  PHP-Code:
                  htmlentities($b['name'] , ENT_QUOTES)= $name
                  Mfg
                  http://www.webmasterhelp.net - Webmasterportal

                  Kommentar


                  • #10
                    Zitat von tschedei
                    Also bei allem Respekt:
                    wenn sich jemand erbarmt, ihm eine Kopiervorlage zu machen.
                    Halt die Klappe...
                    Was soll das denn jetzt werden?
                    Zuletzt geändert von mermshaus; 30.11.2012, 01:33. Grund: versehentlich „falschen“ Nickname gequotet

                    Kommentar

                    Lädt...
                    X