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 :: Сессия

 PHP.SU

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


 Страниц (1): [1]   

> Описание: Шоп
Avrelio
Отправлено: 22 Октября, 2011 - 23:59:47
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Окт. 2011  


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

[+][+]


шаблон
CODE (tpl):
скопировать код в буфер обмена
  1.  
  2.     Цена: {price} руб.
  3.         <form method="post" action="/post.php">
  4.         <input type="hidden" class="id" value="{id}" name="id" id="id">
  5.         <input type="hidden" class="price" value="{price}" name="price" id="price">
  6.         <input type="hidden" name="do" value="shop"><br>
  7.         <input type="hidden" class="count" value="1" style="width:25px;" name="count" id="count"><br>
  8.         <input type="hidden" value="Заказать" id="button">
  9.         </form>
  10.  


Данный код не полный проста выложил кусок чтоб было понятно от куда береста цена и т.д указаны выше
CODE (php):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. if( $allow_active_news ) {
  4.  
  5. $sql_select = "SELECT id, autor, date, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, flag, editdate, editor, reason, view_edit, tags ,price FROM " . PREFIX . "_post WHERE {$stop_list}approve AND allow_main" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
  6. $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve AND allow_main" . $where_date;
  7. $sql_news = "";
  8.  
  9. $sql_result = $db->query( $sql_select );
  10.         while ( $row = $db->get_row( $sql_result ) )
  11.         {
  12.                 {
  13.        
  14.                         $tpl->set( '{title}', stripslashes( $row['title'] ) );
  15.                         $tpl->set( '{short-story}', stripslashes( "<div id=\"news-id-" . $row['id'] . "\" style=\"display:inline;\">" . $row['short_story'] . "</div>" ) );
  16.                     $tpl->set( '{price}', stripslashes( $row['price'] ));
  17.                         $tpl->set( '{id}', stripslashes( $row['id'] ));
  18.                 }
  19.                
  20.                 $tpl->compile( 'content' );
  21.         }
  22.         $tpl->clear();
  23.         $db->free( $sql_result );
  24. }
  25.  



