2016-07-22 2 views
0

У меня есть куча данных в массиве, который был собран в сеансе. Я могу print_r это и показать все содержимое, но я изо всех сил, чтобы показать название продукта, идентификатор, изображение и т.д.

Я показываю с помощью:

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

Он печатает все, что нужно, но не в том формате, который мне нужен. Поэтому я знаю, что он собирает мои данные и хранит их в массиве. Я установил данные в другие файлы следующим образом:

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']; 
} 

И все это выше, я хочу вывести.

+0

удалите [] в конце каждой переменной $ _SESSION. – ChrisG

+0

Просьба уточнить, что вы пытаетесь сделать. Насколько я могу судить, вы спрашиваете, как выводить данные в «читаемом» формате, в то время как print_r для меня довольно читабельна. – Bailey

+0

Извините, поэтому, например, мне нужно показать изображение продукта, название продукта, как и при выборе этих элементов из базы данных – PhpDude

ответ

1

** Либо вы вставляете с вашим предложением: $_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']; 
} 

и отформатировать его следующим образом:

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

Или использовать этот другой метод:

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']; 
} 

и отформатировать его так:

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

Но мой вопрос в том, как я могу выводить эти данные в читаемом формате? – PhpDude

+0

Используйте цикл [foreach] (http://php.net/manual/en/control-structures.foreach.php). – Bailey

+0

Удаляем '[]' он останавливает меня, имея возможность добавлять несколько элементов в сеанс – PhpDude

1

Простым способом вывода этого как HTML является использование цикла foreach, который проходит через каждый элемент массива.

Чтобы упростить задачу, я бы предложил изменить ваш POST-код, чтобы каждый элемент был единственным массивом, например.

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'] 
    ); 
} 

Теперь вы можете перебирать $_SESSION['products'] и получить информацию для каждого продукта в сеансе. Например:

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

Этот метод намного чище – PhpDude