Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблемы с SELECT * table WHERE
 
 автор: ARIRAN   (06.07.2006 в 14:00)   письмо автору
 
 


$dbh = DBI->connect("DBI:mysql:$db:$host:$port",$user,$pass);
my $sth = $dbh->prepare("SELECT * FROM realty WHERE direction='Северо-Запад' ORDER BY priceform DESC");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
#$ref->{'maxsquare'} образец для вставок
print " <tr>    <td width=100\% align=left valign=top colspan=5 bgcolor=gray>$ref->{'lotnumber'}</td>  </tr>";
  print "<tr>    <td width=20\% align=left valign=top>$ref->{'purpose'}</td>";
print "    <td width=20\% align=left valign=top>$ref->{'typeofbuilding'}</td> ";
 print "   <td width=20\% align=left valign=top>$ref->{'kontrakt'}</td> ";
  print "  <td width=20\% align=left valign=top>$ref->{'priceform'} ($ref->{'priceforminsquare'})</td> ";
 print "   <td width=20\% align=left valign=top>$ref->{'minsquare'} - $ref->{'maxsquare'}</td> ";
 print " </tr>   <tr>     <td width=100\% colspan=5 align=left valign=top>$ref->{'direction'}</td>";
 print " </tr>  <tr>    <td width=100\% colspan=5 align=left valign=top>$ref->{'information'}</td>";
 print " </tr><tr>&nbsp;</tr>";
}
print "</table>";


$sth->finish();
  # Закрытие соединения с MySQL
$dbh->disconnect();


mysql-4
в итоге скрипт (perl) не выводит мне ту единственную запись в таблице в которой есть Северо-Запад. кто виноват? что делать? ©

   
 
 автор: valenok   (06.07.2006 в 14:52)   письмо автору
 
   для: ARIRAN   (06.07.2006 в 14:00)
 

Виноват Я

[поправлено модератором]

   
 
 автор: ARIRAN   (06.07.2006 в 16:51)   письмо автору
 
   для: valenok   (06.07.2006 в 14:52)
 


/* Выполняем SQL-запрос */
   $query = "SELECT * FROM realty WHERE purpose='офис'";
   $result = mysql_query($query) or die("Query failed : " . mysql_error());

   /* Выводим результаты в html */
   print "<table>\n";
   while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
       print "\t<tr>\n";
       foreach ($line as $col_value) {
           print "\t\t<td>$col_value</td>\n";
       }
       print "\t</tr>\n";
   }
   print "</table>\n";

   /* Освобождаем память от результата */
   mysql_free_result($result);

   /* Закрываем соединение */
   mysql_close($link);
?>

взял код с сайта на пхп. в итоге то же самое. пока условие не ставишь то выводится вся база. как только задаю условие - пусто.

   
 
 автор: Trianon   (06.07.2006 в 17:00)   письмо автору
 
   для: ARIRAN   (06.07.2006 в 16:51)
 

а латинские символы тоже не ищутся?

   
 
 автор: ARIRAN   (06.07.2006 в 17:28)   письмо автору
 
   для: Trianon   (06.07.2006 в 17:00)
 

поменял сейчас значение на латинские буквы - все ищется. попутно выяснил что там в базе все в кодах типа &#1089&#1082&#1083&#1072&#1076 вместо русских букв хотя при выводе отображается нормально. шо делать?

полазил по форуму щас нашел что проблема у всех обратная. я закачиваю в бд таблицы из екселя закачка проводится с помощью скрипта ABC Excel Parser Pro plugin сам скрипт весьма удобен задается таблица на винчестере указываются каким даным какие имена полей присвоить и создается база, но вот создается она в кракозябрах.

осложняется проблема еще и тем, что я ни в пхп ни в бд не шарю :(

   
 
 автор: Trianon   (06.07.2006 в 17:57)   письмо автору
 
   для: ARIRAN   (06.07.2006 в 17:28)
 

Так кто мешает искать строку непосредственно в кракозябах?
&#1083 - UNICODE символ с кодом 1083 = 0x43B = 'л'

   
 
 автор: ARIRAN   (06.07.2006 в 18:07)   письмо автору
 
   для: Trianon   (06.07.2006 в 17:57)
 

я могу конечно :) но это только первая часть моей эпопеи дальше мне надо будет организовать поиск через форму там в value везде кракозябры вбивать? :)

   
 
 автор: Trianon   (06.07.2006 в 18:12)   письмо автору
 
   для: ARIRAN   (06.07.2006 в 18:07)
 

