|
| |
|
|
| |
для: Trianon
(01.08.2007 в 12:20)
| | | спасибо, вроде уже разобралась. | |
| |
|
|
| |
|
|
| |
для: inga
(01.08.2007 в 11:16)
| | | count - если если вы говорите о количестве заказанного товара определенного кода - должен храниться (и наращиваться) в одном из элементов подмассива, по индексу кода товара.
count - количество выбранных видов товара - должно определяться функцией count(массив_с товарами)
Код и вправду нужно несколько поправить.
<?
session_start();
$indeks = код_товара;
$name = наименование_товара;
if(!isset($_SESSION["index"][$indeks])) // Если нет $_SESSION["index"][idx] (тоесть человек еще не выбирал этот товар)
{
$_SESSION["index"][$indeks]['count']=0;
$_SESSION["index"][$indeks]['name']=$name;
}
++$_SESSION["index"][$indeks]['count'];
foreach($_SESSION["index"] as $idx => $tov)
{
echo "<tr>";
echo "<td >".$idx."</td>";
echo "<td >$tov[name]</td>";
echo "<td >$tov[count]</td>";
echo "</tr>";
}
?>
|
давайте всё же определимся, откуда поступают данные, и каким образом нужно их вывести на экран. | |
| |
|
|
| |
|
|
| |
для: Trianon
(31.07.2007 в 18:10)
| | | ну так вообще не работает, откуда будет браться count?
при выводе переменных сессии выводит:
["index"]=> &array(1) { ["count"]=> string(5) "30246" } ["name"]=> &array(1) { ["count"]=> string(5) "AVISO" } ["smsp"]=> &array(1) { ["count"]=> string(5) "16.76" } ["shtuki"]=> &array(1) { ["count"]=> string(1) "1" } ["cena_pered"]=> &array(1) { ["count"]=> float(1.5) } ["cena"]=> &array(1) { ["count"]=> float(18.26) } ["q"]=> &array(1) { ["count"]=> int(1) } ["count"]=> &int(1) ["messs"]=> &array(1) { ["$count"]=> array(1) { ["$i"]=> int(0) } } }
Может я не правильно как то вопрос задаю, уже не знаю что думать | |
| |
|
|
| |
|
|
| |
для: inga
(31.07.2007 в 16:32)
| | | Ошибка в том, что с массивами в php так не работают.
Вы пытаетесь типичный C-код переложить на php.
Посмотрите, как это делается в php
<?
session_start();
$indeks = код_товара;
$name = наименование_товара;
if(!isset($_SESSION["index"][$indeks])) // Если нет $_SESSION["index"][idx] (тоесть человек еще не выбирал этот товар)
{
echo $count=$_SESSION["count"]+1;
$_SESSION["index"]['count']=0;
$_SESSION["index"]['name']=$name;
}
++$_SESSION["index"]['count'];
// никаких session_unregister - это старый инструмент
// ну и тут вывожу
foreach($_SESSION["index"] as $idx => $tov)
{
echo "<tr>";
echo "<td >".$idx."</td>";
echo "<td >$tov[name]</td>";
echo "<td >$tov[count]</td>";
echo "</tr>";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: inga
(31.07.2007 в 16:32)
| | | вот я вывожу все сессионные пременные:
array(40) { ["metka"]=> &int(0)
1) товар ["index['0']"]=> &string(4) "8303"
["name['0']"]=> &string(9) "АБОНЕМЕНТ"
["smsp['0']"]=> &string(4) "0.27"
["shtuki['0']"]=> &string(1) "1"
["cena_pered['0']"]=> &float(1.5)
["cena['0']"]=> &float(0.045) ["q['0']"]=>
&int(1) ["messs['0']['1']"]=> &int(0)
["messs['0']['2']"]=> &int(0) ["messs['0']
['3']"]=> &int(0) ["messs['0']['4']"]=>
&int(0) ["messs['0']['5']"]=> &int(0)
["messs['0']['6']"]=> &int(0) ["messs['0']
['7']"]=> &int(1) ["messs['0']['8']"]=>
&int(0) ["messs['0']['9']"]=> &int(0)
["messs['0']['10']"]=> &int(0) ["messs['0']
['11']"]=> &int(0) ["messs['0']['12']"]=>
&int(0)
2) товар ["index['2']"]=> &string(4) "8232"
["name['2']"]=> &string(20) "АВТО ВОСТОК
(ХАРКIВ)" ["smsp['2']"]=> &string(4) "10.1"
["shtuki['2']"]=> &string(1) "1"
["cena_pered['2']"]=> &float(1.5)
["cena['2']"]=> &float(11.6) ["q['2']"]=>
&int(1) ["messs['2']['1']"]=> &int(0)
["messs['2']['2']"]=> &int(0) ["messs['2']
['3']"]=> &int(0) ["messs['2']['4']"]=>
&int(0) ["messs['2']['5']"]=> &int(0)
["messs['2']['6']"]=> &int(0) ["messs['2']
['7']"]=> &int(1) ["messs['2']['8']"]=>
&int(0) ["messs['2']['9']"]=> &int(0)
["messs['2']['10']"]=> &int(0) ["messs['2']
['11']"]=> &int(0) ["messs['2']['12']"]=>
&int(0) ["count"]=> &int(1) }
|
может это поможет понять где ошибка, вот видите первого индеска нет и больше двух в карзину не записывается, просто проподает то что было выбрано предпоследним | |
| |
|
|
| |
|
|
| |
для: Trianon
(31.07.2007 в 15:09)
| | | если я indeks не буду держать в сесиии как же он выведется в карзине. Я вообще все держу в сессиях, там помимо этих переменных еще много всякого, подсчет цены и др. Тут я написала сокращенный вариант. Пока человек не определился окончательно с выбором товара все держу в сессии, он же может еще и удалить чтото, а после уже все буду записывать в базу. Так подскажите где ошибка в моем примере? | |
| |
|
|
| |
|
|
| |
для: inga
(31.07.2007 в 14:49)
| | | если name зависит от indeks - её вообще в сессии можно не держать.
я так понимаю, indeks - это код товара?
<?
session_start();
$kodtov = intval($_POST['kodtov']);
if(!isset $_SESSION['tov'][$kodtov])
$_SESSION['tov'][$kodtov] = 0;
++ $_SESSION['tov'][$kodtov];
$list = implode(',', array_keys($_SESSION['tov']));
$res = mysql_query($sql = "SELECT id, name FROM tovar WHERE id IN ($list)")
or die("Error in $sql :". mysql_error());
for(names = array(); $row = mysql_fetch_assoc($res); )
$names[$row['id']] = $row['name'];
foreach($_SESSION['tov'] as $tov => $count)
echo "Code: $tov, Name: ".htmlspecialchars($name[$tov]).", count: $count<br/> \r\n";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(31.07.2007 в 13:27)
| | | Переменная $indeks перкедается при выборе товара, а $name вытягивается из базы в зависимости от $indeks. | |
| |
|
|
| |
|
|
| |
для: inga
(31.07.2007 в 13:21)
| | | определите, пожалуйста, переменные $indeks и $name
А то непонятно, откуда что берется.
умалчиваемая нумерация индексов в массиве идет от нуля.
Так что добавлять единицу не требуется. | |
| |
|
|
| |
|
|
| | Формирую карзину для покупателя:
<?
if(isset($_SESSION["count"])) // Если есть
$_SESSION["count"] (тоесть человек уже что
то выбирал) создаю переменную $count и
таким образом создаю следуйщий индекс для
нового товара записывая его в сессионные
переменные
{
echo $count=$_SESSION["count"]+1;
$_SESSION["index['".$count."']"]=$indeks;
$_SESSION["name['".$count."']"]=$name;
session_unregister("count");// удаляю чтобы после присвоить новое значение
$_SESSION["count"]=$count;
}
else // Если же $_SESSION["count"] нет то записываю все в 0 элемент.
{
$count=0;
$_SESSION["index['".$count."']"]=$indeks;
$_SESSION["name['".$count."']"]=$name;
$_SESSION["count"]=$count;
}
// ну и тут вывожу
for($i=0; $i<$count+1;$i++)
{
if($i==1) continue; // это пришлось
написать, так как постоянно выдает ошибку
что первого элемента нет, не понятно почему
его нет
echo "<tr>";
echo "<td >".$_SESSION["index['".$i."']"]."</td>";
echo "<td >".$_SESSION["name['".$i."']"]."</td>";
echo "</tr>";
}
?>
|
И выходит ерунда. В карзине больше чем два товара не выводит, первый выводит тот что был выбран в самом начале и вторым выводит последний, сколько бы я их не выбирала. ПОМОГИТЕ РАЗОБРАТЬСЯ | |
| |
|
|
|