Re: Sending multiple values from a form having same field names.
| From: | Jim Lucas | Date: | Sat, 15 Mar 2008 00:12:38 +0000 |
| Subject: | Re: Sending multiple values from a form having same field names. | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-271629@lists.php.net to get a copy of this message | ||
Eric Butera wrote:
On Fri, Mar 14, 2008 at 6:02 AM, Zoltán Németh <znemeth@alterationx.hu> wrote:2008. 03. 14, péntek keltezéssel 14.08-kor Suamya Srivastava ezt írta:How can I send multiple values from a form to be stored in a database, as name of the fields is the same? For example: <?php foreach ($field_data as $field) {Hi,$field_name=$field["field_name"]; $field_id=$field["field_id"]; $datatype=$field["datatype_name"];?> <input type="hidden" name="field_id" value="<?php echo $field_id;?>" /> <tr> <td><strong><?php echo $field_name;?><strong></td> <?phpif ($datatype=="text" || $datatype=="integer") { echo "<td><input type=\"text\" name=\"field_data\"></td>";make field_data an array indexed by field_id <input type="text" name="field_data[<?php echo $field_id; ?>]" greets, Zoltán Németh
}
elseif ($datatype=="textarea") {
echo "<td><textarea rows=\"10\" cols=\"100\"
name=\"field_data\"></textarea><br></td>";
}
echo "</tr>";
}
?>
This creates a form with field names and text box or textarea box next to
each field name depending on the datatype. After the user enters the
values in the text or textarea and clicks submit, the values should get
stored in a database. But what is happening is that only the value entered
in the last field of the form is getting entered into the database.
This code is embedded in an application which is having an inbuilt
structure of taking the values from a form in a hash. Since key is the
same (i.e. field_id) everytime, the value gets overwritten and only the
last value gets stored in db. But I am not able to work out a solution for
this.
I hope I am able to make my problem clear enough.
Thanks,
Suamya.
-----------------------------------------------------------------------------
DISCLAIMER:-
"The information in this e-mail is confidential, and is intendedsolely for the addressee or addressees. If you are not the intended recipient, please delete the mail and kindly notify the sender of misdelivery. Any unauthorised use or disclosure of the contents of the mail is not permitted and may be unlawful." -----------------------------------------------------------------------------
"Scanned By MailScanner"
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpSince Zoltán give you the answer I might give you another fish. Which one is more readable: <input type="hidden" name="field_id" value="<?php echo $field_id;?>" /> <tr> <td><strong><?php echo $field_name;?><strong></td> <?php
if ($datatype=="text" || $datatype=="integer") {
echo "<td><input type=\"text\" name=\"field_data\"></td>";
}
elseif ($datatype=="textarea") {
echo "<td><textarea rows=\"10\" cols=\"100\"
name=\"field_data\"></textarea><br></td>";
}
echo "</tr>";
}
?>
<input type="hidden" name="field_id" value="<?php echo
htmlspecialchars($field_id); ?>" />
<tr>
<td><strong><?php echo htmlspecialchars($field_name); ?><strong></td>
<?php if ($datatype=="text" || $datatype=="integer"): ?>
<td><input type="text" name="field_data"></td>
<?php elseif ($datatype=="textarea"): ?><td> <textarea rows="10" cols="100" name="field_data"></textarea> <br> </td>
<?php endif; ?></tr> This is more readable <?php while ( $row = mysql_fetch_row($result_set) ) { # Extract all data fields from result set list($datatype,$field_id,$field_name,etc...) = $row; # Initialize or clear variable $field = ''; # Check to see if it requires a text field if ( $datatype == "text" || $datatype == "integer" ) {
# Create Text field
$field = '<input type="text" name="field_data[{$field_id}]" />';
# Check to see if it requires a text area
} elseif ( $datatype == "textarea" ) {
# Create Text Area
$field = '<textarea rows="10" cols="100" name="field_data[{$field_id}]">'.
'</textarea>';
}
# Display it all
echo <<<ROW
<tr>
<td><strong>{$field_name}</strong></td>
<td>{$field}</td>
</tr>
ROW;
}
?>
--
Jim Lucas
"Some men are born to greatness, some achieve greatness,
and some have greatness thrust upon them."
Twelfth Night, Act II, Scene V
by William Shakespeare