Сразу скажу, что в php и субд я новичок) есть таблица с такими полями: id, brand, name, в которой одному brand`у может соответствовать несколько name`ов. есть такой код: <?php $host = "***"; $user = "***"; $pass = "***"; $dbname = "***"; $table = "***"; $conn = mysql_connect ($host, $user, $pass); $query = "SELECT * FROM $table WHERE brand LIKE 'A%' GROUP BY brand"; $result = mysql_db_query ($dbname, $query, $conn); while ($row = mysql_fetch_array ($result)) { print <<<HERE <center> $row[brand] </center> HERE; $i++; } ?> вопрос такой: как сделать так, чтобы каждый элемент списка brand`ов, который является результатом работы этого кода, являлся ссылкой на страницу, на которой, в свою очередь, будет список из name`ов, соответствующий brand`у на который нажал пользователь. я понимаю, что, посидев подольше с литературой, я мог бы в конце концов разобраться сам, но пока, к сожалению, ничего не приходит в голову, да и к тому же я ограничен во времени и мне нужно сделать это как можно быстрее, поэтому надеюсь на любые ваши советы
Вот файл class.SELECT.php PHP: <?php class SELECT { private $db; private $table; private $result = array(); public function __construct($host="localhost", $login="root", $password="", $dbname="", $table="") { $this->db = new mysqli($host, $login, $password, $dbname); $this->$table = $table; } public function get_brands() { $query = "SELECT DISTINCT brand FROM $this->table"; if ($result = $this->db->query($query)) { while($arr = $result->fetch_assoc()) { $this->result[] = $arr; } return true; }else { return false; } } public function get_names($brand) { $brand = mysqli_real_escape_string($this->db, $brand); $query = "SELECT * FROM $this->table WHERE brand = '$brand'"; $result = $this->db->query($query); if ($result = $this->db->query($query)) { while($arr = $result->fetch_assoc()) { $this->result[] = $arr; } return true; }else { return false; } } public function get_result() { return $this->result; } public function get_error() { return mysqli_error($this->db); } } ?> Файл class.MAIN.php PHP: <?php class MAIN { private $hz = false; public function __construct() { $this->hz = true; } public function show_template($name) { if (file_exists('./templates/' . $name . 'php')) { include('./templates/' . $name . 'php'); } } public function hz() { return $this->hz; } } ?> brands.php PHP: <?php include ('class.MAIN.php'); include ('class.SELECT.php'); $SELECT = new SELECT('','','','',''); $MAIN = new MAIN; if ($result = $SELECT->get_brands()) { $brands = $SELECT->get_result(); $MAIN->show_template('brands'); }else { echo "an error has been occured\n" . $SELECT->get_error(); } ?> names.php PHP: <?php include ('class.MAIN.php'); include ('class.SELECT.php'); $SELECT = new SELECT('','','','',''); $MAIN = new MAIN; if (isset($_REQUEST["brand"])) { if ($result = $SELECT->get_names()) { $names = $this->get_result(); $MAIN->show_template('names'); }else { echo "an error has been occured\n" . $SELECT->get_error(); } } ?> ./templates/names.php PHP: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title></title> </head> <body> <?php if (!$MAIN->hz) { die(':-)'); } ?> Список names. <form name="brand" method="POST" action="/names.php"> <select name='brand'> <?foreach($names as $key=>$value):?> <?=$value['name']?> <?endforeach;?> </select> </form> </body> </html> ./templates/brands.php PHP: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title></title> </head> <body> <?php if (!$MAIN->hz) { die(':-)'); } ?> Выберите brand <form name="brand" method="POST" action="/names.php"> <select name='brand'> <?foreach($brands as $key=>$value):?> <option value="<?=$value['brand']?>"></option> <?endforeach;?> </select> </form> </body> </html> На баги и ошибки не проверял, и не комментил специально. Смотри и разбирайся, как это должно работать) php 5, mysql > 4.1.3
спасибо за ответ) с интересом разберусь, но сразу вопрос: здесь насколько я понимаю пользователь будет выбирать бренд из выпадающего списка? просто мне нужно чтобы список выглядел, как обычные <a href=...> это возможно? чтобы из формы информация передавалась в скрипт при нажатии обычной ссылки
PHP: <form name="brand" method="POST" action="/names.php"> <select name='brand'> <?foreach($brands as $key=>$value):?> <option value="<?=$value['brand']?>"></option> <?endforeach;?> </select> </form> Забыл <input type="submit">, кстати. PHP: <?foreach($brands as $key=>$value):?> <a href="/names.php?brand=<?=$value['brand']?>"><?=$value['brand']?></a> <?endforeach;?> Неужели до этого сложно самому дойти?
остроумно... а что будет содержаться в $_COOKIE['name'] и как вообще работает это все? Можно на пальцах обьяснить? мда...вместо ответа, почему то отредактировал свою мессагу)) пора поспать
а вопрос был о куки. Не понимаю как они работают, если всем посылаются одинаковые куки, каким образом разделять пользователей?
так посылай разные, афро-амениканцам — чёрные, азиато—американцам — жёлтые, европо—американцам — зелёненькие Пообщался тут с одним политкорректным, до сих пор отойти не могу. (
ну, не серьёзно же ко всему этому относиться… Что именно не понятно? Куки можно как пытаться поставить, так и пытаться читать. Можно же посылать не просто ставить куку name со значением value, а для каждого пользователя это value определять отдельно. Тогда, само-собой, всем придут разные куки.
Это-то понятно, а каким образом для каждого определять value отдельно совсем непонятно)) в этом и был мой вопрос)
смотря на то, чем у тебя пользователи разнятся. ну, например, setcookie('time', time(), time()+3600); каждому пользователю отсылается кука time со значением даты и времени его захода на сайт. Практически для всех значение будет разное.
спасибо) щас попробую) соответственно по времени захода на сайт можно каждому пользователю дать имя типа User№? Или можно проще как-нибудь имена раздавать?)
примерно так, как в инет-магазине, человек заходит выбирает что-то и добавляет в корзину(таблица БД), нужно, чтобы в таблицу так же записывалось кто добавил эту запись, например в поле User. Чтобы потом можно было вывести все строки, которые добавил 1 человек. Мне показалось, что куки для этого проше всего, потому что в сессиях я совсем ничего не понял)
у кук есть одно замечательное свойство — их можно отключать. В этом случае такая система работать не будет. Что мешает просто писать в базу имя заказчика, которое он указывает во время оформления заказа? Ну или просто генерировать номер заказа, который и выдавать пользователю, что бы он мог позже зайти на сайт, ввести свой номер и изменить заказ.
то есть каждый раз когда он захочет что-нибудь добавить в корзину ему придется указывать имя свое? Ведь оформление обычно происходит после того, как пользователь уже что-нибудь добавил в корзину
если тебе надо предусмотреть добавление в корзину только за один сеанс, то лучше уж с сессиями разберись.