2016-07-22 6 views
0

Ich habe eine Reihe von Daten in einem Array, das in einer Sitzung gesammelt wurde. Ich bin in der Lage, dies zu print_r und alle Inhalte zeigen, aber ich habe Schwierigkeiten mit den Produktnamen zu zeigen, id, Bild usw.

Ich zeige die Verwendung:

<?php 
echo '<pre>'; 
print_r($_SESSION); 
echo '</pre>'; 
?> 

Es druckt alles, was ich brauche, aber nicht in dem Format, das ich benötige. Ich weiß also, dass es meine Daten sammelt und im Array speichert. Ich habe die Daten in einer anderen Datei wie folgt eingestellt:

if (isset($_POST['Submit'])) { 
    $_SESSION['product_img'][] = $_POST['product_img']; 
    $_SESSION['product_id'][] = $_POST['product_id']; 
    $_SESSION['product_name'][] = $_POST['product_name']; 
    $_SESSION['product_price'][] = $_POST['product_price']; 
    $_SESSION['product_sku'][] = $_POST['product_sku']; 
    $_SESSION['product_description'][] = $_POST['product_description']; 
} 

Und es ist alles von dem oben genannten möchte ich ausgeben.

+0

Entfernen Sie die [] am Ende jeder Variablen $ _SESSION. – ChrisG

+0

Bitte präzisieren Sie, was Sie zu tun versuchen. Soweit ich das beurteilen kann, fragen Sie, wie Sie die Daten in einem "lesbaren" Format ausgeben, während print_r für mich ziemlich lesbar ist. – Bailey

+0

Sorry, also zum Beispiel muss ich das Produktbild zeigen, den Produktnamen, als würde ich diese Artikel aus der Datenbank auswählen – PhpDude

Antwort

1

** Entweder Sie halten mit Ihrem Vorschlag: $_SESSION['...'][] **

if (isset($_POST['Submit'])) { 
    $_SESSION['product_img'][] = $_POST['product_img']; 
    $_SESSION['product_id'][] = $_POST['product_id']; 
    $_SESSION['product_name'][] = $_POST['product_name']; 
    $_SESSION['product_price'][] = $_POST['product_price']; 
    $_SESSION['product_sku'][] = $_POST['product_sku']; 
    $_SESSION['product_description'][] = $_POST['product_description']; 
} 

und formatieren Sie es wie folgt:

foreach($_SESSION as $elements) 
{ 
    foreach($elements as $element) { 
     echo $element . '<br />'; 
    } 
} 

Oder verwenden Sie diese andere Methode:

if (isset($_POST['Submit'])) { 
    $_SESSION['product_img'] = $_POST['product_img']; 
    $_SESSION['product_id'] = $_POST['product_id']; 
    $_SESSION['product_name'] = $_POST['product_name']; 
    $_SESSION['product_price'] = $_POST['product_price']; 
    $_SESSION['product_sku'] = $_POST['product_sku']; 
    $_SESSION['product_description'] = $_POST['product_description']; 
} 

und formatieren Sie es so:

foreach($_SESSION as $element) 
{ 
    echo $element . '<br />'; 
} 
+0

Aber meine Frage ist wirklich, wie ich diese Daten in einem lesbaren Format ausgeben? – PhpDude

+0

Verwenden Sie eine Schleife [foreach] (http://php.net/manual/en/control-structures.foreach.php). – Bailey

+0

Durch Entfernen der '[]' es stoppt mich mit der Fähigkeit, mehrere Elemente zur Sitzung hinzufügen – PhpDude

1

Eine einfache Möglichkeit, dies als HTML auszugeben, ist die Verwendung einer foreach-Schleife, die alle Elemente im Array durchläuft.

Um die Dinge einfacher zu machen, würde ich vorschlagen, ändern Sie Ihren POST-Code, so dass jedes Element ein einzelnes Array ist, so.

if (isset($_POST['Submit'])) { 
    $_SESSION['products'][] = array(
     'img' => $_POST['product_img'], 
     'id' => $_POST['product_id'], 
     'name' => $_POST['product_name'], 
     'price' => $_POST['product_price'], 
     'sku' => $_POST['product_sku'], 
     'description' => $_POST['product_description'] 
    ); 
} 

Jetzt können Sie durch $_SESSION['products'] laufen und die Informationen für jedes Produkt in der Sitzung erhalten. Beispiel:

foreach ($_SESSION['products'] as $product) { 
    $name = $product['name']; 
    $id = $product['id']; 
    $price = $product['price']; 
    $img = $product['img']; 
    $sku = $product['sku']; 
    $description = $product['description']; 

    echo "<h1>Product: $name</h1>"; 
    echo "<p>Price: $price | ID: $id</p>"; 
    echo "<img src='$img'>"; 
    echo "<p>$description</p>"; 
    echo "<hr />"; 
} 
+0

Diese Methode ist viel sauberer – PhpDude