On Fri, Mar 14, 2008 at 8:12 PM, Jim Lucas <[EMAIL PROTECTED]> wrote:
>
> Eric Butera wrote:
>  > On Fri, Mar 14, 2008 at 6:02 AM, Zoltán Németh <[EMAIL PROTECTED]> 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.

Reply via email to