php-скрипт, видимо проблема с кодировкой

ADIK

Новичок
php-скрипт, видимо проблема с кодировкой

вообщем-с так...надо исправить скрипт

данные на скрипт поступают с формы (селекты) как на английском, так и на русском!
когда данные ВСЕ на английском, то скрипт срабатывает, когда в данных присутствует русское слово, то скрипт отказывается работать.

скрипт берёт данные из БД (MySql).

как такое можно исправить?

заранее спасибо
 

Beavis

Banned
ADIK
отказывается?)) выдает на экран надпись "я отказываюсь работать"? или как?)

а если сразу после соединения выполнить запрос "SET NAMES 'cp1251'" ?
 

ZigFreeD

Новичок
Согласен, мы что на телепатов похожи? Пока жи хоть в чем проблема... при ханосе в бд или при выборке из нее?
Часть кода хотя бы показал... в котором трабл
 

ADIK

Новичок
вообщем вот эта проверка не проходит:

if ($_GET[$clr[$xix].$sze[$xzx]]!=0) {....};

в $clr[$xix].$sze[$xzx] как раз иногда попадает русское значение, напимер $clr[$xix].$sze[$xzx] = "red3 года"

когда $clr[$xix].$sze[$xzx] = "rose46" всё прокатывает

-~{}~ 27.10.07 17:00:

PHP:
$q = mysql_query("SELECT Color FROM GoodsList WHERE id=".$add) or die (mysql_error());
                $row = mysql_fetch_row($q);
                $color=@implode('<br>',unserialize($row[0]));
          	    $col=explode('<br>',$color);
                $clr = array();
                while(list($g,$h)=each($col)) {
          	      if(isset($h)) {
                    $clr[]=$h;
                  }
                }
                $q = mysql_query("SELECT Size FROM GoodsList WHERE id=".$add) or die (mysql_error());
                $row = mysql_fetch_row($q);
                $sze = array();
          	    $size=@implode(':::',unserialize($row[0]));
                      $siz=explode(':::',$size);
          	    while(list($g,$h)=each($siz)) {
          	      if(isset($h)) {
          	        $sze[]=$h;
                  }
          	    }
      
                for ($xix=0;$xix<count($clr);$xix++) {
                  for ($xzx=0;$xzx<count($sze);$xzx++) {
                    if ($_GET[$clr[$xix].$sze[$xzx]]!=0) {
                      $xx = count($trash);
                      $trash[$xx][0]=$add;                           
                      $trash[$xx][1]=$_GET[$clr[$xix].$sze[$xzx]]; 
                      $trash[$xx][2]=$clr[$xix];                      
                      $trash[$xx][3]=$sze[$xzx];                   
                    }
                  }
                }
                session_register("trash");
add = 685 (например)

вот запрос:
articul=B2277&red5+%EB%E5%F2=0&red6+%EB%E5%F2=2&blue5+%EB%E5%F2=3&blue6+%EB%E5%F2=0&count=2&colors=

articul=B2277&red5 лет=0&red6 лет=2&blue5 лет=3&blue6 лет=0&count=2&colors=(он же)


когда запрос вот этот, то всё работает:
articul=598&lightblue46=0&lightblue48=0&lightblue50=1&lightblue52=0&rose46=0&rose48=0&rose50=2&rose52=0&
peach46=0&peach48=0&peach50=0&peach52=0&count=3&colors=

.
 

Beavis

Banned
вряд ли у кого то возникнет желание разбираться в ТАКОМ коде.. по-моему, он понятен только для компьютера, да и то, как оказалось, не до конца
 

Фанат

oncle terrible
Команда форума
ADIK
когда "проверка не проходит", то сравниваемые элементы выводят на экран, для визуального контроля
 

ADIK

Новичок
когда "проверка не проходит", то сравниваемые элементы выводят на экран, для визуального контроля

понял, вот:

articul=598&lightblue46=0&lightblue48=0&lightblue50=1&lightblue52=0&rose46=0&rose48=0&rose50=2&rose52=0&
peach46=0&peach48=0&peach50=0&peach52=0&count=3&colors=

до начала циклов вот что получается:

$clr=["lightblue","rose","peach"];
$sze=["46","48","50","52"];

далее в цикле составляется следующее: всевозможные комбинации типа lightblue46, lightblue52,....peach50, peach52 - это содержится
в $clr[$xix].$sze[$xzx] и я так понимаю если эта фраза(комбинация найдена) в $_GET[], то выполняется тело цикла

