2012-05-02 12 views
0

現在、xml titleの値を配列に格納しようとしていますが、これは今度は休日を保存するために使用されます。私はまだエラーメッセージが表示されず、次の情報を収集するためにvar_dumpを使用しています。私に配列に必要なパラメータが格納されていません

array(7) { [0]=> string(21) "{$currentItem->title}" [1]=> string(21)"{$currentItem->title}" [2]=> string(21) "{$currentItem->title}" [3]=> string(21) "{$currentItem->title}" [4]=> string(21) "{$currentItem->title}" [5]=> string(21) "{$currentItem->title}" [6]=> string(21) "{$currentItem->title}" } :S 

このアレイ側が動作しているが、それはすべての文字列がそうであるように、チェックボックスの値のパラメータの範囲内に設定された情報を保持していないことを示している(RSSフィードの読み込みに関連するいくつかのチェックボックスのがチェックさ) 21? 21は、saveBoxの値の引用符の間の文字数です。 index.phpの

$index = 1; 
    foreach ($allHolidays as $currentItem) 
     { 
      echo '<tr>'; 
      if (isset($_SESSION['login'])) 
       { 
        echo '<td valign="top">'; 
        //echo '<input type="hidden" name="guid$index" value="{$currentItem->guid}">';name="saveBox$index[]" 
        echo '<input type="checkbox" name="saveBox[]" value="{$currentItem->title}">'; 
        echo '</td>'; 
       } 
      echo '<td>'; 
      echo "<p><a href=\"{$currentItem->link}\">{$currentItem->title}</a><br/>"; 
      echo "{$currentItem->description}<br/>"; 
      echo "{$currentItem->pubDate}<br/></p>"; 
      echo '</td>'; 
      echo '</tr>'; 
      $index++; 
     } 

saveProcess.php

<?php 
    header("refresh:555; url='index.php'"); 
    session_start(); 

    echo "Thank you for saving a holiday"; 
    echo '<input type="checkbox" name="saveBox[]" value="'. 
    htmlspecialchars($currentItem->title).'">'; 
    include "top.php"; 
    var_dump($_POST['saveBox']); 

    try 
    { 

     foreach ($_POST['saveBox'] as $savedHoliday) 
     { 
      $user = $_SESSION['login']; 
      $currentSave = $savedHoliday; 
      $save = "channel/item[title=\"$currentSave\"]"; 
      $holidaysXML = simplexml_load_file('holidays.xml'); 
      $savePath = $holidaysXML->xpath($save); 
      foreach($savePath as $currentSavePath) 
        { 
         echo "<p><a href='{$currentSavePath->link}'>{$currentSavePath->title}</a>"."<br\>". 
         "{$currentSavePath->description}"."<br\>". 
         "{$currentSavePath->pubDate}"."<br\></p>"; 

         $insertSave = $db->prepare("INSERT INTO `saved_holidays` (`subscriberID`, `link`, `pubDate`, `title`, `description`) 
         VALUES ('$user', '$currentSavePath->link', '$currentSavePath->pubDate', '$currentSavePath->title', '$currentSavePath->description')"); 

         $insertSave->execute(); 
        } 

     } 
    } 
    catch(PDOException $e) 
     { 
      echo $e->getMessage(); 
     } 
+2

私は今あなたの「質問」を3回読んだことがありませんし、そのことをすることはできません... – stUrb

+0

私は正しい情報がチェックボックスによって保持されていることを確認するために配列をチェックしようとしていましたデータベース内に格納します。チェックボックスは正しい情報を保持していますが、私のデータベースにこの情報を保存することはできません。何が間違っていたのでしょうか。 –

答えて

1

から

セクションでは、構文が間違っsaveBox$index[]を使用しています。あなたは単に入力をsaveBox[]と名付け、インデックスを忘れるべきです。受信側で$_POST['saveBox']と読むと、PHPは自動的に配列を返します。

echo '<input type="checkbox" name="saveBox[]" value="'. 
    htmlspecialchars($currentItem->title).'">'; 

そして:

はあなたにも、あなたがHTMLに埋め込むすべてのデータにhtmlspecialcharsを呼び出す必要があることを忘れないでくださいさておき、あなたは常にコールheader必要として

foreach ($_POST['saveBox'] as $savedHoliday) 

と出力を生成する前にsession_startを入力します。したがって、top.phpが出力を生成する場合は、数行を下に移動する必要があります。

+0

今見てから、お返事ありがとうございます。 –

+0

iv saveBoxとvarに自分のコードを変更しました。アレイをダンプし、正しい情報が保持されているように見えますが、エラーメッセージが表示されない理由が正しく処理されていません。 –

+0

var_dumpは、配列が21文字で渡され、21文字が正確な文字数saveBoxのValueフィールドの間。あなたはXMLパスではなく文字列を保存する理由を知っていますか?ありがとう –

関連する問題