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

Форум MySQL

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

 

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

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

тема: запрос и с "и" с "или"
 
 автор: Рома   (17.01.2009 в 16:05)   письмо автору
 
 

при запросе "апельсины" выдает кучу постов, которые содержат это слово.
а при запросе "апельсины мандарины" не показывает ни одного.
можно ли совместить запросы с логиками "и" и "или", или как-то объеденить результаты?

вот мой запрос

$sql="SELECT * FROM roma where "."msg ".""." like '%".implode("%' AND msg like '%",$arr)."%'";

  Ответить  
 
 автор: ols   (17.01.2009 в 16:31)   письмо автору
 
   для: Рома   (17.01.2009 в 16:05)
 

Может лучше для каждого типа логики использовать отдельный запрос?

  Ответить  
 
 автор: Trianon   (17.01.2009 в 16:43)   письмо автору
 
   для: Рома   (17.01.2009 в 16:05)
 

>можно ли совместить запросы с логиками "и" и "или"

?

  Ответить  
 
 автор: Рома   (17.01.2009 в 20:53)   письмо автору
 
   для: Trianon   (17.01.2009 в 16:43)
 

ну если я создам два запроса

$sql="SELECT * FROM roma where "."msg ".""." like '%".implode("%' AND msg like '%",$arr)."%'";
$sql="SELECT * FROM roma where "."msg ".""." like '%".implode("%' OR msg like '%",$arr)."%'";

я получу два массива данных.

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

мож кто знает функцию для слияния массивов ключенезависимо?

  Ответить  
 
 автор: Trianon   (17.01.2009 в 21:19)   письмо автору
 
   для: Рома   (17.01.2009 в 20:53)
 

что мешает просто издать второй из запросов?

  Ответить  
 
 автор: Рома   (17.01.2009 в 21:55)   письмо автору
 
   для: Trianon   (17.01.2009 в 21:19)
 

Вы просто гений!


$sql="SELECT * FROM roma where "."msg  like '%".implode("%' AND msg like '%",$arr)."%'"."AND msg  like '%".implode("%' OR msg like '%",$arr)."%'";

  Ответить  
 
 автор: Trianon   (17.01.2009 в 22:06)   письмо автору
 
   для: Рома   (17.01.2009 в 21:55)
 

Чур меня чур.
я Вам этого не советовал.

  Ответить  
 
 автор: Рома   (18.01.2009 в 10:36)   письмо автору
 
   для: Trianon   (17.01.2009 в 22:06)
 

да, именно так не совсем хорошо получается

вот так по моему правильней будет

$sql="SELECT * FROM roma where "."msg like '%".implode("%' and msg like '%",$arr)."%' union SELECT * FROM roma where "."msg like '%".implode("%' or msg like '%",$arr)."%'";

  Ответить  
 
 автор: Рома   (18.01.2009 в 11:21)   письмо автору
 
   для: Рома   (18.01.2009 в 10:36)
 

а можно еще один вопросик, в дополнение моей темы?
как мне теперь подсветить жирным шрифтом ключевые слова в результатах?

вот получилась у меня следующая конструкция, все работает.

<?
$arr 
explode(" ",$sea); 
$msconnect=mysql_connect($mshost$msuser$mspassword);
mysql_select_db($msname$msconnect);
$sql="SELECT * FROM roma where "."msg  like '%".implode("%' and msg like '%",$arr)."%' union SELECT * FROM roma where "."msg like '%".implode("%' or msg like '%",$arr)."%'";
$result=mysql_query($sql$msconnect);
if(!
$result){echo "<div class=\"b\">Error!</div>";}
$posts=mysql_num_rows($result);
if(!
$posts)
{
echo 
"
<div class=\"b\">По данному запросу результатов не найдено!</div>"
;
}
else
{
if(
mysql_num_rows($result)>0
{
while(
$row=mysql_fetch_array($result))
{
$pn=$row['pn'];
$proz=$row['proz'];
$calc=$row['calc'];
$name=$row['name'];
$msg=$row['msg'];
$mobile=$row['mobile'];
$email=$row['email'];
echo 
"
<div class=\"rg\"><div class=\"tg\">
$msg
<div class=\"i\" align=\"right\">
$mobile,&nbsp;$name</div>
</div></div>"
;
}
}
}
?>

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

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