так происходит когда всё на англ-м.

если запрос:

articul=B2277&red5+%EB%E5%F2=0&red6+%EB%E5%F2=2&blue5+%EB%E5%F2=3&blue6+%EB%E5%F2=0&count=2&colors=

articul=B2277&red5 лет=0&red6 лет=2&blue5 лет=3&blue6 лет=0&count=2&colors=(он же)

где соответственно
$clr=["red","blue"];
$sze=["5 лет","6 лет"];

то тело цикла не выполняется

.
 

Фанат

oncle terrible
Команда форума
я не вижу, где у тебя выводятся на экран сравниваемые величины.
 

ADIK

Новичок
if ($_GET[$clr[$xix].$sze[$xzx]]!=0) {тело цикла}
$clr[$xix].$sze[$xzx] - это всевозможные комбинации типа lightblue46, lightblue52,....peach50, peach52

if ($_GET[$clr[$xix].$sze[$xzx]]!=0) - если не ноль то тело цикла

в $_GET[lightblue46=0,lightblue48=0,...,peach52=0]

-----------------------

когда русские слова то:
$clr[$xix].$sze[$xzx] - это всевозможные комбинации типа red5 лет=0,...,blue6 лет=0

в $_GET[red5 лет=0,...,blue6 лет=0]

------------------------

но тело цикла во втором случае не выполняется
 

Фанат

oncle terrible
Команда форума
мля.
вот допустим, у тебя проверка
if ($a==$b) {
echo $c
}
если условие не срабатывает, то на экран выводят $a и $b ДЛЯ ВИЗУАЛЬНОГО КОНТРОЛЯ
не какие-то там левые переменные всякое фуфло, а КОНКРЕТНЫЕ ПЕРЕМЕННЫЕ УЧАСТВУЮЩИЕ В СРАВНЕНИИ

допустим, у тебя цикл
while ($i > 0) {
echo $i--
}
если цикл не выполняется, то выводим на экран $i ДЛЯ ВИЗУАЛЬНОГО КОНТРОЛЯ
не какие-то там левые переменные всякое фуфло, а КОНКРЕТНЫЕ ПЕРЕМЕННЫЕ УЧАСТВУЮЩИЕ В ЦИКЛЕ

неужели это ТАК СЛОЖНО?
неужели так сложно вывести РЕАЛЬНЫЕ ПЕРЕМЕННЫЕ, а не писать от балды на форуме то, что, как ты ПРЕДПОЛАГАЕШЬ, лежит в переменных?!
 

Фанат

oncle terrible
Команда форума
мля
у него еще и понтовый отладчик, но с вопросом "тело цикла не работает" оно идет на форум.
при этом вывести участвующие в выражении переменный оно все равно не в силах.

и где среди всех этих картинок РУССКИЕ БУКВЫ?!

-~{}~ 27.10.07 18:19:

вообщем вот эта проверка не проходит:
if ($_GET[$clr[$xix].$sze[$xzx]]!=0) {....};
что за дурацкая идея сравнивать строки с цифрами?

-~{}~ 27.10.07 18:26:

короче.
вопросы вида "я тут скрипт накалякал, сам не понимаю что он делает и зачем. найдите мне в нем ошибку" - это крайняя степень неуважения к форуму.

вопрос не должен быть сформулирован, как "видимо проблема с кодировкой"
вопрос должен быть сформулирован, как "данные приходят в такой-то кодировке (пример), а сравниваются - в такой-то (пример)". как исправить.

всю необходимую информацию ды должден собрать САМ.
а в нынешнем виде вопрос не имеет смысла.

единственное, чем тебе может помочь форум - это научить самостоятельно определять - в чем проблема. в кодировке или в чем-то другом. и если в кодировке - то КАКАЯ ИМЕННО.
и то, только если ты перестанешь тупить и начнешь делать, что тебе говорят
 

ADIK

Новичок
это русские, "понтовый отладчик (NuSphere)" не смог отобразить русский или я не смог его настроить

$_GET[]

http://binc.kirov.ru/get1.gif

переменные цикла:

http://binc.kirov.ru/21.gif

ещё раз спасибо за терпимость

в том-то и дело что скрипт не мой :(
 

Фанат

oncle terrible
Команда форума
еще раз спасибо за то, что прочел мой ответ и начал совершать осмысленные действия

-~{}~ 27.10.07 18:38:

в том-то и дело что скрипт не мой
(пожимая плечами) какая разница. отлаживать-то его все равно тебе
 
Сверху