Session

levi-de

Новичок
Session

Ребята, помогите, пожалуйста, решить следующий вопрос. Я делаю Интернет-магазин и у меня возникла проблема с организацией так называемой «корзины пользователя».

Нижеприведённым кодом я вывожу на экран браузера список товаров витрины из таблицы hallo с помощью массива. На экран браузера выводится таблица, состоящая из 2 столбцов (Name, Add).
Столбцу Name соответствуют строки с именами продуктов, помещённые в таблицу посредством массива, а столбцу Add – строки с кнопкой “Submit” и value=”массив из id”


<?php
Подключение к базе
$sql="select * from hallo";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
echo "<Table border='1'><tr><td>";
echo "<form action='bearbeiten.php' method='post'>";
echo "<Table border= '0' ><tr>";
echo "<td>Name</td><td>Add</td></tr>";
for($i=0;$i<$rows;$i++)
{
mysql_data_seek($result,$i);
$arr_guest=mysql_fetch_array($result);
echo "<tr>";
echo "<td>".$arr_guest["name"]."</td>";
echo "<td><input type='submit' name='zeig[]' value='".$arr_guest["id"]."' ></td></tr>";
}
echo "</Table>";
mysql_close();
?>

При нажатии на кнопку “Submit” на экран браузера выводится номер id соответствующего продукта. Но при нажатии кнопки Submit, соответствующей другому продукту, предыдущий номер id исчезает и его замещает новый.
Подскажите, пожалуйста, как переделать программный код так, что бы предыдущий id продукта не исчезал…
А так же при просмотре ‘bearbeiten.php’ как самостоятельно открытого файла нужно сделать, что бы были показаны все, ранее выбранные id номера.
По моему это делается с помощью session, только у меня ни как не получается, помогите пожалуйста.
Ниже приведён код bearbeiten.php

<?php
Подключение к базе
if(is_array($zeig))
{
foreach ($zeig as $zzz)
{
$result = mysql_query( "select id from hallo where id = '$zzz'");
$rows=mysql_num_rows($result);
while ( $a_row = mysql_fetch_row( $result ) )
{
foreach ( $a_row as $field )
print ("$field");
}
}
}
mysql_close();
?>
 

Кром

Новичок
Эх, рановато тебе магазины делать. :)
Ерунда это какая-то, а не код.

Сначала почитай про механизм сессий
http://faq.phpclub.ru/sessions
Потом что нибудь по mysql и разработку Интернет приложений.
А пока ничего опреденного посоветовать нельзя.
 

levi-de

Новичок
Давайте разберёмся с самого начала.
Допустим, у меня база данных состоит из 3 полей id, name, price.
В документе index.php я вывожу все продукты в таблицу с помощью массива. Рядом с каждым продуктом появляется картинка add.gif, несущая в себе функции кнопки submit.

Это витрина.
В принципе рассуждений прав? Или было бы лучше это всё дело организовать как-нибудь по другому?

<?php
подключение к базе
$sql="select * from hallo";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
echo "<form action='12.php' method='post'>";
echo "<Table border= '1' width='300'>";
for($i=0;$i<$rows;$i++)
{
mysql_data_seek($result,$i);
$arr_guest=mysql_fetch_array($result);
echo "<tr><td>".$arr_guest["id"]."</td>";
echo "<td>".$arr_guest["name"]."</td>";
echo "<td>".$arr_guest["price"]."</td>";
echo "<td><input type='image' src='add.gif'></td></tr>";
}
echo "</Table>";
echo "</form>";
mysql_close();
?>

Теперь для того, чтобы обработать выбранный пользователем продукт, нужно как то идентифицировать каждую строку. То есть при нажатии на кнопку add.gif нужно как то получить данные именно о выбранном пользователе. Подскажите пожалуйста, как это сделать, очень, очень нужно.
 

lucas

