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

Форум MySQL

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

 

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

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

тема: как сделать поиск по бд из разных таблиц с одинаковыми полями
 
 автор: crimso13   (31.08.2008 в 14:16)   письмо автору
 
 

вообщем есть 2 таблицы с повторяющимися полями как сделать по ним поиск я написал примерно так
<?
  $result 
mysql_query("SELECT id,tittle,des,date,author,mini_img,view,DATE_FORMAT(date,'%d.%m.%Y') AS date1 FROM data WHERE (text LIKE '%$search%' ) OR (des LIKE '%$search%')ORDER BY date DESC",$db);
  
$result2mysql_query("SELECT id,tittle,des,date,author,mini_img,view,DATE_FORMAT(date,'%d.%m.%Y') AS date1 FROM prog WHERE (text LIKE '%$search%' ) OR (des LIKE '%$search%')ORDER BY date DESC",$db);
if (!
$result or !$result2)
{
echo (
"запрос в базу не прошел");
exit(
mysql_error());
}
if (
mysql_num_rows($result ) <or mysql_num_rows($result2) <)

{echo 
"в таблице нет данных" ;
exit();
}    
if (
mysql_num_rows($result) >or mysql_num_rows($result2) >)
{
$myrow mysql_fetch_array($result);
$myrow2 mysql_fetch_array($result2);

if (isset (
$result)) {
do { 
printf("<table align='center'      class='post'>
          <tr>
            <td class='post_tittle'><p  class='post_name'><img  class='mini' alighn='left' src='%s'><a href='view_post.php?id=%s' >%s </a></p>
            
            
            <p class='post_adds'>дата добавления: %s</p>
            
            <p  class='post_adds' >автор урока: %s</p></td>
          </tr>
          <tr>
            <td>%s<p class='post_view'>просмотров:  %s</p></td>
          </tr>  </table><br><br>"
,$myrow["mini_img"],$myrow["id"],$myrow["tittle"],$myrow["date1"],$myrow["author"],$myrow["des"],$myrow["view"]  );
          }
          while (
$myrow=mysql_fetch_array($result));
          }
        if (isset (
$result2))  {
        do {
        
printf("<table align='center'      class='post'>
          <tr>
            <td class='post_tittle'><p  class='post_name'><img  class='mini' alighn='left' src='%s'><a href='view_prog.php?id=%s' >%s </a></p>
            
            
            <p class='post_adds'>дата добавления: %s</p>
            
            <p  class='post_adds' >автор урока: %s</p></td>
          </tr>
          <tr>
            <td>%s<p class='post_view'>просмотров:  %s</p></td>
          </tr>  </table><br><br>"
,$myrow2["mini_img"],$myrow2["id"],$myrow2["tittle"],$myrow2["date1"],$myrow2["author"],$myrow2["des"],$myrow2["view"]);
          }


while (
$myrow2=mysql_fetch_array($result2));
}         

}
            
        
?>

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

  Ответить  
 
 автор: Le bien   (31.08.2008 в 14:18)   письмо автору
 
   для: crimso13   (31.08.2008 в 14:16)
 

Если не ошибаюсь, таблицы, к которым идет запрос, можно так же через запятую указывать, и результат вы получите в один массив

  Ответить  
 
 автор: crimso13   (31.08.2008 в 14:25)   письмо автору
 
   для: Le bien   (31.08.2008 в 14:18)
 

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

  Ответить  
 
 автор: Trianon   (31.08.2008 в 14:28)   письмо автору
 
   для: Le bien   (31.08.2008 в 14:18)
 

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

  Ответить  
 
 автор: Trianon   (31.08.2008 в 14:31)   письмо автору
 
   для: crimso13   (31.08.2008 в 14:16)
 

не применяйте цикл do ...while - ничего хорошего Вы от этой конструкции не получите.

  Ответить  
 
 автор: crimso13   (31.08.2008 в 15:32)   письмо автору
 
   для: Trianon   (31.08.2008 в 14:31)
 

а как тогда правильно написать

  Ответить  
 
 автор: Trianon   (31.08.2008 в 15:51)   письмо автору
 
   для: crimso13   (31.08.2008 в 15:32)
 

Общий шаблон обработки оператора SELECT примерно следующий:
$sql = "SELECT...";
$res = mysql_query($sql);

if(!$res) ...

if(mysql_num_rows($res) == 0) ...

while(($row = mysql_fetch_assoc($res)) != 0)
{
  // ...    echo $row['name'];
}

  Ответить  
 
 автор: crimso13   (31.08.2008 в 16:22)   письмо автору
 
   для: Trianon   (31.08.2008 в 15:51)
 

извини можно по конкретней
вот $sql = "SELECT id,tittle FROM data WHERE (text LIKE '%$search%' ) к примеру или указывать вторую таблицу через запятую
$res = mysql_query($sql);

if(!$res){
echo ("запрос в базу не прошел");
exit(mysql_error());
} -здесь примерно так я думаю


if(mysql_num_rows($res) == 0)
printf("<table align='center' class='post'>
<tr>
<td class='post_tittle'><p class='post_name'><img class='mini' alighn='left' src='%s'><a href='view_post.php?id=%s' >%s </a></p>


<p class='post_adds'>дата добавления: %s</p>

<p class='post_adds' >автор урока: %s</p></td>
</tr>
<tr>
<td>%s<p class='post_view'>просмотров: %s</p></td>
</tr> </table><br><br>",$myrow["mini_img"],$myrow["id"],$myrow["tittle"],$myrow["date1"],$myrow["author"],$myrow["des"],$myrow["view"] );

while ($myrow=mysql_fetch_array($result));
}
здесь надо это писать?

while(($row = mysql_fetch_assoc($res)) != 0)
{
// ... echo $row['name'];
} что сюда вставлять
поправь пожалуйста

  Ответить  
 
 автор: crimso13   (31.08.2008 в 16:59)   письмо автору
 
   для: crimso13   (31.08.2008 в 16:22)
 

УРА я нашел то что мне нужно UNION ALL
$result = mysql_query("SELECT id,tittle,des,date,author,mini_img,view,DATE_FORMAT(date,'%d.%m.%Y') AS date1 FROM data WHERE (text LIKE '%$search%' ) OR (des LIKE '%$search%') UNION ALL SELECT id,tittle,des,date,author,mini_img,view,DATE_FORMAT(date,'%d.%m.%Y') AS date1 FROM prog WHERE (text LIKE '%$search%' ) OR (des LIKE '%$search%')ORDER BY date DESC",$db);

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

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

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