Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Нужна помощь с кодом
Форумы портала PHP.SU » » Вопросы новичков » Нужна помощь с кодом

Страниц (1): [1]
 

1. Studesha - 08 Июля, 2016 - 23:41:21 - перейти к сообщению
Учу пхп по Кевину Янку. В книге есть пример создания CMS для управления данными в БД.
Ниже я приведу содержимое index.php и остальных подключаемых файлов,не могу найти ошибку, при выполнении вылазит ошибка:
Object not found!

The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.

If you think this is a server error, please contact the webmaster.

Error 404

localhost
Apache/2.4.16 (Win32)

index.php

<?php
include 'DB.inc.php';
try
{
$result = $pdo->query('SELECT id, name FROM author');
}
catch (PDOException $e)
{
$error = 'Ошибка при извлечении авторов из базы данных!';
include 'error.html.php';
exit();}
foreach ($result as $row)

{ $authors[] = array('id' => $row['id'], 'name' => $row['name']);}

include 'authors.html.php';

if (isset($_POST['action'])&&$_POST['action'] =='Удалить'){

try {
$sql = 'SELECT id FROM joke WHERE authorid = :id';
$s = $pdo->prepare($sql);
$s->bindValue(':id', $_POST['id']);
$s->execute();
} catch (PDOException $e) {
$еггог = 'Ошибка при получении списка шуток, которые нужно удалить.';
include 'error.html.php';
exit();
}
$result = $s->fetchAll();
// Удаляем записи о категориях шуток,
try {
$sql = 'DELETE FROM jokecategory WHERE jokeid = :id';
$s = $pdo->prepare($sql);
// Для каждой шутки
foreach ($result as $row)
{ $jokeid = $row['id'];
$s->bindValue(':id', $jokeid);
$s->execute();
}
} catch (PDOException $e) {
$error = 'Ошибка при удалении записей о категориях шутки.';
include 'error.html.php';
exit();
}
// Удаляем шутки, принадлежащие автору,
try {
$sql = 'DELETE FROM joke WHERE authorid = :id';
$s = $pdo->prepare($sql);
$s->bindValue(':id', $_POST['id']);
$s->execute();
} catch (PDOException $e) {
$error = 'Ошибка при удалении шуток, принадлежащих автору.';
include 'error.html.php';
exit();
}
// Удаляем имя автора,
try {
$sql = 'DELETE FROM author WHERE id = :id';
$s = $pdo->prepare($sql);
$s->bindValue(':id', $_POST['id']);
$s->execute();
} catch (PDOException $e) {
$error = 'Ошибка при удалении автора.';
include 'error.html.php';
exit();
}
header('Location: . ');
exit();
}
if (isset($_GET['add']))
{
$pageTitle = 'Новый автор';
$action = 'addform';
$name = '';
$email = '';
$id = '';
$button = 'Добавить автора';
include 'form.html.php';
exit();}
if (isset($_POST['add']))
{
include_once 'DB.inc.php';
try {
$sql = 'INSERT INTO author SET
name = :name,
email = :email';
$s = $pdo->prepare($sql);
$s->bindValue(':name', $_POST['name']);
$s->bindValue(':email', $_POST['email']);
$s->execute();
}
catch (PDOException $e)
{
$error = 'Ошибка при добавлении автора.';
include 'error.html.php';
exit();}

header('Location: . ');
exit();
}
if (isset($_POST['action'])&&$_POST['action'] == 'Редактировать') {
include_once 'DB.inc.php';
try {
$sql = 'SELECT id, name, email FROM author WHERE id = :id';
$s = $pdo->prepare($sql);
$s->bindValue(':id', $_POST['id']);
$s->execute();
} catch (PDOException $e) {
$error = 'Ошибка при извлечении информации об авторе.';
include 'error.html.php';
exit ();
}
$row = $s->fetch();
$pageTitle = 'Редактировать автора';
$action = 'editform';
$name = $row['name'];
$email = $row['email'];
$id = $row['id'];
$button = 'Обновить информацию об авторе';

include 'form.html.php';
exit();
}
if (isset($_GET['editform']) )
{
include 'DB.inc.php';
try
{
$sql = 'UPDATE author SET
name = :name,
email = :email
WHERE id = :id';
$s = $pdo->prepare($sql);
$s->bindValue('rid', $_POST['id']);
$s->bindValue(':name', $_POST['name']);
$s->bindValue(':email', $_POST['email']);
$s->execute();
}
catch (PDOException $e)
{
$error = 'Ошибка при обновлении записи об авторе.';
include 'error.html.php';
exit();}
header('Location: . ');
exit();}

