Интересный случай с кодировкой, при выводе из БД первая строка в неправ. кадеровкой
Доброе утро, помогите пожалуйста. Не давно стал изучать 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>"; } ?> вот ссылка на сайт показывающий работу кода |
Спасибо за быстрый ответ и помощь:) на другом форуме подсказали, между 123 и 124 строкой в файле handler.php нужно вставить "mysql_query("SET NAMES utf8");" и всё заработает как надо.
|
Часовой пояс GMT +3, время: 23:52. |