Wazan
Wazan

Reputation: 539

HTML input value change

I have a PHP update page in which I am showing a text field containing a value from the database. It is like this, and it is working,

<input type="text" name="title" id="title" class="text_box" value="<?php echo $row['title']?>"/>

Now I need to put this updated value back in the database! I have used the code like this, but it's not updating:

$title=$_POST['title'];
$v_id = $_GET['v_id'];
$sql = mysql_query("update vehicles set title = '$title' where v_id = '$v_id'");

In detail... an input field is there. It's showing a value contained in $title (retrieved from the database) and that value is to be edited and updated.

From my side my code is working perfectly without showing any error, but the value that I give $title is giving the same one without any change.

Is there any other way to show a value in an input field without putting in a "value" tag? Two things wants to happen in a single input field!

Upvotes: 3

Views: 44016

Answers (3)

JohnP
JohnP

Reputation: 50019

You'll need to post your form HTML as well.

Unless your form looks like the following, that code won't work

<form method='post' action='page.php?v_id=1'>
   <input type="text" name="title" id="title" class="text_box" value="<?php echo $row['title']?>"/>
</form>

This is because you're using $_GET to get the id field and $_POST to get the value field

EDIT Your edit has muddied the water a bit more. I'm going to assume all you want to do is show a title and let the user update the title

<?php
   if ($_POST) {
        $title = mysql_escape_string($_POST['title']);
        $id    = intval($_GET['v_id']);
        $sql   = "update vehicles set title = '$title' where v_id = '$id'";
        mysql_query($sql) or trigger_error(mysql_error()." ".$sql);
   } 
   if (isset($_GET['v_id'])) {
       $id      = intval($_GET['v_id']);
       $sql     = 'SELECT title FROM vehicles WHERE v_id = ' . $id;
       $rs      = mysql_query($sql) or trigger_error(mysql_error()." ".$sql);
       $row     = mysql_fetch_assoc($rs);
       $title   = htmlspecialchars($row['title']);
   }
?>

<form method='post' action='?v_id=<?php echo $id?>'>
   <input type="text" name="title" id="title" class="text_box" value="<?php echo $title ?>"/>
   <input type='submit' value='update'>
</form>

This should work for you. I haven't error tested obviously, but the idea is sound. You should also add any other input screening you feel necessary.

Upvotes: 4

Your Common Sense
Your Common Sense

Reputation: 157839

is there any other way to showing a value in a input field without putting a "value" tag?

Nope.
That's exactly what value attribute for.
What's wrong with it?

only thing to mention, it should be not <?php echo $row['title']?> but

<?php echo htmlspecialchars($row['title'])?>

Upvotes: 0

Veger
Veger

Reputation: 37906

You are using both $_POST and $_GET. Depending on the method element value of <form>, you need either $_POST or $_GET.

If this is not helping, please show more code so it is possible to determine which one you need.

Also, you can try to update the database without reading the form, to check if the updating itself is working correctly.

Upvotes: 0

Related Questions