authors.html.php

<?php include_once 'helper.inc.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="Utf-8">
<title>Управление авторами</title>
</head>
<body>
<h1>Управление авторами</h1>
<p> <a href ="?add">Добавить нового автора</a></p>
<ul>
<?php foreach ($authors as $author): ?>
<li>
<form action="" method="post">
<div>
<?php htmlout ($author['name'])?>
<input type="hidden" name="id" value="<?php
echo $author['id']; ?>">
<input type="submit" name="action" value="Редактировать" onclick="return confirm ('Подтвердите действие')">
<input type="submit" name="action" value="Удалить" onclick="return confirm ('Вы точно хотите удалить автора и все его шутки?')">
</div>
</form>
</li>
<?php endforeach; ?>
</ul>
<p><a href=". . ">Вернуться на главную страницу</a></p>
</body>
</html>

DB.inc.php

<?php
try{
$pdo = new PDO('mysql:host=localhost;dbname=JDB','Studesha',
'************') ;
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');}
catch (PDOException $e){
$error= 'Невозможно подключится к базе данных'.$e->getMessage();
include 'error.html.php';
exit();
}
$error = 'Соединение с базой данных установлено.';
include 'error.html.php';

error.html.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Joke</title>
</head>
<body>
<p><?php echo $error; ?></p>
</body>
</html>

form.html.php
<?php include_once 'helper.inc.php'?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title><?php htmlout($pageTitle); ?></title>
</head>
<body>
<h1><?php htmlout($pageTitle); ?></h1>
<form action="<?php htmlout($action);?>" method="post">
<div>
<label for="name">Имя: <input type="text" name="name"
id="name" value="<?php htmlout($name); ?>"></label>
</div>
<div>
<label for="email">Электронная почта: <input type="text"
name="email"
id="email" value="<?php htmlout($email); ?>"></label>
</div>
<div>
<input type="hidden" name="id" value="<?php
htmlout($id); ?>">
<input type="submit" value="<?php htmlout( $button); ?>">
</div>
</form>
</body>
</html>

helper.inc.php
<?php
function html($text){
return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}
function htmlout ($text){
echo html($text);
}

Помогите пожалуйста, очень хочу понять, где я ошибся.
(Добавление)
Да, забыл упомянуть, код в части удаления данных работает, а вот добавления и редактирования нет.
2. igosja - 11 Июля, 2016 - 09:29:53 - перейти к сообщению
The requested URL was not found on this server. - Это неошибка в php коде. Сервер не может найти нужный url. Сверте адрес папки, в которой лежат файлы с адресом Document Root, который указан в настройках apache/nginx для вашего домена.
3. Studesha - 12 Июля, 2016 - 22:24:20 - перейти к сообщению
igosja пишет:
The requested URL was not found on this server. - Это неошибка в php коде. Сервер не может найти нужный url. Сверте адрес папки, в которой лежат файлы с адресом Document Root, который указан в настройках apache/nginx для вашего домена.



Дело не в этом, меня самого удивляет. Куча операций с БД работает, а эти нет.
4. Studesha - 13 Июля, 2016 - 10:05:55 - перейти к сообщению
Проблема таки в коде была. Нашел ошибку.

 

Powered by ExBB FM 1.0 RC1