Guest
1. Я так понимаю, поле id в таблице -- первичный ключ?
Создавай форму не для всех товаров, а отдельную для каждого, и помещай в нее тег input типа hidden, где и записывай id этого товара.
Надеюсь, проблем с получением этого идентификатора не будет.

2. Не стоит выводить HTML-код оператором echo.
Делай так:

PHP:
<?php /* php-код */ ?>
</table>
<?php /* снова php-код */ ?>
3. Получай результат воборки из БД так:
PHP:
$query = mysql_query(...) ;
while ($data = mysql_fetch_assoc($query))
{   // работаем с записью
}
 

levi-de

Новичок
Так точно, id – это PRIMARY KEY
Насколько я понимаю, форма для всех товаров уже создана (action =12.php)

А как можно создать форму для отдельно каждого товара, у меня же массив! И какой action надо придать этой форме???

Мне, конечно, очень неудобно просить, но может быть покажите как код надо исправить, а то очень нужно!!! Плиз!

<?php
подключение к базе
$sql="select * from hallo";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
echo "<form action='12.php' method='post'>";
echo "<Table border= '1' width='300'>";
for($i=0;$i<$rows;$i++)
{
mysql_data_seek($result,$i);
$arr_guest=mysql_fetch_array($result);
echo "<tr><td>".$arr_guest["id"]."</td>";
echo "<td>".$arr_guest["name"]."</td>";
echo "<td>".$arr_guest["price"]."</td>";
echo "<td><input type='image' src='add.gif'></td></tr>";
}
echo "</Table>";
echo "</form>";
mysql_close();
?>
 

Фанат

oncle terrible
Команда форума
забавно.
как нынче просто быть веб-программистом.
в одном местенадыбвать кривой код, потом пойти в другое место ипопросить его исправить.
 

levi-de

Новичок
Уважаемый Фанат. Я не претендую на звание web-программиста, а Вы с Вашим статусом заведующего могли бы не издеваться, а просто помочь. Тем более я уверен, что Вы знаете как.
 

Фанат

oncle terrible
Команда форума
знаю.
идем в [f]newbie[/f] и там смотрим ервые две ссылки.
первую можно отложить, но прочесть обязательно, когда будет время, а вторую - прочесть сейчас, ибо там дается пример, как правильно работать с базой, а не через хто, прости, господи, убожество mysql_data_seek

Далее.
надо, если не развито абстрактное мышление, надо рисовать желаемый хтмл сначала руками.
то есть, сначала получить желаемый результат вручную, а потом уже добиваться такого же с помощью пхп.

Только не говори, что ты не можешь написать на хтмл две формы одна над другой, отличающиеся значением одного хидден поля.

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

Неужели какой-то из этих пунктов представляет для тебя трудность?

-~{}~ 09.03.04 00:38:

а потом читаешь фак по сессиям, сначала опять же, запускаешь простые примеры, не прикруживая сразу к магазину!
разбираешься, как работает, а потом тоьлко начинаешь делать корзину
 

levi-de

Новичок
Я пока оставил сессии в покое… Я вывожу имя продукта из таблицы посредством нажатия на кнопку submit (value=’ ".$arr_guest["id"]." ’). То есть на каждой кнопке написан id продукта… Так всё работает.

Но когда я пытаюсь заменить кнопку на изображение <input type=’image’ src=’add.gif’>ничего не желает работать. Свойства name и Value я пытаюсь передать с помощью hidden
То есть вместо кода кнопки пишу
<input type=’hidden’ value='".$arr_guest["id"]."' name='zeig[]'<input type=’image’ src=’add.gif’>

Вот такая вот проблема. Может подскажите? Только просьба, не пишите ссылки на учебный материал, я всё там проработал и так опять ничего не понял. То есть в простых примерах, которые там написаны я разобрался, а вот к данной задаче ничего там подходящего нет.


index.php

