Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выпадающий список размеров обуви [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Без описания
arhat
Отправлено: 25 Марта, 2014 - 13:41:58
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




Исильдур пишет:
Плохая идея. Нарушение первой нормальной формы.
Как вариант, можно хранить в отдельной таблице images
id, product_id, image, sort


Нужно будет подумать, когда с размерами разберусь.... Думаю сейчас, как таблицу sizes составить, и какой столбец добавить в products, чтобы их связать...
 
 Top
arhat
Отправлено: 25 Марта, 2014 - 14:26:08
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




Благодарю за подсказки, что то начало вырисовываться. В общем наковырял и состряпал вот такой код для вывода размеров. Но нутром чувствую, что он такой грубый...!!! Как его облагородить?

PHP:
скопировать код в буфер обмена
  1. <form method = "post">
  2. Выберите размер
  3. <select name="size" >
  4. <?PHP
  5. $a=mysql_query("SELECT * FROM sizes WHERE `sizes`.id_boot='$id' ");
  6. while ($b = mysql_fetch_array($a))
  7. {
  8.       echo  "<option value=$b[0]>   $b[2] </option>";
  9. }
  10. ?>
  11. </select>



Через id_boot связываюсь с id товара. Размеры корректно выходят.
(Добавление)
Теперь выбранный размер нужно выводить в корзину...... Но в неё пока летит только размер 19...
Прикреплено изображение (Нажмите для увеличения)
Размеры2.jpg

(Отредактировано автором: 25 Марта, 2014 - 14:42:19)

 
 Top
Исильдур
Отправлено: 25 Марта, 2014 - 14:40:42
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




arhat
Лучше не делайте скринов, а сделайте
CODE (SQL):
скопировать код в буфер обмена
  1. SHOW CREATE TABLE `table_name`

Так понятней будет.

(Отредактировано автором: 25 Марта, 2014 - 14:41:32)

 
 Top
arhat
Отправлено: 25 Марта, 2014 - 14:46:52
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




Исильдур пишет:
arhat
Лучше не делайте скринов, а сделайте
CODE (SQL):
скопировать код в буфер обмена
  1. SHOW CREATE TABLE `table_name`

Так понятней будет.


ой, я так и не понял, как этим пользоваться. поэтому скрины по старинке шлёпаю...
 
 Top
Исильдур
Отправлено: 25 Марта, 2014 - 14:49:12
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




arhat
В phpMyAdmin есть вкладка SQL, там есть поле для ввода текста. Вставляете туда SHOW CREATE TABLE `table_name` и результат сюда выкладываете.
 
 Top
arhat
Отправлено: 25 Марта, 2014 - 14:50:46
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




А, всё понял Улыбка

CODE (SQL):
скопировать код в буфер обмена
  1. sizes   CREATE TABLE `sizes` (
  2.  `id` int(5) NOT NULL AUTO_INCREMENT,
  3.  `id_boot` varchar(100) NOT NULL,
  4.  `size` int(5) NOT NULL,
  5.  `description` varchar(100) NOT NULL,
  6.  PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
 
 Top
Исильдур
Отправлено: 25 Марта, 2014 - 15:39:22
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




arhat
arhat пишет:
`id_boot` varchar(100) NOT NULL,

Почему не int?
PHP:
скопировать код в буфер обмена
  1. $a = mysql_query("SELECT `sizes`.`id`, `sizes`.`size` FROM `sizes` WHERE `sizes`.`id_boot`=" . (int) $id);

Хотя бы так.
А еще лучше, собрать все данные по товару одним запросом, а потом в шаблоне выводить что нужно.
 
 Top
arhat
Отправлено: 25 Марта, 2014 - 20:29:45
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




Исильдур пишет:
arhat
arhat пишет:
`id_boot` varchar(100) NOT NULL,

Почему не int?
PHP:
скопировать код в буфер обмена
  1. $a = mysql_query("SELECT `sizes`.`id`, `sizes`.`size` FROM `sizes` WHERE `sizes`.`id_boot`=" . (int) $id);

Хотя бы так.
А еще лучше, собрать все данные по товару одним запросом, а потом в шаблоне выводить что нужно.


Не, так вообще ошибку выдаёт: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\MyShop\views\pages\product.php on line 26.

Поэтому в этом коде отскочу пока назад.....

А так с выводом всех параметров товара проблем нет, я отдельно через функцию get_product делаю. Всё вроде как красиво получается. А вот с размерами пока криво Улыбка

(Отредактировано автором: 26 Марта, 2014 - 05:43:44)

 
 Top
arhat
Отправлено: 26 Марта, 2014 - 19:45:42
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




С выбором размера справился. Теперь осталось как то передавать в корзину вместе с описанием самого товара и размер, но пока в корзину летит только размер 19.....

Вот форма просмотра товара:

PHP:
скопировать код в буфер обмена
  1. <table align="center" style="border-width: 1; border-style: dashed" class="product" width="200" height="200">
  2.             <tr>
  3.                 <td valign="top"   align="center" cellpadding="5" cellspacing="5">
  4.                     <div><a href="#"><img src="userfiles/<?=$product['image']?>" width="150" height="100"     alt="" /></a></div>
  5.                     <div class="description">
  6.                         <div class="product-name"><a href="#"><?=$product['title']?></a></div>
  7.                         <div class="product-price">Цена: <?=$product['price']?> руб</div>
  8.                    
  9.                    
  10.                     </div>
  11.                 </td>
  12.                
  13.                 <td valign="top">
  14.                     <div><?=$product['description']?></a></div>              
  15.              
  16.  
  17.  
  18.        
  19.  <form method = "post">
  20. Выберите размер
  21. <select name="size" >
  22. <?PHP
  23. $a=mysql_query("SELECT * FROM sizes WHERE `sizes`.`id_boot`='$id' ");
  24. while ($b = mysql_fetch_array($a))
  25. {
  26.       echo  "<option selected value=$b[0] >   $b[2] </option>";
  27. }
  28. ?>
  29. </select>
  30.  
  31.  
  32. </form>
  33.            
  34.                    
  35.                     <div><a href="index.php?view=add_to_cart&id=<?=$product['id']?>">Добавить в корзину</a></div>
  36.                 </td>
  37.             </tr>
  38.     </table>


В последнюю ссылку вместе с переменной $product нужно как то ещё правильно передать размер обуви, но принцип пока не допёр.....

Вот форма корзины. Здесь нужно тоже как то правильно принимать размер.....

PHP:
скопировать код в буфер обмена
  1. <h2 align="center">Ваша корзина товаров</h2>
  2.  
  3. <?PHP
  4. if($_SESSION['cart'] )
  5. {
  6. ?>
  7. <body   >
  8.  
  9. <form action="index.php?view=update_cart" method="post" id="cart-form">
  10.  
  11. <table id="mycart" align="center" cellspacing="0" cellpadding="0" border="0" >
  12.       <tr>
  13.             <th>Товар</th>
  14.             <th>Размер</th>
  15.             <th>Цена</th>
  16.             <th>Кол-во</th>
  17.             <th>Всего</th>
  18.       </tr>
  19.      
  20.       <?PHP foreach ($_SESSION['cart'] as $id => $quantity):
  21.          $product = get_product($id);
  22.          
  23.          $sizes = get_sizes($id);
  24.          
  25.        ?>
  26.  
  27.       <tr>
  28.           <td align="center"><?=$product['title']; ?></td>
  29.           <td align="center">   <?=$sizes['size']; ?> </td>
  30.           <td align="center">   <?=number_format($product['price'],2); ?> руб</td>
  31.           <td align="center"><input type="text" size="2" name="<?=$id; ?>" maxlength="2" value="<?=$quantity; ?>" /></td>
  32.           <td align="center">  <?=number_format($product['price'] * $quantity ,2); ?> руб</td>
  33.       </tr>
  34.      
  35.       <?PHP endforeach; ?>
  36.      
  37.      
  38. </table>    
  39.      <p class="total" align="center">Общая сумма заказа: <span class="product-price"> <?=number_format($_SESSION['total_price'],2) ;?> руб</span></p>
  40.      <p align="center"><input type="submit" name="update" value="Обновить" /></p>
  41.    
  42. </form>
  43.     </body>
  44. <p align="center"><a href="index.php?view=order">Оформить заказ</a></p>
  45.    
  46. <?PHP
  47. }
  48. else
  49. {
  50.     echo "<p align='center' style='color:#fffaaa'>Ваша корзина пуста!</p>";
  51. }
  52. ?>
 
 Top
arhat
Отправлено: 31 Марта, 2014 - 13:27:29
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




Люди добрые, помогите с этими размерами разобраться. Выходные просидел, но без результата...Недовольство, огорчение
 
 Top
esterio
Отправлено: 31 Марта, 2014 - 13:36:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




arhat пишет:
$a=mysql_query("SELECT * FROM sizes WHERE `sizes`.`id_boot`='$id' ");
while ($b = mysql_fetch_array($a))
{
echo "<option selected value=$b[0] > $b[2] </option>";
}
?>

CODE (htmlphp):
скопировать код в буфер обмена
  1. $query = mysql_query('SELECT id, title FROM sizes WHERE `sizes`.`id_boot`='.(int)$id);
  2. while($row = mysql_fetch_assoc($query))
  3. {
  4. ?>
  5.     <option selected value="<?php echo $row['id']; ?>"><?php echo $row['title']; ?></option>
  6. <?php
  7. }

А в общем все данные нужно загнать в массив еще до вывода
 
 Top
arhat
Отправлено: 31 Марта, 2014 - 14:50:45
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




esterio пишет:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $query = mysql_query('SELECT id, title FROM sizes WHERE `sizes`.`id_boot`='.(int)$id);
  2. while($row = mysql_fetch_assoc($query))
  3. {
  4. ?>
  5.     <option selected value="<?php echo $row['id']; ?>"><?php echo $row['title']; ?></option>
  6. <?php
  7. }

А в общем все данные нужно загнать в массив еще до вывода


esterio, так вообще ошибки выдаёт в выводе товара,хотя закрыл фиг.скобку.... Parse error: syntax error, unexpected end of file
 
 Top
chivik
Отправлено: 31 Марта, 2014 - 18:46:28
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




Делаю похожий сайт с одеждой.
Размеры у меня прописаны на сайте.
PHP:
скопировать код в буфер обмена
  1. <?PHP include ("blocks/bd.php");
  2. if(!isset($_SESSION['cart']))
  3. {
  4.                 $_SESSION['cart'] = array();
  5.                 $_SESSION['total_items'] = 0;
  6.                 $_SESSION['total_price'] = '0.0';
  7.                 $_SESSION['total_size'] = '';
  8. }
  9. if (isset($_GET['id'])) {$id = $_GET['id'];}
  10. //unset ($_SESSION['cart']);
  11.  
  12. $query = mysql_query ("SELECT * FROM products WHERE id='$id'",$db);
  13. $result = mysql_fetch_array($query);
  14. ?>
  15. <div id="item_name_view">
  16. <div id="item_border">
  17. <div id="item">
  18. <img src="img/dress/<?=$result["image"];?>.jpg" />
  19. </div>
  20. </div>
  21.  
  22. </div>
  23. <h1 align="center"><?=$result["title"];?></h1>
  24.  
  25.  <br>
  26.  <p><em><?=$result["description"];?></em></p>
  27.  
  28.         <p>
  29. <b class="blue">Артикул:</b> <?=$result["article"];?>
  30. <br>
  31. <b class="blue">Цена:</b> <strong><?=$result["price"];?> руб.</strong>
  32. <br>
  33.  
  34. <b class="blue">Размер:</b>
  35. <form action="cart_fns.php" method="get" name="form_s">
  36. <select name='select[]'>
  37. <option value='0'><b>Выберите из списка</b></option>
  38. <option value='XS'>32/34 (XS)</option>
  39. <option value='S'> 36/38 (S)</option>
  40. <option value='M'>40/42 (M)</option>
  41. <option value='L'>44/46 (L)</option>
  42. <option value='XL'>48/50 (XL)</option>
  43. </select>
  44. <b class="blue">Количество:</b> - 1 +
  45. </p>
  46.  
  47. <a href="cart_fns.php?id=<?=$result['id']?>"><img src="img/system/add_to_cart.png" /></a>
  48. <input name="id" type="hidden" value="<?=$result['id']?>">
  49. <p align="center"><input type="submit" name="order" value="Добавить"/></p>
  50. </form>


Сам обработчик

PHP:
скопировать код в буфер обмена
  1. <?PHP session_start();
  2. include ("blocks/bd.php");
  3. if (isset($_GET['id'])) {$id = $_GET['id'];}
  4.  
  5. if (isset($_GET['select'])) {$select = $_GET['select'];}
  6.  
  7. if(isset($_SESSION['cart'][$id]))
  8. {
  9. $_SESSION['cart'][$id]++;
  10. }
  11. else
  12. {
  13. $_SESSION['cart'][$id] = 1;
  14. }
  15.  
  16. /////////////////////////////////////////////////////////////////////////
  17.  
  18. function total_size($cart)
  19. {
  20.         $total_size = '';
  21.         if(is_array($cart))
  22.         {
  23.         $vars = $_SESSION['total_size'];       
  24.         foreach($_GET['select'] as $id => $val){
  25.     $query = "$val";
  26.         $total_size .= "$vars, $query"; }
  27.         }
  28.         return $total_size;
  29. }
  30. ///////////////////////////////////////////////////////////////////////////////
  31. function total_items($cart)
  32. {
  33.         $num_items = 0;
  34.         if(is_array($cart))
  35.         {
  36.                 foreach($cart as $id => $qty)
  37.                 {
  38.                         $num_items = $num_items + $qty;
  39.                 }
  40.         }
  41.         return $num_items;
  42. }
  43.  
  44.  
  45. function total_price($cart)
  46. {
  47.         $total_price = 0.0;
  48.        
  49.         if(is_array($cart))
  50.         {
  51.                 foreach($cart as $id => $qty)
  52.                 {
  53.                         $query = "SELECT price FROM products WHERE id='$id'";
  54.                         $result = mysql_query($query);
  55.                                 if($result)
  56.                                 {
  57.                                         $item_price = mysql_result($result,0,'price');
  58.                                         $total_price = $total_price + $item_price * $qty;
  59.                                 }
  60.                 }
  61.         }
  62.         return $total_price;
  63. }
  64.  
  65.  
  66. $_SESSION['total_size'] = total_size($_SESSION['cart']);
  67. $_SESSION['total_items'] = total_items($_SESSION['cart']);
  68. $_SESSION['total_price'] = total_price($_SESSION['cart']);
  69. header('Location: dress.php?id='.$id);
  70. ?>


Тоже проблема с размером.... Если 1 платью выбрать размер XS, потом еще M, а другому платью выбрать S, то в корзине будут у всех платьев одни и те же размеры (XS,M,S)... 2 недели не могу решить проблему(((

Вывод корзины

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if($_SESSION['cart'])
  3. {
  4. foreach($_SESSION['cart'] as $id => $quantity):
  5. $query = mysql_query ("SELECT * FROM products WHERE id='$id'",$db);
  6. $row = mysql_fetch_array($query);
  7. $total_size = $_SESSION['total_size'];
  8. ?>
  9.  
  10.         <div id="cart">  
  11. <div id="cart_img"><img src="img/dress/<?=$row['image'];?>.jpg" /></div>
  12.  
  13. <div id="cart_namet" class="cart_namet">
  14. <a href="#"><?=$row['title'];?>
  15. <br>
  16. Артикул: <?=$row['article'];?> </a>
  17. <br>
  18. Размер: <?=$total_size;?>
  19. </div>
  20. <div id="cart_cell"><?=$row['price'];?> руб.</div>
  21. <div id="cart_cell"><input type="text" size="2" name="<?=$id;?>" maxlength="2" value="<?=$quantity;?>" /></div>
  22. <div id="cart_cell"><?=number_format($row['price'] * $quantity ,2);?> руб.</div>
  23. <? endforeach;?>
  24. <div id="sum">
  25. <b>Итого:</b> <b class="blue"><?=number_format($_SESSION['total_price'],2);?> руб.</b><br>
  26. <a href="order.php"><img src="img/system/buy.png" /></a>
  27. </div>
  28.  
  29. <?PHP
  30. }
  31. else
  32. {
  33.         echo "Ваша корзина пуста!";
  34. }
  35. ?>
 
 Top
arhat
Отправлено: 01 Апреля, 2014 - 15:58:10
Post Id



Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Март 2014  
Откуда: Москва


Помог: 0 раз(а)




А в ответ - тишина............
 
 Top
chivik
Отправлено: 03 Апреля, 2014 - 17:05:38
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




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


PHP:
скопировать код в буфер обмена
  1.  
  2. файл обработчик.
  3. /////////////////////////////////////////////////////////////////////////
  4. if(!isset($_SESSION['razmer']))
  5.      {
  6.             echo "<br>Заводим новую сессию.<br>";
  7.          $_SESSION['razmer'] = array();
  8.      $_SESSION['razmer'][$id]  = $id;
  9.          $_SESSION['size'][$id]  = '';
  10.                          echo "Вывод id";
  11.                          echo $_SESSION['razmer'][$id];
  12.                          
  13.         foreach($_POST['select'] as $key => $val){
  14.     $query = "$val";
  15.         $total_size .= "$query";
  16.         $_SESSION['size'][$id] = $total_size;
  17.         echo "<br>SESSION ";
  18.         print_r ($_SESSION['size'][$id]);}
  19.                          
  20.      }
  21.      elseif ($_SESSION['razmer'][$id] == $id)
  22.      {
  23.     echo "<br>Изменяем старую сессию.<br>";
  24.         echo "Вывод id";
  25.                          echo $_SESSION['razmer'][$id];
  26.                          
  27.         $vars = $_SESSION['size'][$id];
  28.         foreach($_POST['select'] as $key => $val){
  29.     $query = "$val";
  30.         $total_size .= "$vars, $query";
  31.         $_SESSION['size'][$id] = $total_size;
  32.         print_r ($_SESSION['size'][$id]);}
  33.      } 
  34.                  elseif ($_SESSION['razmer'][$id] != $id)
  35.          {
  36.                   echo "<br>Заводим новую сессию. C НОВЫМ id<br>";
  37.      $_SESSION['razmer'][$id] = $id;
  38.          $_SESSION['size'][$id]  = '';
  39.                          echo "Вывод id";
  40.                          echo $_SESSION['razmer'][$id];
  41.                          
  42.         foreach($_POST['select'] as $key => $val){
  43.     $query = "$val";
  44.         $total_size .= "$query";
  45.         $_SESSION['size'][$id] = $total_size;
  46.         echo "<br>SESSION ";
  47.         print_r ($_SESSION['size'][$id]);}            
  48.          }
  49. ///////////////////////////////////////////////////////////////////////////////
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB