За последние 24 часа нас посетили 20578 программистов и 1124 робота. Сейчас ищут 743 программиста ...

Корзина магазина)

Тема в разделе "Решения, алгоритмы", создана пользователем Yahoo Yeyoo!, 28 июл 2007.

  1. Yahoo Yeyoo!

    Yahoo Yeyoo! Активный пользователь

    С нами с:
    2 май 2007
    Сообщения:
    111
    Симпатии:
    0
    Адрес:
    г.Жуковский
    написал простенький скрипт корзинки, поделитесь кто знает, как его можно сделать лучше, какие ошибки допустил, впервый раз пишу просто :)
    PHP:
    1.  
    2. #cart.php
    3. <?
    4. ?>
    5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    6. <html xmlns="http://www.w3.org/1999/xhtml">
    7. <head>
    8. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    9. <title>Тест</title>
    10. </head>
    11. <?
    12. if(!isset($_SESSION['c']) OR count($_SESSION)<=1){
    13.  echo "Корзина пуста";
    14.  }
    15. else{
    16. mysql_connect("localhost","root","");
    17. mysql_select_db('test_promo');
    18. $c = $_SESSION['c'];
    19. $cc = range(1,100);
    20. for($i=1;$i<=$c;$i++){
    21.    foreach ($cc as $number) {
    22.     if(in_array($number,$cc)){
    23.      if($number == $i){
    24.         if(!empty($_SESSION['item_id'.$number])){
    25.     $sql = "SELECT * FROM `".$_SESSION['tab_'.$number]."` WHERE cid=".$_SESSION['item_id'.$number];
    26.     $d = mysql_query($sql);
    27.         while($line = mysql_fetch_row($d)){
    28.             echo $line[2]."<a href='cart_action.php?act=del&item=".$number."'>[x]</a><p>";
    29.     }
    30.     }
    31.    }
    32.   }
    33.  }
    34. }
    35. #
    36. $result = '';
    37. for($i=1;$i<=$c;$i++){
    38.    foreach ($cc as $number) {
    39.     if(in_array($number,$cc)){
    40.      if($number == $i){
    41.         if(!empty($_SESSION['item_id'.$number])){
    42.     $sql = "SELECT * FROM `".$_SESSION['tab_'.$number]."` WHERE cid=".$_SESSION['item_id'.$number];
    43.     $d = mysql_query($sql);
    44.         while($line = mysql_fetch_row($d)){
    45.             $result.= $line[2]."
    46.             ";
    47.     }
    48.     }
    49.    }
    50.   }
    51.  }
    52. }
    53. $_SESSION['msg'] = $result;
    54. #
    55. }
    56. ?>
    57. <form method='post' action='cart_action.php?act=send'>
    58.   <table width='100%' border='0' cellspacing='0' cellpadding='3'>
    59.     <tr>
    60.       <td width='150'>Ваше имя</td>
    61.       <td><input name='fio' type='text'></td>
    62.     </tr>
    63.     <tr>
    64.       <td>Ваш телефон:</td>
    65.       <td><input name='phone' type='text'></td>
    66.     </tr>
    67.     <tr>
    68.       <td>Ваше эл.адрес:</td>
    69.       <td><input name='email' type='text'></td>
    70.     </tr>
    71.     <tr>
    72.       <td>&nbsp;</td>
    73.       <td><input name='send' type='submit' value='Отправить'></td>
    74.     </tr>
    75.   </table>
    76. </form>
    77. <body>
    78. </body>
    79. </html>
    и
    PHP:
    1.  
    2. #index.php
    3. <?
    4. mysql_connect("localhost","root","");
    5. mysql_select_db('test_promo');
    6. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    7. <html xmlns="http://www.w3.org/1999/xhtml">
    8. <head>
    9. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    10. <title>Untitled Document</title>
    11. </head>
    12. <a href=cart.php>Просмотреть добавленное</a><p>
    13. <ol>
    14. <?
    15. if(isset($_GET['tab'])){
    16. switch($_GET['tab']){
    17.     case'p100': $sql = "SELECT * FROM `p100` LIMIT 0, 30";
    18.     break;
    19.     case'p200': $sql = "SELECT * FROM `p200` LIMIT 0, 30";
    20.     break;
    21.     }
    22. }
    23. if(!isset($_GET['show'])){$_GET['show'] = 'page';}
    24. switch($_GET['show']){
    25.     case'catalogue':
    26.     $d = mysql_query($sql);
    27.     while($line = mysql_fetch_row($d)){
    28.     echo "<li>".$line[2]."<a href='cart_action.php?act=add&tab=".$_GET['tab']."&id=".$line[0]."&name=".$line[2]."'>добавить</a><p>";
    29.     }
    30.     break;
    31.     case'page':
    32.     echo "<a href='?show=catalogue&tab=p100'>Каталог1</a><p>";
    33.     echo "<a href='?show=catalogue&tab=p200'>Каталог2</a><p>";
    34.     $sql = "SELECT * FROM `pages` WHERE `id`=1";
    35.     $d = mysql_query($sql);
    36.     while($line = mysql_fetch_row($d)){
    37.     echo $line[3]."<p>".$line[5];
    38.     }
    39. }
    40. ?>
    41.  
    42. </ol><body>
    43. </body>
    44. </html>
    45.  
    и
    PHP:
    1.  
    2. <?
    3. #cart_action.php
    4. if($_GET['act']=="add"){
    5. //включаем счетчик
    6. if(!isset($_SESSION['c'])){$_SESSION['c']=0;}
    7. $c=intval($_SESSION['c']);
    8. ++$c;
    9. $_SESSION['c']=$c;
    10. ///////////////////////////////////////////////////////////////////*/
    11.     $_SESSION['item_id'.$c] = $_GET['id'];
    12.     $_SESSION['name_id'.$c] = $_GET['name'];
    13.     $_SESSION['tab_'.$c] = $_GET['tab'];
    14.     #echo "Наименование <b>".$_SESSION['name_id'.$c]."</b> с id равным <b>".$_SESSION['item_id'.$c]."</b>  было добавлено <p> последнее число - ".$c;
    15. header("Location: index.php");
    16. }
    17. if($_GET['act']=="del"){
    18.  $item = $_GET['item'];
    19.     #echo "Наименование <b>".$_SESSION['name_id'.$item]."</b> с id равным <b>".$_SESSION['item_id'.$item]."</b>  было удалено";
    20.     unset($_SESSION['item_id'.$item]);
    21.     unset($_SESSION['name_id'.$item]);
    22.     header("Location: cart.php");
    23. }
    24. if($_GET['act']=="send"){
    25.     $to = "root";
    26.     $subj = "Отправка заказа";
    27.     #$from = $_POST['fio'];
    28.     #$phone = $_POST['phone'];
    29.     #$email = $_POST['email'];
    30.     /*$msg = $_SESSION['msg']"
    31.     Заказчик - $from
    32.     Телефон  - $phone
    33.     Эл.Адрес - $email
    34.     "*/;
    35. #   $msg.= $_SESSION['msg'];
    36.     if(mail($to,$subj,$msg)){
    37.         echo "Письмо отправлено <p>;
    38.     }
    39. }
    40. ?>
     
  2. Davil

    Davil Guest

    Отделить вывод от логики, воспользовавшись шаблонизатором, или просто отделить шаблоны.
     
  3. Davil

    Davil Guest

    Вынести работу с базой в отдельный файл (функции/объект).
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. foreach ($cc as $number) {
    2.     if(in_array($number,$cc)){
    *улыбнуло*