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

Форум MySQL

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

 

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

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

тема: Валидность fulltext поиска
 
 автор: lElectroHardl   (23.09.2010 в 20:52)   письмо автору
 
 

На 1-й странице есть чекбоксы. Когда их выбрали и перешли на 2-ю страницу идет обработка данных:
<? 
    
// перевожу из массива в в строку значение чекбоксов
    
if (count($i) > 0)
        foreach (
$i as $k)
            
$search_in .= ",".$k;
    
// ищу по полученным выше чекбоксам соответствия
        
$rec_id1 mysql_query ("SELECT DISTINCT rec_id FROM rec_ings WHERE ings_id IN (0 $search_in) ",$db); 
    
// перевожу массив в строку
    
if (mysql_num_rows ($rec_id1) > 0)
    {
        
$rec_id mysql_fetch_array ($rec_id1);
        do 
                    
$ii .= ",".$rec_id['rec_id']; // если делаю через while не работает :(
        
while ($rec_id mysql_fetch_array ($rec_id1));
    }
    
// полученные выше соответствия подставляю в запрос
    
$data1 mysql_query ("SELECT * FROM data WHERE id IN (0$ii)",$db);
    if (
mysql_num_rows ($data1) > and mysql_num_rows ($rec_id1) > 0)
    { 
// вывожу данные через найденные соответствия

Вопрос, как сделать, что бы 1-м в выдаче был результат с точным совпадением (если есть), дальше результат, у которого отличается только 1 значение (если такое есть), дальше, у которого 2 (если есть)...

  Ответить  
 
 автор: lElectroHardl   (23.09.2010 в 22:25)   письмо автору
 
   для: lElectroHardl   (23.09.2010 в 20:52)
 

...

  Ответить  
 
 автор: neadekvat   (23.09.2010 в 22:53)   письмо автору
 
   для: lElectroHardl   (23.09.2010 в 20:52)
 

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

Ниче не понятно. Да и при чем тут mysql?

<?php
foreach ($i as $k
            
$search_in .= ",".$k;

=>
<?php
$search_in 
implode(','$i);

А вообще, называть массив $i - нехорошо.

<?php
$rec_id 
mysql_fetch_array ($rec_id1); 
        do  
                    
$ii .= ",".$rec_id['rec_id']; // если делаю через while не работает :( 
        
while ($rec_id mysql_fetch_array ($rec_id1));

=>
<?php
while ($rec_id mysql_fetch_assoc ($rec_id1))
    
$some_array[] = $rec_id['rec_id'];

$ii implode(','$some_array);
// вот две строки назад $i был массивом, а $ii уже обычная строка..


> and mysql_num_rows ($rec_id1) > 0
Это вы уже проверяли.

А вот "что бы 1-м в выдаче был результат с точным совпадением (если есть), дальше результат, у которого отличается только 1 значение (если такое есть), дальше, у которого 2 (если есть)" - вообще убиться можно. Ладно бы у вас текст куда-то подставлялся, дак у вас, судя по всему, только цифры..

  Ответить  
 
 автор: lElectroHardl   (24.09.2010 в 18:24)   письмо автору
 
   для: neadekvat   (23.09.2010 в 22:53)
 

Я попытался объяснить это письменно, но лучше чем я написал выше не выходит.

Все что родил, вот: как отсортировать полученный результат по количеству совпадений?
Т.е. что бы 1-й результат был с точным совпадение, дальше совпадение с 1-й погрешность, дальше с 2-мя...

  Ответить  
 
 автор: ride   (24.09.2010 в 20:16)   письмо автору
 
   для: lElectroHardl   (23.09.2010 в 20:52)
 

если я правильно понял что надо
SELECT rec_id, count(rec_id) as cnt 
FROM rec_ings WHERE ings_id IN (0 $search_in) 
group by rec_id order by cnt desc

  Ответить  
Rambler's Top100
вверх

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