|
|
|
| вообщем есть 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);
$result2= mysql_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 ) <0 or mysql_num_rows($result2) <0 )
{echo "в таблице нет данных" ;
exit();
}
if (mysql_num_rows($result) >0 or mysql_num_rows($result2) >0 )
{
$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));
}
}
?>
|
но получается если слова есть там и там то все нормально а если встречается только в одной таблице то выводит пустое место
как сделать чтобы выводилось нормально | |
|
|
|
|
|
|
|
для: crimso13
(31.08.2008 в 14:16)
| | Если не ошибаюсь, таблицы, к которым идет запрос, можно так же через запятую указывать, и результат вы получите в один массив | |
|
|
|
|
|
|
|
для: Le bien
(31.08.2008 в 14:18)
| | а если в одной таблице есть поле а в другой его нет по нему не ведется поиск но его надо выводить | |
|
|
|
|
|
|
|
для: Le bien
(31.08.2008 в 14:18)
| | Таблицы нельзя указывать через запятую.
Вернее, можно, но то, что в результате получится - будет совсем не то, что Вы ожидаете. | |
|
|
|
|
|
|
|
для: crimso13
(31.08.2008 в 14:16)
| | не применяйте цикл do ...while - ничего хорошего Вы от этой конструкции не получите. | |
|
|
|
|
|
|
|
для: Trianon
(31.08.2008 в 14:31)
| | а как тогда правильно написать | |
|
|
|
|
|
|
|
для: 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'];
}
|
| |
|
|
|
|
|
|
|
для: 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: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);
|
не знаю насколько это правильно но работает
осталось разобратся как выводить разные поля | |
|
|
|