Показать сообщение отдельно
  #1 (permalink)  
Старый 15.02.2014, 09:00
Новичок на форуме
Отправить личное сообщение для slaider Посмотреть профиль Найти все сообщения от slaider
 
Регистрация: 15.02.2014
Сообщений: 2

Интересный случай с кодировкой, при выводе из БД первая строка в неправ. кадеровкой
Доброе утро, помогите пожалуйста. Не давно стал изучать ajax и jquery, для того чтобы сделать корзину товаров ,всё шло неплохо но тут возникла такая проблема: при добавления товара в корзину, а именно в дальнейшем выводе списка товара, то из mysql выводит название товара в неправильной кодировке (��������� �������), причём только первого добавленного, а остальные выводятся как положено. При дальнейшем изменении количества товара, кодировка изменяется и название товара становиться нормальным.

Я повторюсь, что недавно стал изучать и может что то делаю не так, или может есть способ проще, но хотелось бы заставить этот код работать правильно, потому что вроде бы разобрался что и как это работает.

Во общем вот код:

файл test5.php
<?php
include ("bd.php");
?>

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>В корзину</title> 

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript"> 
  $(document).ready(function(){ 
    $('.basket').click(function(){ 
      // Формируем URL-запрос 
      var url = 'handler.php?kolvo='+ $('#inp' + $(this).attr('id')).val() +'&id=' + $(this).attr('id'); 
       url = encodeURI(url);
      // Осуществляем AJAX-запрос 
      $('#id_basket_conent').load(url); 
      return false; 
    }); 
  });
</script> 
</head> 
<body> 
<?php
$result1 = mysql_query("SELECT * FROM vidiyslyg LIMIT 5",$db);
$myrow1 = mysql_fetch_array($result1);
mysql_query("SET NAMES 'utf8'");
?>

<table border=1 width=100% class=tabl_prise>
<tr>
<td width=2%>
№
</td>
<td width=80%>
Услуга
</td>
<td width=5%>
Цена
</td>
<td width=13% >
В корзину
</td>
</tr>
<?php
$nb1=0;
do { 
$nb1=$nb1+1;
echo "
<tr>
<td>
$nb1
</td>
<td>
$myrow1[Yslyga]
</td>
<td align=right>
 $myrow1[Sale]
</td>
<td width=13%>
<div><input type='text' size='1' id='inp$myrow1[id]' value='1' ><a href='#' class='basket' id='$myrow1[id]'>+</a></div> 
</td>
</tr>
";
}
while ($myrow1 = mysql_fetch_array ($result1));
?>
</table>

<div><a href='#' class='basket' id='del'>Очистить корзину</a></div>
 <div id='id_basket_conent'>
<?php
 echo "<pre> В корзине ";
 print_r($_COOKIE['namber']); 
 echo "шт единиц товара на сумму:";
print_r($_COOKIE['old_znach']); 
 echo "рублей";
 
?>
</div> 
</body> 
</html>



и файл handler.php

<script type="text/javascript"> 
$(document).ready(function(){ 
$('.add').click(function () {
                var $input = $(this).parent().find('input');
                $input.val(parseInt($input.val()) + 1);
                $input.change();
                return false;
            }); 
  
 $('.minus').click(function () {
                var $input = $(this).parent().find('input');
                var count = parseInt($input.val()) - 1;
                count = count < 1 ? 1 : count;
                $input.val(count);
                $input.change();
                return false;
            });

$('.change').change(function(){ 
      // Формируем URL-запрос 
      var url = 'handler.php?kolvo_edit='+ $(this).val() +'&id_edit=' + $(this).attr('id'); 
      url = encodeURI(url); 
      // Осуществляем AJAX-запрос 
       $('#id_basket_conent').load(url); 
      return false; 
    });
  }); 
</script> 

<?php
session_start();
$id = $_GET['id']; 
$kolvo = $_GET['kolvo']; 
$id_edit = $_GET['id_edit'];
$kolvo_edit = $_GET['kolvo_edit']; 
$n = $_COOKIE['n'] + 1;
setcookie("n",$n,0,"/");

