|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: neadekvat
(23.09.2010 в 22:53)
| | Я попытался объяснить это письменно, но лучше чем я написал выше не выходит.
Все что родил, вот: как отсортировать полученный результат по количеству совпадений?
Т.е. что бы 1-й результат был с точным совпадение, дальше совпадение с 1-й погрешность, дальше с 2-мя... | |
|
|
|
|
|
|
|
для: 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
(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) > 0 and mysql_num_rows ($rec_id1) > 0)
{ // вывожу данные через найденные соответствия
|
Вопрос, как сделать, что бы 1-м в выдаче был результат с точным совпадением (если есть), дальше результат, у которого отличается только 1 значение (если такое есть), дальше, у которого 2 (если есть)... | |
|
|
|
|