On 10-Jun-2003 Jean-Christian Imbeault wrote:
> [reply to a personal email posted here for the benefit of all :)]
> 

<snip> 

>  > This bugs me because my db has 125 fields and it will be a very long 
> sql string!
> 
> I bet!
> 
>  > The form page generates form contents by using a while loop.
>  >
>  > How would you build the sql string from the form page?
> 
> Use a while loop ;) Name the GET or POST vars the same as the field 
> names in the DB. Then you could use something like (I say like b/c this 
> won't work, it's just an idea):
> 
> $sql = "update table A SET ";
> while (list($fieldName, $value) == each($_POST)) {
>    $sql .= " $fieldName='$value', ";
> }
> 
> This won't work because there will be POST values passes in that are not 
> part of your form data. Oh, and there will be a trailing "," you need to 
> trim off ...
> 
> Just a quick idea.

You can make it a little smarter:

//refetch the old row ...

$qry="SELECT * FROM tbl WHERE id=" .$_POST['id'];
$r=mysql_query($qry);
$row=mysql_fetch_array($r);

unset($chgflds);
foreach($row as $fld => $val) {
   if (isset($_POST[$fld]) && ($_POST[$fld] != $val)) {
      $chgflds[] = "$fld='" .$_POST[$fld] ."'";
   }
}

$update='UPDATE tbl SET ' .implode(', ', $chgflds) 
.'WHERE id=' .$_POST['id'];
 
mysql_query($update);


Regards,
-- 
Don Read                                       [EMAIL PROTECTED]
-- It's always darkest before the dawn. So if you are going to 
   steal the neighbor's newspaper, that's the time to do it.

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

Reply via email to