да нет... просто преобразовать вводимые в форме строки к этому виду, перед тем как собственно искать.
Всё это, конечно, лишь в том случае, если Вас устраивает держать базу в кракозябрах, и не устраивает (или невыполнимо) готовить данные перед импортом более адекватным образом.

   
 
 автор: ARIRAN   (06.07.2006 в 18:26)   письмо автору
 
   для: Trianon   (06.07.2006 в 18:12)
 

в том то и фишка что меня не устраивает ни база в кракозябрах ни преобразование в форме запроса. оптимальным решением я думаю является подготовка данных перед импортом в адекватную форму, но я не знаю как. может я сюда выложу код этого скрипта (которым я закачиваю екселевские файлы) посмотрите что там можно сделать? в самой базе в phpmyAdmin кодировка выставлена Russian ru win-1251 MySQL 4.0.16-log phpMyAdmin 2.6.0-pl3.

хеееелп :)

   
 
 автор: Trianon   (06.07.2006 в 18:37)   письмо автору
 
   для: ARIRAN   (06.07.2006 в 18:26)
 

Выложите. А лучше прикрепите аттачем.

   
 
 автор: ARIRAN   (06.07.2006 в 19:32)   письмо автору
31.4 Кб
 
   для: Trianon   (06.07.2006 в 18:37)
 

вот. весь установочный архив.
я там во всех файлах воткнул


mysql_query ("set character_set_client='cp1251'"); 
mysql_query ("set character_set_results='cp1251'"); 
mysql_query ("set collation_connection='cp1251_general_ci'");

но не помогло. а скрипт хороший. удобный.

   
 
 автор: Trianon   (06.07.2006 в 20:30)   письмо автору
 
   для: ARIRAN   (06.07.2006 в 19:32)
 

там, в файле includes.inc есть функция uc2html на 46-53 строках.
она преобразует unicode-строки в html-представления. Если её переписать вот так:

function uc2html($str) { // with windows-1251 character replacement 
  $ret = '';
  for( $i=0; $i<strlen($str)/2; $i++ ) {
     $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
     $charcode = (($charcode >= 0x410 &&  $charcode  <= 0x44F) ? chr($charcode+0xC0-0x410)
               : ($charcode == 0x401 ? chr(0xA8)
               : ($charcode == 0x451 ? chr(0xB8)
               : (($charcode <= 0x7E ) ? chr($charcode)
               : ('&#'.$charcode)))));
     $ret .= $charcode ;
}

то символы русского алфавита она начнет возвращать в кодировке windows-1251.
Это, конечно, грязный хак, но, как я понимаю, именно он Вам и нужен.

   
 
 автор: ARIRAN   (07.07.2006 в 09:59)   письмо автору
 
   для: Trianon   (06.07.2006 в 20:30)
 

заменил оригинальный блок на ваш. запустил. выдает ошибку

Parse error: parse error in includes.inc on line 244
после замены строка 244 у меня выглядит как ?> ???
открывал в DZ Soft Perl 5.4

   
 
 автор: Trianon   (07.07.2006 в 10:02)   письмо автору
 
   для: ARIRAN   (07.07.2006 в 09:59)
 

Прошу прощения. Пару строк забыл. :)

function uc2html($str) { // with windows-1251 character replacement 
  $ret = ''; 
  for( $i=0; $i<strlen($str)/2; $i++ ) { 
     $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]); 
     $charcode = (($charcode >= 0x410 &&  $charcode  <= 0x44F) ? chr($charcode+0xC0-0x410) 
               : ($charcode == 0x401 ? chr(0xA8) 
               : ($charcode == 0x451 ? chr(0xB8) 
               : (($charcode <= 0x7E ) ? chr($charcode) 
               : ('&#'.$charcode))))); 
     $ret .= $charcode ; 
  } 
  return $ret;
}

   
 
 автор: ARIRAN   (07.07.2006 в 10:13)   письмо автору
 
   для: Trianon   (07.07.2006 в 10:02)
 

чувак, ты - гений :)
все арбайтен и в базе все по-русски и выборка по-русски работает :)

спасибо!

p.s. а насчет грязного хака скрипт то фришный так что это не грязный хак а доработка-русификация :)

идем дальше, вопросв будет еще много :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования