За последние 24 часа нас посетили 16690 программистов и 1650 роботов. Сейчас ищут 2023 программиста ...

вопрос о ссылках

Тема в разделе "Вопросы от блондинок", создана пользователем frantic, 8 ноя 2007.

  1. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    Сразу скажу, что в 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`у на который нажал пользователь.

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

    Inakrin Активный пользователь

    С нами с:
    26 авг 2007
    Сообщения:
    32
    Симпатии:
    0
    Вот файл class.SELECT.php
    PHP:
    1.  
    2.  
    3. <?php
    4.  
    5. class SELECT
    6. {
    7.     private $db;
    8.     private $table;
    9.     private $result = array();
    10.     public function __construct($host="localhost", $login="root", $password="", $dbname="", $table="")
    11.     {
    12.         $this->db = new mysqli($host, $login, $password, $dbname);
    13.         $this->$table = $table;
    14.     }
    15.  
    16.     public function get_brands()
    17.     {
    18.         $query = "SELECT DISTINCT brand FROM $this->table";
    19.  
    20.         if ($result = $this->db->query($query))
    21.         {
    22.             while($arr = $result->fetch_assoc())
    23.             {
    24.                 $this->result[] = $arr;
    25.             }
    26.             return true;
    27.         }else
    28.         {
    29.             return false;
    30.         }
    31.     }
    32.     public function get_names($brand)
    33.     {
    34.         $brand = mysqli_real_escape_string($this->db, $brand);
    35.         $query = "SELECT * FROM $this->table WHERE brand = '$brand'";
    36.         $result = $this->db->query($query);
    37.         if ($result = $this->db->query($query))
    38.         {
    39.             while($arr = $result->fetch_assoc())
    40.             {
    41.                 $this->result[] = $arr;
    42.             }
    43.             return true;
    44.  
    45.         }else
    46.         {
    47.             return false;
    48.         }
    49.     }
    50.     public function get_result()
    51.     {
    52.         return $this->result;
    53.     }
    54.     public function get_error()
    55.     {
    56.         return mysqli_error($this->db);
    57.     }
    58.  
    59. }
    60. ?>
    61.  
    62.  
    63.  
    Файл class.MAIN.php

    PHP:
    1.  
    2. <?php
    3. class MAIN
    4. {
    5.     private $hz = false;
    6.     public function __construct()
    7.     {
    8.         $this->hz = true;
    9.     }
    10.     public function show_template($name)
    11.     {
    12.         if (file_exists('./templates/' . $name . 'php'))
    13.         {
    14.             include('./templates/' . $name . 'php');
    15.         }
    16.     }
    17.     public function hz()
    18.     {
    19.         return $this->hz;
    20.     }
    21. }
    22.  
    23.  
    24. ?>
    25.  
    26.  
    brands.php
    PHP:
    1.  
    2. <?php
    3. include ('class.MAIN.php');
    4. include ('class.SELECT.php');
    5. $SELECT = new SELECT('','','','','');
    6. $MAIN = new MAIN;
    7. if ($result = $SELECT->get_brands())
    8. {
    9.      $brands = $SELECT->get_result();
    10.      $MAIN->show_template('brands');
    11. }else
    12. {
    13.     echo "an error has been occured\n" . $SELECT->get_error();
    14. }
    15.  
    16.  
    17. ?>
    18.  
    19.  
    names.php
    PHP:
    1.  
    2. <?php
    3. include ('class.MAIN.php');
    4. include ('class.SELECT.php');
    5. $SELECT = new SELECT('','','','','');
    6. $MAIN = new MAIN;
    7. if (isset($_REQUEST["brand"]))
    8. {
    9.     if ($result = $SELECT->get_names())
    10.     {
    11.          $names = $this->get_result();
    12.          $MAIN->show_template('names');
    13.     }else
    14.     {
    15.         echo "an error has been occured\n" . $SELECT->get_error();
    16.     }
    17. }
    18.  
    19. ?>
    20.  
    21.  
    ./templates/names.php
    PHP:
    1.  
    2. <html>
    3.  
    4. <head>
    5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    6.   <title></title>
    7. </head>
    8.  
    9. <body>
    10.  
    11. <?php
    12. if (!$MAIN->hz)
    13. {
    14.     die(':-)');
    15. }
    16. ?>
    17.  
    18. Список names.
    19. <form name="brand" method="POST" action="/names.php">
    20. <select name='brand'>
    21. <?foreach($names as $key=>$value):?>
    22. <?=$value['name']?>
    23. <?endforeach;?>
    24. </select>
    25. </form>
    26. </body>
    27.  
    28. </html>
    29.  
    ./templates/brands.php

    PHP:
    1.  
    2. <html>
    3.  
    4. <head>
    5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    6.   <title></title>
    7. </head>
    8.  
    9. <body>
    10.  
    11. <?php
    12. if (!$MAIN->hz)
    13. {
    14.     die(':-)');
    15. }
    16. ?>
    17.  
    18. Выберите brand
    19. <form name="brand" method="POST" action="/names.php">
    20. <select name='brand'>
    21. <?foreach($brands as $key=>$value):?>
    22. <option value="<?=$value['brand']?>"></option>
    23. <?endforeach;?>
    24. </select>
    25. </form>
    26. </body>
    27.  
    28. </html>
    29.  


    На баги и ошибки не проверял, и не комментил специально.
    Смотри и разбирайся, как это должно работать)
    php 5, mysql > 4.1.3 :)
     
  3. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    спасибо за ответ) с интересом разберусь, но сразу вопрос: здесь насколько я понимаю пользователь будет выбирать бренд из выпадающего списка? просто мне нужно чтобы список выглядел, как обычные <a href=...> это возможно? чтобы из формы информация передавалась в скрипт при нажатии обычной ссылки
     
  4. Inakrin

    Inakrin Активный пользователь

    С нами с:
    26 авг 2007
    Сообщения:
    32
    Симпатии:
    0
    PHP:
    1.  <form name="brand" method="POST" action="/names.php">
    2.  <select name='brand'>
    3.  <?foreach($brands as $key=>$value):?>
    4.  <option value="<?=$value['brand']?>"></option>
    5.  <?endforeach;?>
    6.  </select>
    7.  </form>
    Забыл <input type="submit">, кстати.

    PHP:
    1.  
    2.  <?foreach($brands as $key=>$value):?>
    3.  <a href="/names.php?brand=<?=$value['brand']?>"><?=$value['brand']?></a>
    4.  <?endforeach;?>
    5.  
    Неужели до этого сложно самому дойти?
     
  5. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    дошел уже и сам) просто я думал, что можно обойтись как-нибудь без GET...блондинко я видимо))
     
  6. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    остроумно...
    а что будет содержаться в $_COOKIE['name'] и как вообще работает это все? Можно на пальцах обьяснить?

    мда...вместо ответа, почему то отредактировал свою мессагу)) пора поспать
     
  7. Anonymous

    Anonymous Guest

    нееее....одна синенькая, другая розовая, во!
     
  8. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    а вопрос был о куки. Не понимаю как они работают, если всем посылаются одинаковые куки, каким образом разделять пользователей?
     
  9. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    так посылай разные, афро-амениканцам — чёрные, азиато—американцам — жёлтые, европо—американцам — зелёненькие :)
    Пообщался тут с одним политкорректным, до сих пор отойти не могу. (
     
  10. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    для вас просьба о помощи, пусть от человека, который не понимает в пхп, повод посмеяться?
     
  11. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ну, не серьёзно же ко всему этому относиться…

    Что именно не понятно? Куки можно как пытаться поставить, так и пытаться читать. Можно же посылать не просто ставить куку name со значением value, а для каждого пользователя это value определять отдельно. Тогда, само-собой, всем придут разные куки.
     
  12. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    Это-то понятно, а каким образом для каждого определять value отдельно совсем непонятно)) в этом и был мой вопрос)
     
  13. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    смотря на то, чем у тебя пользователи разнятся.

    ну, например, setcookie('time', time(), time()+3600);
    каждому пользователю отсылается кука time со значением даты и времени его захода на сайт. Практически для всех значение будет разное.
     
  14. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    спасибо) щас попробую) соответственно по времени захода на сайт можно каждому пользователю дать имя типа User№? Или можно проще как-нибудь имена раздавать?)
     
  15. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    что ты вообще сделать-то хочешь?
     
  16. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    примерно так, как в инет-магазине, человек заходит выбирает что-то и добавляет в корзину(таблица БД), нужно, чтобы в таблицу так же записывалось кто добавил эту запись, например в поле User. Чтобы потом можно было вывести все строки, которые добавил 1 человек. Мне показалось, что куки для этого проше всего, потому что в сессиях я совсем ничего не понял)
     
  17. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    у кук есть одно замечательное свойство — их можно отключать. В этом случае такая система работать не будет. Что мешает просто писать в базу имя заказчика, которое он указывает во время оформления заказа? Ну или просто генерировать номер заказа, который и выдавать пользователю, что бы он мог позже зайти на сайт, ввести свой номер и изменить заказ.
     
  18. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    то есть каждый раз когда он захочет что-нибудь добавить в корзину ему придется указывать имя свое? Ведь оформление обычно происходит после того, как пользователь уже что-нибудь добавил в корзину
     
  19. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    если тебе надо предусмотреть добавление в корзину только за один сеанс, то лучше уж с сессиями разберись.
     
  20. frantic

    frantic Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    понятно...спасибо