2012-01-20 11 views
0

PHPを試してみることにしました。その後、lynda.comの必須トレーニングチュートリアルを購入しました。 問題は、私はこのエラーを取得することを、次のとおりです。PHPのユニット化された文字列オフセット:0

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

2つの値を比較しようとしています。

誰でも手伝ってもらえますか?ナビゲーション機能で:)

エラー:

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

、あなたが助けに役立つかもしれません私は、plsは私に知らせる:) –

+0

とplsは穏やかな、私は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

最初に私は2つの関数** getPagesForSubject **と** getAllSubjects **はresult_setと配列なしを返します。これはエラーかもしれません – rauschen

+0

私がif($ page ["id" ] == $ selectedPage)代わりに、それは実際に動作しますが、私のCSSは適用されません。つまり、if-elseステートメントにジャンプします。それについて私は何ができますか? –

関連する問題