if ($id == 'del')
{
setcookie("n",0,0,"/");
setcookie("all_id",0,0,"/");
setcookie("old_znach",0,0,"/");
setcookie("namber",0,0,"/");
session_unset();
$n = "";
$kolvo = 0;
$old_znach = 0;
$namber = 0;
	
 echo "<pre> В корзине "; print_r($namber); echo "шт единиц товара на сумму:";  print_r($old_znach); echo "рублей";
}
else
{

if (isset($_GET['id_edit']) and ($_GET['id_edit'] >0))
{

if (!mysql_connect(localhost, логин, пароль)) 
{
	exit;
}
mysql_select_db("markevichvk_servis");
$q = mysql_query("SELECT id, Sale FROM vidiyslyg where id='$id_edit'");
$res = mysql_fetch_assoc($q);
mysql_query("SET NAMES 'utf8'");

$quality_key=1;
$join_var_get = $id_edit."|".$kolvo_edit;

if (isset($_SESSION['array']))
{
foreach($_SESSION['array'] as $key=>$value)
    {
list($id_list, $caunt_list) = split ('[|]', $value);
if ($id_list == $id_edit)
{$proverka_id = 1;
$qulity = $kolvo_edit;
$arr[$key]=$id_list."|".$qulity;


$old_znach = ($_COOKIE['old_znach'] - ($res[Sale] * $caunt_list)) + ($res[Sale] * $kolvo_edit);
setcookie("old_znach",$old_znach,0,"/");
$namber = ($_COOKIE['namber'] - $caunt_list + $kolvo_edit);
setcookie("namber",$namber,0,"/");

}
else
{
$arr[$key]=$value;
$quality_key=$quality_key+1;
}
    }
if ($proverka_id == 1)
{
$_SESSION['array'] = $arr;
}
else
{
$arr[$quality_key]=$join_var_get;
$_SESSION['array'] = $arr;
}

}
else

{
$arr=array();

$arr[$n]=$join_var_get;

$_SESSION['array'] = $arr;
}

}
else
{

if (!mysql_connect(localhost, логин, пароль)) 
{
	exit;
}
mysql_select_db("markevichvk_servis");
$q = mysql_query("SELECT id, Sale FROM vidiyslyg where id='$id'");
$res = mysql_fetch_assoc($q);


$quality_key=1;

$join_var_get = $id."|".$kolvo;

if (isset($_SESSION['array']))
{
foreach($_SESSION['array'] as $key=>$value)
    {

list($id_list, $caunt_list) = split ('[|]', $value);

if ($id_list == $id)
{$proverka_id = 1;
$qulity = $caunt_list+$kolvo;
$arr[$key]=$id_list."|".$qulity;
}
else
{
$arr[$key]=$value;
$quality_key=$quality_key+1;
}

    }
if ($proverka_id == 1)
{
$_SESSION['array'] = $arr;
}
else
{
$arr[$quality_key]=$join_var_get;
$_SESSION['array'] = $arr;
}

}

else

{
$arr=array();

$arr[$n]=$join_var_get;
$_SESSION['array'] = $arr;
}

$old_znach = $_COOKIE['old_znach'] + ($res[Sale] * $kolvo);
setcookie("old_znach",$old_znach,0,"/");
$namber = ($_COOKIE['namber'] + $kolvo);
setcookie("namber",$namber,0,"/");

}


// Выводим результат 
  echo "<pre> В корзине "; print_r($namber); echo "шт единиц товара на сумму:";  print_r($old_znach); echo "рублей";
  echo "<pre> массив содерж. id товара и количество:"; 
echo "<pre>"; 
print_r($arr);
echo "<pre>";

 
echo "<table border=1 width=100% class=tabl_prise>
<tr>
<td width=2%>
№
</td>
<td width=80%>
Услуга
</td>
<td width=5%>
Цена
</td>
<td width=13% >
В корзину
</td>
</tr>
";

$nb1=0;
foreach($_SESSION['array'] as $key=>$value)
    {

list($id_list, $caunt_list) = split ('[|]', $value);

$q1 = mysql_query("SELECT * FROM vidiyslyg where id='$id_list'");
 $res1 = mysql_fetch_array($q1);
mysql_query("SET NAMES 'utf8'");
do { 
$nb1=$nb1+1;
echo "
<tr>
<td>
$nb1
</td>
<td>
$res1[Yslyga]
</td>
<td align=right>
$res1[Sale]
</td>
<td>
<div><a href='#' class='minus' id='$res1[id]'>-</a><input class='change' type='text' size='1' id='$res1[id]' value='$caunt_list' ><a href='#' class='add' id='$res1[id]'>+</a></div> 
</td>
</tr>
";
}
while ($res1 = mysql_fetch_array($q1));

}
echo "</table>";
}
?>



вот ссылка на сайт показывающий работу кода
Ответить с цитированием