kingcong3
kingcong3

Reputation: 193

Grabbing the text within text area with php html

Hey so I am trying to grab the user input text within a textarea but it is not working out too well. What is happening is that we are grabbing a text (movie review) from our server and we want the user to be able to update it and then send it back to the server. Anyone know what we are doing wrong?? We arent getting any error, it just that we are unable to grab the textarea field data. We are pretty new to php and html so I am assume it is some small typeo we are overlooking.

UPDATE: Full fills here.

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);

Upvotes: 0

Views: 961

Answers (3)

jmishra
jmishra

Reputation: 2081

If you want to send large blocks of data to the database then enclose everything in a form with the method=POST name/attribute

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

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

</form>

Then in your updatingScript.php do this

 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);

}

Also set error_reporting(E_ALL); at the beginning of your PHP script as this will display what went wrong (in response to your "we aren't getting any errors")

Upvotes: 3

random_user_name
random_user_name

Reputation: 26160

Your code, with just a few minor tweaks to make it get the proper data from the form. The credit goes to raina77ow, though - his answer is absolutely correct. I just saw that you requested some code, so here it is.

Also, you need to have the form tags such that the textarea is WITHIN them, otherwise it is not part of the form, and it's data does not get posted (that edit is included below).

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);

Upvotes: 3

raina77ow
raina77ow

Reputation: 106385

You mention method='POST' in your form definition (which is right), but attempt to check $_GET['textarea'] (which is wrong either way). I'd suggest fixing the latter: sending large blocks of text in URL itself is usually not great.

Don't forget to get rid of the &review=$textarea as well; no need to send the content twice, in two different variables. )

Upvotes: 3

Related Questions