2013-07-30 6 views
0

У меня есть вопрос о команде, которая не дастпоиска результат прибудет пустые поля

Notice: Undefined index: q in C:\xampp\htdocs\Capstone - Copy\index.php on line 118

даже если поле пусто у меня есть этот код для сайта, что эти единственная проблема, где, если я дон 't поместить значение в мой поиск, он даст эту ошибку и я могу удалить значение get, когда я перезагружаю сайт, поэтому он будет давать только вывод по умолчанию, который представляет собой целые строки и изображения, которые я выложу на экран печати сайтом снимок экрана является стандартным представлением сайта.

> <?php 
> 
>      $searchtext = $_GET['q']; 
> 
> 
>       $per_page =5; 
>       $pages_query = mysql_query("SELECT COUNT('PersonID') FROM persons"); 
>       $pages = ceil(mysql_result($pages_query,0)/$per_page); 
> 
>       $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; 
>       $start = ($page - 1) * $per_page; 
> 
> 
> $query=mysql_query("select * from persons where firstname like 
> '%$searchtext' or lastname like '%$searchtext' order by date desc 
> LIMIT $start,$per_page ");   while($test = mysql_fetch_array($query)) 
>   { 
>    $id = $test['PersonID']; 
> 
> 
> 
>         echo"<div class = content />"; 
>    echo"<img height=200 width=200 src='upload/". $test['Image'] ."'/>"; 
>    echo"" .$test['LastName']." "; 
>    echo"". $test['MiddleName']. " "; 
>    echo"". $test['FirstName']. ""; 
>    echo"<right> <a href ='view.php?PersonID=$id'>Edit</a></right>"; 
>    echo"<right> <a href ='del.php?PersonID=$id'>Delete</a></right>"; 
>         echo"</div>"; 
> 
> 
> 
>   } 
>    if ($pages >=1 && $page <= $pages) { 
>       for ($x=1; $x<=$pages; $x++) { 
>       echo ($x == $page) ? '<strong><a href="?page='.$x.'">'.$x.' </a></strong> ' : '<a 
> href="?page='.$x.'">'.$x.' </a>'; 
>       } 
>       } ?> 
> 
> 

screen shot screenshot2

и вот результат образец, который не будет давать ошибку, потому что это значение по умолчанию

screenshot 3

ответ

1

Вы хотите только запустить запрос, если $ SearchText не является нулевым.

$searchtext = ''; 
if(isset($_GET['q'])) $searchtext = $_GET['q']; 
if($searchtext) { 
    //run query 
    //display results 
} else { 
    //display normal page 
} 

Имейте в виду, что, поскольку у вас есть это сейчас, вы попрошайничаете атаку SQL Injection. Используйте PDO и привяжите значения.

+0

Он хочет запустить запрос, если $ searchText имеет значение NULL. Тогда его запрос вернет всех пропавших без вести! –

1

Ну, если я правильно понял, это должно помочь:

Изменить это: $searchtext = $_GET['q'];

к этому: $searchText = isset($_GET['q']) ? mysql_real_escape_string($_GET['q']) : "";

WATCH OUT

Пожалуйста, не используйте mysql_ * функции и вместо этого переключитесь на функции mysqli_ или PDO. mysql_ с устаревшим php 5.5 и не поддерживается php> = 5.5. В дополнение к этому я должен упомянуть, что ваш скрипт уязвим для инъекций mysql. Всегда избегайте своих значений, прежде чем вставлять их в запрос базы данных!

В моем примере кода есть функция mysql_real_escape_string, которая, как я сказал, устарела. Если вы придерживаетесь mysql_ *, это самое меньшее, что вы можете сделать для защиты своего приложения.

 Смежные вопросы

  • Нет связанных вопросов^_^