код который по моему переводит из пост в количество цену и т.д
вот тут я думаю и ошибка
post.php
CODE (php):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4. class db
  5. {}
  6. require_once "engine/data/dbconfig.php";
  7. mysql_connect(DBHOST,DBUSER,DBPASS) or die ("Ощибка подключение к бд: ".mysql_error());
  8. mysql_select_db(DBNAME) or die ("Невозможно выбрать бд: ".mysql_error());
  9. $total=0;
  10. function count_price($shop)
  11. {
  12.         foreach($shop as $id => $count)
  13.         {
  14.                 if(preg_match("|^[\d]+$|", $id))
  15.                 {
  16.                         $query="SELECT * FROM " . PREFIX . "_post WHERE id='$id'";
  17.                         $result=mysql_query($query);
  18.                         $row=mysql_fetch_array($result);
  19.                         $total=floatval($total)+floatval($row["price"])*floatval($count);
  20.                 }
  21.  
  22.         }
  23.  
  24.         return $total;
  25. }
  26.  
  27. if($_SESSION['shop'])
  28. {
  29.         $shop = unserialize($_SESSION['shop']);
  30. }
  31. else $shop = array();
  32.  
  33. $do=$_POST['do'];
  34.  
  35. if($do=='delete')
  36. {
  37.         $p_id=stripslashes($_POST['id']);
  38.         unset($shop[$p_id]);
  39.  
  40.         $total=sprintf("%01.2f",count_price($shop));
  41.         $goodsQuant=count($shop);
  42.      $_SESSION['tot']=$total;
  43.         echo $goodsQuant.";".$total;
  44. }
  45. else if($do=='recount')
  46. {
  47.         $p_id=unserialize(stripslashes($_POST['id']));
  48.         $p_count=unserialize(stripslashes($_POST['count']));
  49.         //echo $p_id." - ".$p_count;
  50.         for($k=0;$k<count($p_id);$k++)
  51.         {
  52.                 $id=$p_id[$k];
  53.                 $count=$p_count[$k];
  54.                 if(preg_match("|^[\d]+$|", $count) and $count>0)
  55.                 {
  56.                         if (array_key_exists($id, $shop) and $do=='shop')
  57.                         {
  58.                                 $shop[$id]=$shop[$id]+$count;
  59.                         }
  60.                         else $shop[$id]=$count;
  61.                 }
  62.         else if($count==0)
  63.         {
  64.             unset($shop[$id]);
  65.         }
  66.         }
  67.  
  68.         $total=sprintf("%01.2f",count_price($shop));
  69.         $goodsQuant=count($shop);
  70.        //отладка системы
  71.  $_SESSION['tot']=$total;
  72.         //header("Location: ".$_SERVER['HTTP_REFERER']);
  73.         echo $goodsQuant.";".$total;
  74. }
  75. else
  76. {
  77. //echo $_POST['id']."<br>";    
  78.         $p_id=stripslashes($_POST['id']);
  79.         $p_count=stripslashes($_POST['count']);
  80.         //echo $p_id." - ".$p_count;
  81.         //for($k=0;$k<count($p_id);$k++)
  82.         //{
  83.                 $id=$p_id;
  84.                 $count=$p_count;
  85.                 if(preg_match("|^[\d]+$|", $count) and $count>0)
  86.                 {
  87.                         if (array_key_exists($id, $shop) and $do=='shop')
  88.                         {
  89.                                 $shop[$id]=$shop[$id]+$count;
  90.                         }
  91.                         else $shop[$id]=$count;
  92.                 }
  93.         else if($count==0)
  94.         {
  95.             unset($shop[$id]);
  96.         }
  97.         //}
  98.  
  99.         $total=sprintf("%01.2f",count_price($shop));
  100.         $goodsQuant=count($shop);
  101.        //отладка системы
  102.  $_SESSION['shop']=$shop;          
  103.  $_SESSION['tot']=$total;
  104.         header("Location: ".$_SERVER['HTTP_REFERER']);
  105.         echo $goodsQuant.";".$total;
  106. }
  107.  
  108.  
  109. $_SESSION['shop']=serialize($shop);
  110.  
  111. ?>     
  112.  



Сама корзина по моему выводит цену и количество выбранных товаров
short.shop.php
CODE (php):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $i=0;
  4. $total=0;
  5. if(!$_SESSION['tot'])
  6. $_SESSION['tot']=0;
  7. if($_SESSION['shop'])
  8. {
  9. $shop=unserialize($_SESSION['shop']);
  10.  
  11.  
  12. foreach ($shop as $id => $count)
  13. {
  14. $i++;
  15. }
  16. }
  17. $total=sprintf("%01.2f",$total);
  18. $tpl->load_template('shop_short.tpl');
  19. $tpl->set( '{i}', $i );
  20. $tpl->set( '{total}', $_SESSION['tot'] );
  21. $tpl->compile( 'shop_short' );
  22. $tpl->clear();
  23. ?>
  24.  


Корзина для покупки выводит имя товара цену и т.д зделана для офармления заказа
CODE (php):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. require_once "engine/modules/shop/conf/config.php";
  4. $tpl->load_template('shop.tpl');
  5. if($_SESSION['shop'])
  6. {
  7. $shop=unserialize($_SESSION['shop']);
  8. }
  9. if(count($shop)>0)
  10. {
  11. $total=0;
  12. $query="SELECT title,price FROM ".PREFIX."_post WHERE id='$id'";
  13. foreach ($shop as $id => $count)
  14. {
  15. $result=$db->query($query);
  16. $row=$db->get_array($result);
  17. $sum=sprintf("%01.2f",$row["price"]*$count);
  18. $total += $sum;
  19. preg_match("'\[row\](.*?)\[/row\]'si", $tpl->copy_template, $matches);
  20. $row["title"]=substr($row["title"],0,500);
  21. $replace = array('{name}'=> $row["title"],
  22.                                  '{price}' => $row["price"],
  23.                                  '{id}' => "$id",
  24.                                  '{count}' => "$count",
  25.                                  '{cost}' => "$sum");
  26. $tpl->copy_template = strtr($tpl->copy_template, $replace);
  27. $tpl->copy_template = preg_replace("'\[row\](.*?)\[/row\]'si", "\\1\n".$matches[0], $tpl->copy_template);
  28. }
  29. $total=sprintf("%01.2f",$total);
  30. }
  31.  
  32. else $proverka=FALSE;
  33. $tpl->set('{all_total}', $total);
  34. $tpl->set_block("'\[row\](.*?)\[/row\]'si", "");
  35. $tpl->compile('content');
  36. $tpl->clear();
  37. $db->free();
  38. ?>
  39.  


