2012-01-20 36 views
0

我決定給PHP試一下,然後買了lynda.com的基本培訓教程。 的問題是,我得到這個錯誤:PHP單元化字符串偏移量:0

(!) Notice: Uninitialized string offset: 0 in C:\wamp\www\widget_corp\includes\functions.php on line 147.

試圖比較兩個值時。

任何人都可以幫助我嗎? :)

錯誤導航功能:下面

if($page["id"] == $selectedPage['id']){ 

類content.php:下面

<?php require_once("includes/connection.php"); ?> 
<?php require_once("includes/functions.php");?> 
<?php findSelectedPage(); ?> 
<?php include("includes/header.php");?> 

<table id="structure"> 
     <tr> 
     <td id="navigation"> 
      <?php echo navigation($selSubject, $selectedPage);?> 
      <br/> 
      <a href="new_subject.php">+ Add a new subject</a> 
     </td> 
     <td id="page"> 
      <?php echo checkSubjOrPage();?> 
      <br/> 
      <div id="footer">Copyright 2007, Widget Corp</div> 
     </td> 
     </tr> 
    </table> 
<?php require("includes/footer.php"); ?> 

類function.php:

<?php 
    //This file is the place to store all basic functions. 

    //NB! 
    //function to prevent problems with submitting values, that contains 
    //chars such as: "", '' etc., into the database. 
    function mysql_prep($value){ 
     $magic_quotes_active = get_magic_quotes_gpc; 

     //i.e. php>= v4.3.0 
     $new_enough_php = function_exists("mysql_real_escape_string"); 

     if($new_enough_php){ 
      //undo any magic quotes effects so mysql_real_escape_string can do the work 
      if($magic_quotes_active){ 
       $value = stripslashes($value); 
      } 
      $value = mysql_real_escape_string($value); 
     } else { // before PHP v4.3.0 
      //if magic quotes aren't already on then add slashed manually 
      if(!$magic_quotes_active){ 
       $value = addslashes($value); 
      } 
     } 

     return $value; 
    } 

    function confirm_query($result_set){ 
     if(!$result_set){ 
      die("Database connection failed: " . mysql_error()); 
     } 
    } 

    function getAllSubjects(){ 
     global $connection; 
     $query = "SELECT * 
        FROM subjects 
        ORDER BY position ASC"; 

     $subject_set = mysql_query($query, $connection); 
     confirm_query($subject_set); 

     return $subject_set; 
    } 

    function getPagesForSubject($subject_id){ 
     global $connection; 
     $query = "SELECT * 
        FROM pages 
        WHERE subject_id = {$subject_id} 
        ORDER BY position ASC"; 

     $page_set = mysql_query($query, $connection); 
     confirm_query($page_set); 

     return $page_set; 
    } 

    function get_subject_by_id($subject_id){ 
     global $connection; 
     $query = "SELECT * "; 
     $query .= "FROM subjects "; 
     $query .= "WHERE id=" . $subject_id . " "; 
     $query .= "LIMIT 1"; 

     $result_set = mysql_query($query, $connection); 
     confirm_query($result_set); 

     //REMEMBER: 
     //if no rows are returned, fetch_array will return false. 
     if($subject = mysql_fetch_array($result_set)){ 
      return $subject; 
     } else { 
      return NULL; 
     } 
    } 

    function get_page_by_id($page_id){ 
     global $connection; 
     $query = "SELECT * "; 
     $query .= "FROM pages "; 
     $query .= "WHERE id=" . $page_id . " "; 
     $query .= "LIMIT 1"; 

     $result_set = mysql_query($query, $connection); 
     confirm_query($result_set); 

     //REMEMBER: 
     //if no rows are returned, fetch_array will return false. 
     if($page = mysql_fetch_array($result_set)){ 
      return $page; 
     } else { 
      return NULL; 
     } 
    } 

    function checkSubjOrPage(){ 
     global $selSubject; 
     global $selectedPage; 

     if(!is_null($selSubject)){ 
      return "<h2>" . $selSubject['menu_name'] . "</h2>"; 
     } else if(!is_null($selectedPage)){ 
      return "<h2>" . $selectedPage['menu_name'] . "</h2>" . "<div>" . $selectedPage['content'] . "</div>"; 
     } else { 
      return "<h2>" . "Select a subject or page to edit!" . "</h2>"; 
     } 
    } 

    function findSelectedPage(){ 
     global $selSubject; 
     global $selectedPage; 

     if(isset($_GET['subj'])){ 
      $selSubject = get_subject_by_id($_GET['subj']); 
      $selectedPage = ""; 
     } else if(isset($_GET['page'])){ 
      $selSubject = NULL; 
      $selectedPage = get_page_by_id($_GET['page']); 
     } else { 
      $selectedPage = NULL; 
      $selSubject = NULL; 
     } 
    } 

    function navigation($selSubject, $selectedPage){ 
     $output = "<ul class=\"subjects\">"; 
     //3. Perform our database query 
     $subject_set = getAllSubjects(); 

     while($subject = mysql_fetch_array($subject_set)){ 
      $output .= "<li"; 
      if($subject["id"] == $selSubject['id']){ 
       $output .= " class=\"selected\""; 
      } 
       $output .= "><a href=\"content.php?subj=" . urlencode($subject["id"]) . 
       "\">{$subject["menu_name"]}</a></li>"; 

       $page_set = getPagesForSubject($subject["id"]); 

       $output .= "<ul class=\"pages\">"; 
       while($page = mysql_fetch_array($page_set)){ 
        $output .= "<li"; 
        if($page["id"] == $selectedPage['id']){ 
         $output .= " class=\"selected\""; 
       } 
        $output .= "><a href=\"content.php?page=" . urlencode($page{"id"}) . 
        "\">{$page["menu_name"]}</a></li>"; 
       } 
       $output .= "</ul>"; 
      } 

       $output .= "</ul>"; 

       return $output; 
    } 
    function getPositions(){ 
     $subject_set = getAllSubjects(); 
     $subject_counts = mysql_num_rows($subject_set); 
     $output = "<select name=\"position\">"; 

     //$subject_counts + 1 b/c we are adding a subject. 
     for($count = 1; $count <= $subject_counts +1; $count++){ 
      $output .= "<option value=\"{$count}\">{$count}</option>"; 
     } 

     return $output . " </select>"; 
    } 

?> 
+0

如果我可以提供更多的信息,可以幫助你幫助我請告訴我:) –

