Assoc. Array Problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.

    Comment


    • #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

      Comment


      • #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

        Comment


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

          Comment


          • #6
            Hi tschedei,
            Originally posted by tschedei View Post
            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

            Comment


            • #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.

              Comment


              • #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

                Comment


                • #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

                  Comment


                  • #10
                    Originally posted by tschedei
                    Also bei allem Respekt:
                    wenn sich jemand erbarmt, ihm eine Kopiervorlage zu machen.
                    Halt die Klappe...
                    Was soll das denn jetzt werden?
                    Last edited by mermshaus; 30-11-2012, 00:33. Reason: versehentlich „falschen“ Nickname gequotet

                    Comment

                    Working...
                    X