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

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

 



On Fri, Mar 14, 2008 at 8:12 PM, Jim Lucas <lists@xxxxxxxxx> wrote:>> 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>
Not really.  Also you aren't escaping your output.

[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