У меня есть задание настроить корзину для акций.Запрос API работает, и я могу добавить количество в корзину.Цикл foreach отображает 1 строку в таблице HTML.Если я выполню другой запрос API для котировки акций и добавлю количество для второй котировки, таблица не отобразит вторую строку.
Я использую текущую версию XAMPP, PHP и MYSQL.Этот проект является упражнением в том, как использовать переменные SESSION для хранения данных между страницами.
Вот мой файл browse.php
<code>
<?php
session_start();
require 'head.php';
require 'nav.php';
if(!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
}
if(isset($_GET['clear']))
{
$_SESSION['cart'] = array();
}
if(isset($_GET['stockID']))
{
$stockID = $_GET['stockID'];
$quan = $_GET['quan'];
$name = $_GET['name'];
$symbol = $_GET['symbol'];
$price = $_GET['price'];
if(!isset($_SESSION['cart'][$stockID]))
{
$_SESSION['cart'][$stockID]['quan'] = $quan;
$_SESSION['cart'][$stockID]['name'] = $name;
$_SESSION['cart'][$stockID]['symbol'] = $symbol;
$_SESSION['cart'][$stockID]['price'] = $price;
}
else
{
$_SESSION['cart'][$stockID]['quan'] += $quan;
}
}
if(isset($_GET['quote']))
{
$stock = $_GET['quote'];
//base URL
$service_url = "https://api.iextrading.com/1.0/stock";
//add endpoint
$service_url .= "/$stock/batch?types=quote";
//add search val
//useful for debug - uncomment if needed
//echo $service_url."<br>";
//Use CURL to fetch the response
$curl = curl_init($service_url);
//had to set up several options to make this work
$user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';
curl_setopt($curl, CURLOPT_URL, $service_url);
curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$curl_response = curl_exec($curl);
if ($curl_response === false)
{
$info = curl_getinfo($curl);
curl_close($curl);
die('error occurred during curl exec. Additional info: ' . var_export($info));
}
curl_close($curl);
$decoded = json_decode($curl_response, 1);
if(!empty($decoded))
{
$symbol = $decoded['quote']['symbol'];
$name = $decoded['quote']['companyName'];
$price = $decoded['quote']['latestPrice'];
/*
echo $symbol."<br>";
echo $name."<br>";
echo $price."<br>";
*/
echo"<pre>";
print_r($_SESSION['cart']);
echo"
"; echo"
Портфель акций
"; echo"
Просмотр котировок акций
"; echo" Фондовый символ Название компании Цена за акцию Количество $ символ $ name $ price Добавить в корзину ";} else {echo" Список не найден ";}}?>Фондовый символ
А это мой файл cart.php
<code>
p
session_start();
require 'head.php';
require 'nav.php';
if(!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
}
if(isset($_GET['clear']))
{
$_SESSION['cart'] = array();
}
if(isset($_GET['stockID']))
{
$stockID = $_GET['stockID'];
$quan = $_GET['quan'];
$_SESSION['cart'][$stockID]['quan'] = $quan;
if($_SESSION['cart'][$stockID]['quan'] == 0)
{
unset($_SESSION['cart'][$stockID]);
}
}
?>
<?php
echo "<pre>";
print_r($_SESSION['cart']);
echo "
";?>
Портфель акций
Корзина для котировок акций
Фондовый символ Название компании Цена Количество Итого $ val) {$ sub = $ val ['quan'] * $ val ['price'];$ total + = $ sub;$ sub = "$".число_формат ($ sub, 2);$ total = "$".число_формат (всего $ 2);echo " {$ val ['symbol']} {$ val ['name']} {$ val ['price']} Обновить количество $ sub ";} // foreach?> Итого Фондовый символЯ получаю табличное представление на обеих страницах после запроса первой котировки акций. Я добавляю количество и нажимаю на кнопку добавления количества, и он покажет первый запрос в корзине. Но когда я выполняю второй запрос и пытаюсь добавить его в корзину, в таблице ничего не отображается.