Неопределенная переменная PHP, когда я пытаюсь извлечь данные из базы данных

#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 или определить глобальную переменную $ jokes

5. index.php включает jokes.html.php . Не рекомендуется создавать переменную в родительском файле и использовать ее во включенном скрипте, но это допустимо.