#php #html #mysql
#php #HTML #mysql
Вопрос:
Итак, у меня возникли эти проблемы, когда я попытался извлечь данные из базы данных. Мое подключение к БД работает нормально. Он показывает «Установлено соединение с базой данных» и внутри моего index.php Я написал для каждого цикла, чтобы получить данные, и внутри моего HTML-кода я отображаю их внутри таблицы. Я получил эти ошибки:
Notice: Undefined variable: jokes in C:xampphtdocscomp1321_databasejokesjokes.html.php on line 16
Warning: Invalid argument supplied for foreach() in C:xampphtdocscomp1321_databasejokesjokes.html.php on line 16
Вот HTML и php-код для отображения данных:
<?php include_once 'admin/includes/helpers.inc.php';?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>List of Jokes</title>
</head>
<body>
<p><a href ="/comp1321_database/jokes/form.html.php/">Add your own joke</a></p>
<p>Here are all the jokes in the database</p>
<!-- into a table -->
<table border="1">
<?php foreach ($jokes as $joke): ?>
<!-- <form action="?deletejoke" method="post"> -->
<tr>
<td><?php html($joke['joketext']);?></td>
<td><?php $display_date = date("D d M Y", strtotime($joke['jokedate']));
html($display_date); ?>
</td>
<td><img height="100px" src="images/<?php html($joke['image']);?>"
/></td>
<td><input type="hidden" name="id" value="<?php echo $joke['id'];
?>">
<input type="submit" value="Delete"></td>
</tr>
<!-- </form> -->
<?php endforeach; ?>
</table>
<?php include 'admin/includes/footer.inc.html.php';?>
</body>
</html>
и вот index.php:
<?php
// selection block
include 'admin/includes/db.inc.php';
//
try
{
$sql = 'SELECT * FROM joke';
$result = $pdo->query($sql);
} catch (PDOException $e) {
$error = 'Error fetching jokes' . $e->getMessage();
include 'error.html.php';
exit();
}
foreach ($result as $row) {
$jokes[] = array(
'joketext'=> $row ['joketext'],
'jokedate'=> $row['joketext'],
'image'=> $row['image']
);
}
include 'jokes.html.php';
?>
Большое спасибо.
Ответ №1:
Инициализируйте свою переменную jokes, прежде чем пытаться ее использовать, т.Е.:
$jokes = [];
try
{
$sql = 'SELECT * FROM joke';
$result = $pdo->query($sql);
} catch (PDOException $e) {
$error = 'Error fetching jokes' . $e->getMessage();
include 'error.html.php';
exit();
}
foreach ($result as $row) {
$jokes[] = array(
'joketext'=> $row ['joketext'],
'jokedate'=> $row['joketext'],
'image'=> $row['image']
);
}
Ответ №2:
Вам нужно определить $jokes
в вашем php-файле, вы можете сделать это в заголовке файла.
<?php include_once 'admin/includes/helpers.inc.php';?>
<?php
$jokes = someGetJokesFunction(); // write function to get data from database
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>List of Jokes</title>
</head>
<body>
<p><a href ="/comp1321_database/jokes/form.html.php/">Add your own joke</a></p>
<p>Here are all the jokes in the database</p>
<!-- into a table -->
<table border="1">
<?php foreach ($jokes as $joke): ?>
<!-- <form action="?deletejoke" method="post"> -->
<tr>
<td><?php html($joke['joketext']);?></td>
<td><?php $display_date = date("D d M Y", strtotime($joke['jokedate']));
html($display_date); ?>
</td>
<td><img height="100px" src="images/<?php html($joke['image']);?>"
/></td>
<td><input type="hidden" name="id" value="<?php echo $joke['id'];
?>">
<input type="submit" value="Delete"></td>
</tr>
<!-- </form> -->
<?php endforeach; ?>
</table>
<?php include 'admin/includes/footer.inc.html.php';?>
</body>
</html>
Комментарии:
1. Я знаю его псевдокод, но, возможно, инициализирую его,
$jokes = someGetJokesFunction();
чтобы в примере не было синтаксической ошибки?2. О, спасибо, я только хочу объяснить ему, чтобы он знал, что делать.
3. Я обновил код, если вы, пожалуйста, проверьте его.
4. Вы определяете $ jokes на ` index.php `но вы вызываете его
jokes.html.php
, вы должны переместить весь кодindex.php
вjokes.html.php
или определить глобальную переменную $ jokes5.
index.php
включаетjokes.html.php
. Не рекомендуется создавать переменную в родительском файле и использовать ее во включенном скрипте, но это допустимо.