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

Форум PHP

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

 

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

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

тема: Поиск по таблице базы данных - не работает обработчик
 
 автор: MVlad   (28.11.2008 в 16:23)   письмо автору
 
 

почему то не работает этот кусок кода. (поиск песни) $txt - введенное слово для поиска. Две таблицы singers(исполнители)-поля id и singers(имя исполнитля), songs(песни)-поля id, singer(id из singers)и song(назв песни). Что я делаю нетак

     
if ($list == 1)
{#2
$num=1;
$txt=trim($txt);
$txt=stripslashes($txt);
$txt=htmlspecialchars($txt);
  if (strlen($txt)<4 or empty($txt))
  echo("<span class='warning'>Поисковый запрос не был введен, либо он менее 4   символов<span>"); 
  else {#3
  $result = mysql_query("SELECT * FROM songs WHERE MATCH(song) AGAINST('$txt') ORDER  BY song",$db);
  if (mysql_num_rows($result)>0)
  {#4
  echo (" <table class='table' CELLPADDING='2'>
  <tr>
  <th></th>
  <th>Название&nbsp;песни</th>
  <th>Исполнитель</th>
  <th class='rowend'>Чистое&nbsp;поле</th>
  </tr>");
  $myrow = mysql_fetch_array($result);
  do
  {
  $result1 = mysql_query("SELECT * FROM singers ORDER BY singer",$db);
  $myrow1 = mysql_fetch_array($result1);
    do
    if ($myrow[singer] == $myrow1[id])
    {
    printf("
    <tr class='rowA'>
    <td>%s</td>
    <td>%s</td>
    <td><a href='singer_view.php?id=%s'>%s</a></td>
    td class='rowend'></td>",$num,$myrow['song'],$myrow['singer'],$myrow1['singer']);
    $num++;}
    while ($myrow1 = mysql_fetch_array($result1));}
  while ($myrow = mysql_fetch_array($result));
  echo (" </table>");
  }#4
  else echo("<span class='warning'>Такой песни нет в базе<span>");
  }#3
}#2

  Ответить  
 
 автор: bronenos   (28.11.2008 в 20:55)   письмо автору
 
   для: MVlad   (28.11.2008 в 16:23)
 

mysql_fetch_array замените на mysql_fetch_assoc

  Ответить  
 
 автор: BinLaden   (28.11.2008 в 20:58)   письмо автору
 
   для: bronenos   (28.11.2008 в 20:55)
 

Ооо, раз уж взялись поправлять, то давайте по полной. Слабо? :))

  Ответить  
 
 автор: bronenos   (28.11.2008 в 23:52)   письмо автору
 
   для: BinLaden   (28.11.2008 в 20:58)
 

Ну, это по программной части, а по логике - гляжу..

<?php
if ($list == 1)
{
    if (
strlen($txt) < 4)
    {
        print 
"<span class='warning'>Поисковый запрос не был введен, либо он короче 4 символов</span>";
    }
    else
    {
        
$txt mysql_escape_string($txt); 
        
$result mysql_query("select * from songs where match(song) against('$txt') order by song limit 1");
        
        if (
mysql_num_rows($result))
        {
            print
                
"<table class='table' cellpadding='2'> 
                <tr> 
                <th></th> 
                <th>Название&nbsp;песни</th> 
                <th>Исполнитель</th> 
                <th class='rowend'>Чистое&nbsp;поле</th> 
                </tr>"
;
            
            
$num 1;
            while (
$row mysql_fetch_assoc($result))
            {
                
$tres mysql_query("select * from singers order by singer"); 
                while (
$trow mysql_fetch_array($tres))
                {
                    if (
$row['singer'] != $trow['id']) continue;
                    print
                        
"<tr class='rowA'> 
                        <td>"
.($num++)."</td> 
                        <td>
$row[song]</td> 
                        <td><a href='singer_view.php?id=
$row[singer]'>$trow[singer]</a></td> 
                        <td class='rowend'></td>"
;
                }
            }
            
            print
                
"</table>";
        }
        else
        {
            print
                
"<span class='warning'>Такой песни нет в базе<span>";
        }
    }
}
?>

  Ответить  
 
 автор: BinLaden   (29.11.2008 в 00:36)   письмо автору
 
   для: bronenos   (28.11.2008 в 23:52)
 

> $tres = mysql_query("select * from singers order by singer");
> while ($trow = mysql_fetch_array($tres))
> {
> if ($row['singer'] != $trow['id']) continue;

0_0

  Ответить  
 
 автор: bronenos   (29.11.2008 в 09:47)   письмо автору
 
   для: BinLaden   (29.11.2008 в 00:36)
 

Это я выписал чтобы удобнее читать было, а исправленный вариант вчера не сохранился из-за тупого интернета (((

<?php 
if ($list == 1

    if (
strlen($txt) < 4
    { 
        print 
"<span class='warning'>Поисковый запрос не был введен, либо он короче 4 символов</span>"
    } 
    else 
    { 
        
$txt mysql_escape_string($txt);  
        
$result mysql_query("select * from songs where match(song) against('$txt') order by song limit 1"); 
         
        if (
mysql_num_rows($result)) 
        { 
            print 
                
"<table class='table' cellpadding='2'>  
                <tr>  
                <th></th>  
                <th>Название&nbsp;песни</th>  
                <th>Исполнитель</th>  
                <th class='rowend'>Чистое&nbsp;поле</th>  
                </tr>"

             
            
$num 1
            while (
$row mysql_fetch_assoc($result)) 
            { 
                
$tres mysql_query("select * from singers where id='$row[singer]' order by singer");  
                while (
$trow mysql_fetch_array($tres)) print 
                    
"<tr class='rowA'>  
                    <td>"
.($num++)."</td>  
                    <td>
$row[song]</td>  
                    <td><a href='singer_view.php?id=
$row[singer]'>$trow[singer]</a></td>  
                    <td class='rowend'></td>"

            } 
             
            print 
                
"</table>"
        } 
        else 
        { 
            print 
                
"<span class='warning'>Такой песни нет в базе<span>"
        } 
    } 

?>

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

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