Js код который чтота делает как я понел перещет и т.д в жс я не силен
shop.js
CODE (JavaScript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(function(){
  3.         $(".count").keypress(function(event)
  4.                 {
  5.                         if (event.keyCode==13)
  6.                         {
  7.                
  8.                                 shop();
  9.                         }
  10.                 }
  11.         );
  12.  
  13.     $(".count1").keypress(function(event)
  14.                 {
  15.                         if (event.keyCode==13)
  16.                         {
  17.                 recount();
  18.                         }
  19.                 }
  20.         );
  21.  
  22.     $(".refresh").click(recount);
  23.  
  24.     $(".delete").click(deleteGood);
  25.  
  26.         $(".button").click(shop);
  27.  
  28.         $(".count").blur(function()
  29.                 {                      
  30.                         if($(this).val()=="")
  31.                                 $(this).val("0");
  32.                 }
  33.         );
  34.  
  35.     $(".count").click(function()
  36.                 {
  37.                         if($(this).val()=="0")
  38.                                 $(this).val("");
  39.                 }
  40.         );
  41.  
  42.     $("tr.line:odd").css("background-color","#eeeeee");
  43.  
  44.     $(".refresh,.delete").hover(function()
  45.     {
  46.         $(".refresh,.delete").css("cursor","pointer");
  47.         if($(this).attr("class")=="delete")
  48.             {
  49.                 $(this).attr("src","./templates/shop/images/002.gif");
  50.             } else $(this).attr("src","./templates/shop/images/001.gif");
  51.     },
  52.     function()
  53.     {
  54.         $(".refresh,.delete").css("cursor","White");
  55.         if($(this).attr("class")=="delete")
  56.             {
  57.                 $(this).attr("src","./templates/shop/images/002b.gif");
  58.             } else $(this).attr("src","./templates/shop/images/001b.gif");
  59.     }); //hover ends
  60.  
  61. });
  62.  
  63. function shop()
  64. {
  65.         //alert("hello");
  66.         $(".count").attr("disabled", "disabled");
  67.         $(".button").attr("disabled", "disabled");
  68.  
  69.         var id = new Array();
  70.         var count = new Array();
  71.  
  72.         var num = ($(".count")).length;
  73.  
  74.         for(i=0;i<num;i++)
  75.         {
  76.                 quantValue = $(".count:eq("+i+")").val();
  77.  
  78.                 if(quantValue > 0)
  79.                 {
  80.                         count[count.length] = quantValue;
  81.                         idValue = $(".id:eq("+i+")").val();
  82.                         id[id.length] = idValue;
  83.                 }
  84.         }
  85.  
  86.         count=serialize(count);
  87.         id=serialize(id);
  88.  
  89.         $.ajax({
  90.                 type: "POST",
  91.                 url: "./post.php",
  92.                 data: "id="+escape(id)+"&count="+escape(count)+"&do=shop",
  93.                 success: cartAddResponse,
  94.                 error: function(msg) {
  95.                 alert(msg);
  96.                 }
  97.         });
  98. }
  99.  
  100. function recount()
  101. {
  102.     $(".count1").attr("disabled", "disabled");
  103.     var id = new Array();
  104.         var count = new Array();
  105.  
  106.         num = ($(".count1")).length;
  107.    
  108.         for(i=0;i<num;i++)
  109.         {
  110.                 quantValue = $(".count1:eq("+i+")").val();
  111.                 count[count.length] = quantValue;
  112.                 idValue = $(".id:eq("+i+")").val();
  113.                 id[id.length] = idValue;
  114.         }
  115.  
  116.         count=serialize(count);
  117.         id=serialize(id);
  118.  
  119.         $.ajax({
  120.                 type: "POST",
  121.                 url: "./post.php",
  122.                 data: "id="+escape(id)+"&count="+escape(count)+"&do=recount",
  123.                 success: cartRecountResponse
  124.         });
  125. }
  126.  
  127. function removeTr(obj) //удаление строки в таблице корзины
  128. {
  129.     var link=obj.parent().parent();
  130.     link.css('background-color','#ff6666');
  131.     link.fadeOut();
  132. }
  133.  
  134. function deleteGood()
  135. {
  136.     $(".count1").attr("disabled", "disabled");
  137.         var id = $(this).parent().siblings().children(".id").val();
  138.  
  139.     $.ajax({
  140.                 type: "POST",
  141.                 url: "./post.php",
  142.                 data: "id="+escape(id)+"&do=delete",
  143.                 success: cartDeleteResponse
  144.         });
  145.  
  146.     removeTr($(this));
  147. }
  148.  
  149. function showNewPrice(textVal)
  150. {
  151.     var tmp = textVal.split(';');
  152.         var tovar = tmp[0];
  153.         var summa = tmp[1];
  154.  
  155.         $("#tovar").text(tovar);
  156.         $("#summa").text(summa);
  157.  
  158.     return summa;
  159. }
  160.  
  161. function cartDeleteResponse(response)
  162. {
  163.     var summa = showNewPrice(response);
  164.                 $("#summa_cart").text(summa);
  165.                 $(".count1").attr("disabled", "");
  166. }
  167.  
  168. function cartAddResponse(response)
  169. {
  170.         showNewPrice(response); //обновляем цену и кол-во в малой корзине
  171.  
  172.         $(".count").attr("disabled", "");
  173.         $(".button").attr("disabled", "");
  174.    
  175.     $(".count").val("0");
  176. }
  177.  
  178. function cartRecountResponse(response)
  179. {
  180.     var num = ($(".count1")).length;
  181.  
  182.         for(var i=0;i<num;i++)
  183.         {
  184.         var quantVal = $(".count1:eq("+i+")").val();
  185.        
  186.                 if(quantVal==0) //удаляем строки с нулевым количеством
  187.         {
  188.             removeTr($(".count1:eq("+i+")"));
  189.         }
  190.         else
  191.         {
  192.             //далее считаем новую сумму по каждому товару
  193.             var price = $(".price:eq("+i+")").text();
  194.             var newSum = Number(quantVal)*Number(price);
  195.             $(".sum:eq("+i+")").text(newSum.toFixed(2));
  196.         }
  197.         }
  198.  
  199.     cartDeleteResponse(response);
  200. }
  201. function error(desc, page, line) {
  202.    alert('Error description:\t' + desc + '\nPage address:\t' + page + '\nLine number:\t' + line)
  203.    return true
  204. }
  205. window.onerror=error;
  206.  



Данный модуль при добавления товара выводит ошибку
Warning: unserialize() expects parameter 1 to be string, array given in /usr/home/35720/slad-no.ru/html/ engine/modules/shop.short.php on line 9 Warning: Invalid argument supplied for foreach() in /usr/home/35720/slad-no.ru/html/ engine/modules/shop.short.php on line 12


я так думаю он выводит ету ошибку иза того что сессия не водит в кукисы все данные

помагите плыз решить проблему

(Отредактировано автором: 23 Октября, 2011 - 00:00:25)

 
 Top
Данил_123
Отправлено: 23 Октября, 2011 - 00:14:15
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


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




/usr/home/35720/slad-no.ru/
html/ engine/modules/ shop.short.php ошибка на 9 строке и на 12, не вижу названий файлов.. Где какой?
(Добавление)
это
PHP:
скопировать код в буфер обмена
  1. $query="SELECT title,price FROM".PREFIX."_post WHERE id='$id'";
попробуй заменить на
PHP:
скопировать код в буфер обмена
  1. $ q u e r y ="SELECT title,price FROM PREFIX _post WHEREid='$id'";

(Отредактировано автором: 23 Октября, 2011 - 00:22:28)



-----
http://mysitecost.ru
 
 Top
DeepVarvar Супермодератор
Отправлено: 23 Октября, 2011 - 00:25:44
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Данил_123 это:
PHP:
скопировать код в буфер обмена
  1. $ q u e r y ="SELECT title,price FROM PREFIX _post WHEREid='$id'";

попробуй заменить на:
PHP:
скопировать код в буфер обмена
  1. tlehdfghfgEREidfs e r y ="SEf$ q dffsdLdfECfT tid='$idgdf,price FRhfghfghdfg'";

Работает???
 
 Top
Данил_123
Отправлено: 23 Октября, 2011 - 00:53:09
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


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




DeepVarvar вы проверили? "я нет, мускуль сервер снес"


-----
http://mysitecost.ru
 
 Top
DeepVarvar Супермодератор
Отправлено: 23 Октября, 2011 - 01:01:52
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Данил_123 Думать надо что пишешь.
---
Avrelio мне кажется гораздо быстрее будет если вы с кем то в личке решите этот вопрос дав доступ до хостинга.
 
 Top
Avrelio
Отправлено: 23 Октября, 2011 - 06:10:52
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Окт. 2011  


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

[+][+]


без проблем могу дать тока вот кто сможет помочь?
 
 Top
Данил_123
Отправлено: 23 Октября, 2011 - 11:12:47
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


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




я написал,более правельный код.. А не тот, что вы прислали..


-----
http://mysitecost.ru
 
 Top
LIME
Отправлено: 23 Октября, 2011 - 12:59:45
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




Данил_123 PREFIX это константа
если ее ввести внутрь кавычек то она не будет интерполироваться
DeepVarvar пишет:
Данил_123 Думать надо что пишешь.



Пы.Сы.: Маразм крепчал.
(Добавление)
Avrelio попробуйте в файле post.php поменять строчку 103 на
как в строчке 110
(Добавление)
и вообще поищите по всем файлам и если найдете
$_SESSION['shop']=$shop;
меняйте на
$_SESSION['shop']=serialize($shop);

(Отредактировано автором: 23 Октября, 2011 - 13:06:18)

 
 Top
Данил_123
Отправлено: 23 Октября, 2011 - 14:07:14
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


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




LIME
LIME пишет:
PREFIX это константа
если ее ввести внутрь кавычек то она не будет интерполироваться
Это ладно, но я написала "замени 12 строку на
PHP:
скопировать код в буфер обмена
  1. $query="SELECT title,price FROM PREFIX _post WHERE id='$id'";
но никак не
PHP:
скопировать код в буфер обмена
  1. tlehdfghfgEREidfs e r y ="SEf$ q dffsdLdfECfT tid='$idgdf,price FRhfghfghdfg'";


-----
http://mysitecost.ru
 
 Top
LIME
Отправлено: 23 Октября, 2011 - 14:10:15
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




Данил_123 про художественное преувеличение слышал?
Цитата:
Гротеск - преувеличение до уродства.
 
 Top
Данил_123
Отправлено: 23 Октября, 2011 - 14:18:49
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


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




Не соврать нет.. И к кому обращение?


-----
http://mysitecost.ru
 
 Top
Avrelio
Отправлено: 23 Октября, 2011 - 15:52:45
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Окт. 2011  


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

[+][+]


LIMEувы но ефекта нулевого
не кто не хочет помочь? могу дать фтп доступ)

(Отредактировано автором: 24 Октября, 2011 - 18:47:16)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB