2010-07-26 1 views
0

Привет, ребята, я застрял в точке, и мне нужна ваша помощь. Я хочу изменить SQL QUERY для каждого параметра $ _GET. Я использую это:Построение SQL QUERY для КАЖДОГО ISSET?

<? 
if (isset($_GET['page'])) { 
    $pageno = $_GET['page']; 
} else { 
    $pageno = 1; 
} // if 
$query = mysql_query("SELECT count(id) FROM m3_music_mp3"); 
$query_data = mysql_fetch_row($query); 
$numrows = $query_data[0]; 
$rows_per_page = 30; 
$lastpage  = ceil($numrows/$rows_per_page); 
$pageno = (int)$pageno; 
if ($pageno > $lastpage) { 
    $pageno = $lastpage; 
} // if 
if ($pageno < 1) { 
    $pageno = 1; 
} // if 
$limit = 'ORDER BY id DESC LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
$query = mysql_query("SELECT * FROM m3_music_mp3 $limit"); 
?> 

Это IF music.php страница = 1 устанавливается $ запрос = "SELECT * FROM m3_music_mp3 ORDER BY ид DESC LIMIT X, X", но я хочу сделать, это IF музыка .php? слово = A & страница = 1 набор $ запрос = "SELECT * FROM m3_music_mp3 WHERE озаглавить как '$ слово%' ORDER BY ID DESC LIMIT X, X"

Я попытался

if(isset($_GET['word']) && isset($_GET['page'])) { 
$limit .= 'WHERE....' 
} 

что-то но не работает. Спасибо. и извините за плохой английский & плохой PHP знание меня

ответ

0

в основном sAc является правильным. но вы можете уменьшить свой код. предел причина разве это необязательно schould работа просто отлично: Edit изменил немного кода, чтобы быть и проверяемым от копирования;)

<? 
if (isset($_GET['page'])) { 
    $pageno = $_GET['page']; 
} else { 
    $pageno = 1; 
} // if 
$limit = ""; 
    if(isset($_GET['word'])) { 
     $word = mysql_real_escape_string($_GET['word']); 

     $limit = " WHERE title LIKE '%$word%'" 
    } 
$query = mysql_query("SELECT count(id) FROM m3_music_mp3" . $limit); 
$query_data = mysql_fetch_row($query); 
$numrows = $query_data[0]; 
$rows_per_page = 30; 
$lastpage  = ceil($numrows/$rows_per_page); 
$pageno = (int)$pageno; 
if ($pageno > $lastpage) { 
    $pageno = $lastpage; 
} // if 
if ($pageno < 1) { 
    $pageno = 1; 
} // if 
$limit .= ' ORDER BY id DESC LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
$query = mysql_query("SELECT * FROM m3_music_mp3 $limit"); 
?> 
+0

в порядке. это тоже работает. Спасибо. но теперь разбиение на страницы не работает правильно. Пейджинг по-прежнему работает со всеми данными, а не с тем, сколько строк заголовков: S –

+0

получить бит слова isset и поместить его ДО $ query = mysql_query («SELECT count (id) FROM m3_music_mp3»); изменить $ query = mysql_query ("SELECT count (id) FROM m3_music_mp3"); - $ query = mysql_query ("SELECT count (id) FROM m3_music_mp3". $ Limit); – teemitzitrone

0

Оно должно быть:

if(isset($_GET['word'])) { 
    $word = mysql_real_escape_string($_GET['word']); 

    $limit = " WHERE title LIKE '%$word%' ORDER BY id DESC LIMIT " .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
} 
else 
{ 
    $limit = " ORDER BY id DESC LIMIT " .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
} 

$query = mysql_query("SELECT * FROM m3_music_mp3 $limit") or die(mysql_error()); 
+0

спасибо за ваш комментарий. он отлично работает. но как я могу увеличить $ _GET? использует elseif (isset) вещь должна работать? –

0

Ваше решение должно работать нормально, может быть, вам просто нужно пространство перед WHERE, как = 'WHERE ... печать. внесите свою окончательную строку запроса, чтобы увидеть, где это происходит.