2012-03-04 6 views
0

こんにちは、私はテキストエリア内のユーザー入力テキストをつかみようとしていますが、うまくいきません。サーバーからテキスト(ムービーレビュー)を取得していて、ユーザーがそれを更新してからサーバーに返すことができるようにしたいと考えています。誰でも私たちが間違っていることを知っている? エラーが発生することはありません。テキストエリアのデータを取得できません。私たちはかなりphpとhtmlに新しいので、私たちは見落としているいくつかの小さなタイプですと仮定しています。phpのHTMLでテキストエリア内のテキストを取得

更新:ここに完全に入力してください。

http://dl.dropbox.com/u/21443163/Reviews.php

http://dl.dropbox.com/u/21443163/updateReview.php

while($RecordSetMovieRow = odbc_fetch_array($RecordSetMovie)) 
     { 
      echo "<tr>"; 
       $review = $RecordSetMovieRow['Review']; 
       echo "<td align = 'center'>" . $RecordSetMovieRow['FirstName']. $RecordSetMovieRow['LastName'] . "</td>"; 
       echo "<td align = 'center'><textarea name = 'textarea' rows = '5' cols= '40'>" . $review . "</textarea></td>"; 
       $textarea = $_GET['textarea']; 
       $u = $Re[0]; 
       echo "<td><form action = 'updateReview.php?id=".$RecordSetMovieRow['ReviewID']."&review=$textarea' method = 'POST'><input type='submit' value='Update'></form></td>"; 

      echo "</tr>"; 
     } 
     echo "</table>"; 
     odbc_close($Conn); 
+0

どのようなエラーが表示されますか? – sshow

+2

フォーム内にテキストエリアがありませんか? – Robjong

+0

'updateReview.php'の処理部分を投稿することもできます。私はかなりあなたがいくつかの変数とそれらを読んでどこにアップデートを処理するかを混乱させていると確信していますが、私はバックエンドで何が起こっているかを確かめる必要があります。 – prodigitalson

答えて

3

あなたは、この

if(isset($_POST['myForm'])) { 

    $textInfo = mysql_real_escape_string($_POST['textArea']); 

    //move this info in your database 
    mysql_connect("localhost", "root", ""); 
    mysql_select_db("myDb") 

    $query="UPDATE myTable SET userTextInfo='$textInfo' WHERE userId='$userId' "; 
    $result=mysql_query($query); 

} 
を行い、あなたのupdatingScript.phpに

<form action="updatingScript.php" name="myForm" method="POST" > 

    <textarea name="textArea" rows="5" cols="40"><?=$review ?></textarea> 

</form> 

その後method=POST名前/属性を持つ形ですべてを囲むデータベースへのデータの大きなブロックを送信する場合

また、error_reporting(E_ALL);をPHPスクリプトの冒頭に設定すると、何が間違っているかが表示されるため(「エラーは発生していません」)

+2

'error_reporting(E_ALL)'に加えて、 'ini_set( 'display_errors'、1)'を試してみることもできます。 –

+0

真、追加情報+1: – jmishra

+1

"SQL Injection"と言うことができますか? $ _REQUESTの代わりに 'mysql_real_escape_string($ _REQUEST ['textArea']); 'をエスケープしてください。$ _POST' mysql_real_escape_string($ _ POST [' textArea ']); ' – Robjong

3

あなたは(右)とフォームの定義でmethod='POST'を言及したが、(どちらか間違った方法である)$_GET['textarea']をチェックしようとします。私は後者を修正することをお勧めします:URL自体に大きなテキストブロックを送ることは、通常はあまり良くありません。

&review=$textareaも忘れずにお持ちください。 2つの異なる変数でコンテンツを2回送信する必要はありません。 )

+0

まだ少し混乱しています。あなたはあなたの提案で新しいコピーを投稿できますか?また、大規模なテキストブロックをデータベースに送信するためのより良い方法は何ですか?そこでデータを取得して更新する必要があります。 – kingcong3

+0

@ raina77owは、 '$ _GET ['textarea']'と書いたところで、代わりに '$ _POST ['textarea']'と書かれているはずです。使用する変数は、指定したフォームメソッドに対応している必要があります(この場合、POSTを書いています)。 POSTを使用してデータを送信する場合はGET、データを取得する場合はGETを使用することをお勧めします。 –

3

コードから、フォームから適切なデータを得るためのわずかな調整が行われます。クレジットはraina77owになりますが、彼の答えは間違いありません。私はちょうどあなたがいくつかのコードを要求したのを見たので、ここにあります。

また、テキストエリアが内部にあるようなフォームタグが必要です。そうでない場合は、フォームの一部ではなく、データが投稿されません(その編集は以下に含まれます)。

echo '<form action = 'updateReview.php?id=".$RecordSetMovieRow['ReviewID']."' method = 'POST'>'; // Moved this outside of the while - BUT it needs to be BEFORE the <table> tag also! 
echo '<table>'; // If this is not where you want your opening table tag, that's fine - but move the opening FORM tag to BEFORE the opening Table tag 
while($RecordSetMovieRow = odbc_fetch_array($RecordSetMovie)) 
    { 
     echo "<tr>"; 
      $review = $RecordSetMovieRow['Review']; 
      echo "<td align = 'center'>" . $RecordSetMovieRow['FirstName']. $RecordSetMovieRow['LastName'] . "</td>"; 
      echo "<td align = 'center'><textarea name = 'textarea' rows = '5' cols= '40'>" . $review . "</textarea></td>"; 
      $textarea = $_POST['textarea']; // Changed from $_GET["textarea"] because you are using method='post' in form 
      $u = $Re[0]; 
      echo "<td><input type='submit' value='Update'></td>"; 

     echo "</tr>"; 
    } 
    echo "</table>"; 
echo '</form>'; // Moved this to the end of the form, so data from form will get passed 

    odbc_close($Conn); 
関連する問題