<?php
подключение к базе
$sql="select * from hallo";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
echo "<Table border='1'><tr><td>";
echo "<form action='1.php' method='post'>";
echo "<Table border= '0' width='200'>";
echo "<form>";
for($i=0;$i<$rows;$i++)
{
mysql_data_seek($result,$i);
$arr_guest=mysql_fetch_array($result);
echo "<tr>";
echo "<td>".$arr_guest["description"]."</td>";
echo "<td><input type='submit' value='".$arr_guest["id"]."' name='zeig[]'></td></tr>";
}
echo "</form>";
echo "</Table>";
mysql_close();
?>



1.php


<?php
подключение к базе
if(is_array($zeig))
{
foreach ($zeig as $zzz)
{
$sql="select description from hallo where id = '$zzz'";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
for($i=0;$i<$rows;$i++)
{
mysql_data_seek($result,$i);
$arr_guest=mysql_fetch_array($result);
print "".$arr_guest["description"]."";
}
}
}
mysql_close();
?>
 

Фанат

oncle terrible
Команда форума
а вот к данной задаче ничего там подходящего нет.
вранье.

Скажи, ты вообще хоть на что-то способен, кроме как на вываливание однообразного кода и всхлипы с просьбами за тебя его исправить?
Ты вообще читать-то умеешь?
Ты читал, что я тебе написал?
Кроме ссылок?

Форму на рисовал?
ХИДДЕН ПОЛЕ сделал?
почему об этом - ни слова, а опять только нытье "сделайте мене".
Ну если такой беспомощный - плати деньги.
А то халявщиков таких слишком много развелось - в одном месте надыбать кривой код, потом пойти в другое место и попросить его исправить.
 

levi-de

Новичок
По поводу просьб и всхлипываний, это вы конечно правы. Некрасиво с моей стороны, просто очень сильно хочется, чтоб заработало…

По поводу HTML и абстрактного мышления всё в порядке. HTML я знаю почти в совершенстве, сам по книжкам выучил.

Вот, сделал всё по Вашей инструкции.

Работает только первая строка, а на все остальные вообще даже реагировать не хочет

<?php
подключение
$sql="select * from hallo";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
echo "<Table border='1'><tr><td>";
echo "<form action='1.php' method='post'>";
echo "<Table border= '0' width='200'>";

for($i=0;$i<$rows;$i++)
{
echo "<form>";
mysql_data_seek($result,$i);
$arr_guest=mysql_fetch_array($result);
echo "<tr>";
echo "<td>".$arr_guest["description"]."</td>";
echo "<td><input type='hidden' value='".$arr_guest["id"]."' name='zeig[]'><input type='image' src='add.gif'></td></tr>";
echo "</form>";
}
echo "</form>";
echo "</Table>";
mysql_close();
?>
 

Фанат

oncle terrible
Команда форума
как это по моей инструкции????
по моей инструкции - форму вставить в цикл!
а не уикл - в форму!
теги <form> должне быть внутри!!!

по моей инструкции вывод из базы осуществляется не этим уродским и тормозным mysql_data_seek!

-~{}~ 09.03.04 16:38:

Что значит - "работает первая строка"?
при чем здесь какая-то строка, если мы генерируем некий хтмл.
который должен соответствовать запланированному?
Ничего вообще не должно работать.
Должна получиться форма. Такая, как задумано.
Если получилась - то все будет работать.
Если не получилось - то либо не так задумали, либо не так сделали. Значит, надо передумывать и переделывать.

ХТМЛ ты знаешь, по твоим утверждениям, писатель магазинов.
переделать пхп код, чтобы выводил не то, а другое - тоже не бином ньютона.
Хватит клянчить

-~{}~ 09.03.04 16:45:

вся твоя беда в том, что ты хочешь что-то сделать, не понимая смысла этого.

тебе нужна форма.
ок.
ты ее делаешь, но даже на нее не смотришь.
сгенерил, ткнул мышкой - не работает.
А ТЫ ПОГЛЯДИ! открой код этой формы. почему не работает
и исправь скрипт, чтобы работало
 
Сверху