+0

,請溫柔,我是PHP的新手:p –

+3

在該行之前,添加'var_dump($ page,$ selectedPage);'以確保它們都是數組,並hav e你想要的鑰匙。 –

回答

1

在這裏你覆蓋$ select edPage爲一個字符串或將其設置爲

function findSelectedPage(){ 
     global $selSubject; 
     global $selectedPage; 

     if(isset($_GET['subj'])){ 
      $selSubject = get_subject_by_id($_GET['subj']); 
      $selectedPage = ""; 
     } else if(isset($_GET['page'])){ 
      $selSubject = NULL; 
      $selectedPage = get_page_by_id($_GET['page']); 
     } else { 
      $selectedPage = NULL; 
      $selSubject = NULL; 
     } 
    } 

這裏,它應該是一個數組:

if($page["id"] == $selectedPage['id']){ 

function findSelectedPage(){ 
    global $selSubject; 
    global $selectedPage; 

    if(isset($_GET['subj'])){ 
     $selSubject = get_subject_by_id($_GET['subj']); 
     $selectedPage = NULL; 
    } else if(isset($_GET['page'])){ 
     $selSubject = NULL; 
     $selectedPage = get_page_by_id($_GET['page']); 
    } else { 
     $selectedPage = NULL; 
     $selSubject = NULL; 
    } 
} 

function navigation($selSubject, $selectedPage){ 
    $output = "<ul class=\"subjects\">"; 
    //3. Perform our database query 
    $subject_set = getAllSubjects(); 

    while($subject = mysql_fetch_array($subject_set)){ 
     $output .= "<li"; 
     if(isset($selSubject['id']) && $subject["id"] == $selSubject['id']){ 
      $output .= " class=\"selected\""; 
     } 
     $output .= "><a href=\"content.php?subj=" . urlencode($subject["id"]) . 
     "\">{$subject["menu_name"]}</a></li>"; 

     $page_set = getPagesForSubject($subject["id"]); 

     $output .= "<ul class=\"pages\">"; 
     while($page = mysql_fetch_array($page_set)){ 
      $output .= "<li"; 
      if(isset($selectedPage['id']) && $page["id"] == $selectedPage['id']){ 
       $output .= " class=\"selected\""; 
     } 
      $output .= "><a href=\"content.php?page=" . urlencode($page{"id"}) . 
      "\">{$page["menu_name"]}</a></li>"; 
     } 
     $output .= "</ul>"; 
    } 

    $output .= "</ul>"; 

    return $output; 
} 
+0

好的,非常感謝你,善良的先生! 那麼,即時通訊新的PHP,所以有人可以幫助我達到解決方案? –

+0

首先我想提一下,這兩個函數** getPagesForSubject **和** getAllSubjects **返回一個result_set和沒有數組..這可能是一個錯誤 – rauschen

+0

我發現如果我只是說if($ page [「id」 ] == $ selectedPage),然後它實際上工作,但我的CSS不適用。這意味着它跳過了if-else語句。我能做些什麼? –

相關問題