2014-09-05 51 views
0

想知道是否有人可以幫助。我通過PHP和MySQL的教程運行,那裏是持有一個笑話數據庫:如何顯示消息,如果沒有結果返回數據庫查詢在PHP

  • 笑話的笑話表
  • 作者在作者表中類別表
  • 分類

我有一個名爲authors.html.php的頁面,其中包含一個作者列表,其中包含添加作者,編輯/刪除作者(每個返回作者姓名旁邊)的選項。我所試圖做的是如果包含作者的數據庫是空的,而不是顯示下面的PHP錯誤:

Notice: Undefined variable: authors in C:\wamp\www\chapter7\admin\authors\authors.html.php on line 22

我想顯示一個漂亮整潔的消息說,沒有找到結果。

我的代碼如下:

<?php 
    include $_SERVER['DOCUMENT_ROOT'] . '/chapter7/includes/db.inc.php'; 
    try { 
      $result = $pdo->query('SELECT id, name FROM author'); 
    } catch (PDOException $e) { 
      $error = 'Error fetching authors from the database!'; 
      include $_SERVER['DOCUMENT_ROOT']. 
          '/chapter7/admin/error.html.php'; 
      exit(); 
    }  

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

    include 'authors.html.php'; 

    if (isset($_POST['action']) and $_POST['action'] == 'Delete') { 
      include $_SERVER['DOCUMENT_ROOT']. 
          '/chapter7/includes/db.inc.php'; 
      //Get jokes belonging to author 
      try { 
       $sql = 'SELECT id FROM joke WHERE authorid = :id'; 
       $s = $pdo->prepare($sql); 
       $s->bindValue(':id', $_POST['id']); 
       $s->execute(); 
      } catch (PDOException $e) { 
       $error ='Error getting list of jokes to delete.'; 
       include $_SERVER['DOCUMENT_ROOT']. 
           '/chapter7/admin/error.html.php'; 
       exit(); 
      } 
      $result = $s->fetchAll(); 
      //Delete joke category entries 
      try { 
       $sql = 'DELETE FROM jokecategory WHERE jokeid =:id'; 
       $s = $pdo->prepare($sql); 
       //For each joke 
       foreach ($result as $row) { 
         $jokeId= $row['id']; 
         $s->bindValue(':id', $jokeId); 
         $s->execute();  
       } 
      } catch (PDOException $e) { 
       $error = 'Error deleting category entries for joke.'; 
       include $_SERVER['DOCUMENT_ROOT']. 
           '/chapter7/admin/error.html.php'; 
       exit(); 
      } 
      //Delete jokes belonging to author 
      try { 
       $sql = 'DELETE FROM joke WHERE authorid = :id'; 
       $s = $pdo->prepare($sql); 
       $s->bindValue(':id', $_POST['id']); 
       $s->execute(); 
      } catch (PDOException $e) { 
       $error = 'Error deleting jokes for author'; 
       include $_SERVER['DOCUMENT_ROOT']. 
           '/chapter7/admin/error.html.php'; 
       exit(); 
      } 
      //Delete the author 
      try { 
       $sql = 'DELETE FROM author WHERE id =:id'; 
       $s = $pdo->prepare($sql); 
       $s->bindValue(':id', $_POST['id']); 
       $s->execute(); 
      } catch (PDOException $e) { 
       $error ='Error deleting author'; 
       include $_SERVER['DOCUMENT_ROOT']. 
          '/chapter7/admin/error.html.php'; 
       exit(); 
      } 
      header('Location: .'); 
      exit(); 
    }  

請注意我非常新的這個和已經嘗試了一些反覆失敗的悲慘,所以任何幫助,甚至只是簡單的指導,將步驟我通過思考圍繞創建這樣的功能將不勝感激。不只是尋找正確的答案,而是想要了解如果任何人都可以提供幫助的背後的想法會很棒。

+0

*「我有一個名爲'authors.html.php'的頁面,其中包含作者列表」* - 並且您正在執行'include'authors.html.php';'?我不明白。對我來說,似乎是一個無盡的循環。 – 2014-09-05 12:34:12

+0

if(sizeof($ result)== 0){// code here no results} else {// foreach ...} – Jack 2014-09-05 12:36:41

+0

你應該遵循一個更好的教程。 – 2014-09-05 12:40:30

回答

0

類似的東西應該工作。我過去曾經使用過它,它已經爲我工作。你將需要調整查詢等到你的數據庫和表格,但它應該沒問題。

$stm = $PdoObj->prepare("SELECT * FROM NEWS_articles"); 
    $stm ->execute(); 
    $results = $stm ->fetchAll(); 

    if($results==null){ 
     echo "<p>No dice, try other criteria</p>"; 
    }else{ 
     foreach($results as $row){ 
      echo $row["articleName"]; 
     } 
    } 
+1

謝謝Minecraftonian,在我的代碼中爲這個片段而來的條款和安排之後,它是一個絕對的夢想。 – user3364149 2014-09-09 13:42:14

+0

非常歡迎,我很高興能夠提供幫助。確保標記這是在遇到相同問題時幫助其他人找到這個答案的答案。 – Minecraftonian 2014-09-09 20:44:37

相關問題