Member 13598257 Ответов: 1

Как исправить это сообщение об ошибке обратите внимание на неопределенный индекс в моем PHP скрипте пожалуйста помогите


<?php 
	
$searchtitle = trim($_POST['searchtitle']) ;
$searchauthor = trim($_POST['searchauthor']);

if (!$searchtitle && !$searchauthor) {
	printf("You must specify either a title or an author");
	exit();
}
$searchtitle = addslashes($searchtitle);
$searchauthor = addslashes($searchauthor);

try {
	$db = new PDO("mysql:host=localhost; dbname=library", "root");
	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	}

catch (PDOExceeption $e) {
	printf("Unable to open database: %s\n", $e->getMessage());
}

$query = " select * from books";
if ($searchtitle && !$searchauthor) {
	
	$query = $query . "where title like '%" . $searchtitle . "%'";
}
if(!$searchtitle && $searchauthor) {
	
$query = $query . "where author like '" . $searchauthor . "%'";
}
if ($searchtitle && $searchauthor) {
	
	$query = $query . "where title like '%" . $searchtitle . "%' and author like '%" . $searchauthor . "%'";
}
printf("Debug: running the query %s <br>", $query);

try {
	$sth = $db->query($query);
	$bookcount = $sth->rowCount(); #Only workd for Mysql
	if ($bookcount == 0) {
		printf("Sorry, we did not find any matching books");
		exit;
	}
	printf('<table bgcolor ="#bdc0ff" cellpadding = "6"');
	printf('<tr><td>Title</td> <td>Author</td> </d> </tr>');
	while ($row = $sth->fetch(PDO::FETCH_ASSOC)){
		printf("<tr> <td> %s </td> %s </td> </tr>", htmlentities($row["title"]) , htmlentities($row["author"]));
	}
}
catch (PDOException $e) {
	printf("We had a problem: %s\n",$e->getMEssage());
}
printf("</table");
printf("<br> We found %s matching books", $bookcount);
?>


Что я уже пробовал:

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

1 Ответов

Рейтинг:
7

Freelancer sekhar Babu

Это не самая большая ошибка, но в зависимости от конфигурации сервера несколько раз она будет выдавать ошибку.

Проблема в том, что вы должны проверить, успешно ли отправлены данные $_POST или нет.

Если эта переменная Post была установлена, то мы можем сделать манипуляции с ними.

if(isset($_POST['searchtitle']))
$searchtitle = trim($_POST['searchtitle']) ;

if(isset($_POST['searchauthor']))
$searchauthor = trim($_POST['searchauthor']);

вы можете скрыть эти низкоуровневые ошибки, указав error_reporting() в верхней части страницы.
// Turn off all error reporting
error_reporting(0);


Member 13598257

Большое вам спасибо, код, который вы предоставили, работал очень хорошо. И мой другой вопрос как я могу отобразить таблицу потому что она не отображается заранее спасибо

Freelancer sekhar Babu

В чем проблема с печатью таблиц? Вы генерируете правильный html-код таблицы, не нарушая теги. Распечатайте правильные табличные теги, приятель. проверьте их там, где вам не хватает открывающих закрывающих меток.