Re: Sending multiple values from a form having same field names.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Eric Butera wrote:
On Fri, Mar 14, 2008 at 6:02 AM, Zoltán Németh <znemeth@xxxxxxxxxxxxxx> wrote:
2008. 03. 14, péntek keltezéssel 14.08-kor Suamya Srivastava ezt írta:

Hi,
 >
 > 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) {
 >
 >          $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>
 > <?php
 >      if ($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 intended
 > solely 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.php



Since 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

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux