Relax!

$email comes from a text input, and the categories come from checkboxes dynamically 
displayed from 
table column names:

//Get all table column names, dynamically display, and use to accept subscriptions to 
category updates:
$fields = mysql_list_fields("$dbName", "myanet_categories", $connect);
$nocolumns = mysql_num_fields($fields);
for ($i=0; $i<$nocolumns; $i++) {
        $names = mysql_field_name($fields, $i) . "\n";
        $catselect .= "<b>$names </b><input type=\"checkbox\" 
name=\"category[$names]\" value=\"yes\"><br>\n";
        }

I got it to work thus:

//Start off sql
$sql = "INSERT INTO $myanet02 (";
//start display confirmation of subscribed categories
$category_list = "<ul>\n\t";
//loop while categories have been ticked
while(list($key,$val) = each($category)) {
//trim whitespace from the end of $key (inherited from original var declaration of 
'$names' above)
        $sql1 .= rtrim($key) . ",";
        $sql2 = substr($sql1,0,-1). ")"; 
        $sql3 .= "'$email',";
        $sql4 = $sql . $sql2 . " VALUES (" . $sql3;
        //continue display confirmation of subscribed categories
        $category_list .= "<li>$key</li>\n";
        }
$category_list .= "</ul>";
//Remove the last comma from data to be inserted
$sql = substr($sql4,0,-1) . ")";
$query = mysql_query($sql,$connect) or die(mysql_error());      
$confirm = "You have now been subscribed to the following categories: $category_list";
}
}

Thanks v.much for your concern, but it works quite well now!
Cheers.

Russ

On Tue, 23 Oct 2001 11:39:30 -0400 bill <[EMAIL PROTECTED]> wrote:

> Hi Russ,
> 
> It's not clear that you're keeping track of which categories are being checked.
> 
> You name them category[$names]  but you refer to them as $category[$i] where $i is a 
>number.  How will you know what $category[1] refers to?
> 
> Other issues: It's also not clear where the value of $email comes from.  Nor is it 
>clear if you're trying to obtain one row in the database with all subscriptions or 
>whether
> you could have multiple lines for multiple subscriptions.
> 
> Try this
> 
> while (list($key,$val)= each ($HTTP_POST_VARS[category]) ) {
> 
>     $thisname=$key;  // this is the "name" of the checkbox, as in $category[$name]
>     $thisval=$val;   // this is the value, which in every case is "yes"
> 
>     $sql="INSERT INTO $myanet02($thisname) values ($email)";
>     // this will produce a line in the db for each subscription
> 
>     // if you want one line for all subscriptions, remvoe the $sql line above and
>     // uncomment these lines below
>     // to compound the sql and run the query after the while
> 
>     // if ($thefields) $thefields .= ", $thisname"; } else { $thefields = 
>"$thisname"; }
>     // if($thevalues) $thevalues .= ",'$email' " } else { $thevalues = "'$email'"; }
> 
>     $query = mysql_query($sql,$connect) or die(mysql_error());
> 
> } // end while
> 
> // uncomment following lines for single row entry
> // $sql= INSERT INTO $myanet02($thefields) values ($thevalues)";
> // echo $sql;
> // $query = mysql_query($sql,$connect) or die(mysql_error());
> 
> kind regards,
> 
> bill hollett
> 
> Russ Michell wrote:
> 
> > Hi everyone:
> >
> > I've been fiddling with this all day, and well - if it was working you wouldn't be 
>reading this 
> right now! ;-) > My script should take the selections made by users and process them 
>via 
> straightforward MySQL inserts: >
> > //Get all table column names, dynamically display them as checkboxes. Use to 
>process 
> subscriptions: > $fields = mysql_list_fields("$dbName", "myanet_categories", 
>$connect);
> > $columns = mysql_num_fields($fields); > for ($i=0; $i<$columns; $i++) {
> >         $names = mysql_field_name($fields, $i) . "\n"; >         $catselect .= 
>"<b>$names 
> </b><input type=\"checkbox\" name=\"category[$names]\" value=\"yes\"><br>\n"; >      
>   }
> > > //If submit button selected, process those ticked checkbox categories:
> > if(isset($submit)) { >         //loop while categories have been ticked
> >         for($i=0;$i<count($category);$i++) { >                 
>if($HTTP_POST_VARS["category{$i}"] 
> == 'yes') { //Not sure about this bit... >                         $sql = "INSERT 
>INTO $myanet02 
> (staffdev,strategies,rules,news,information,policies) 
> VALUES('$email','$email','$email','$email','$email','$email')"; >                    
>     //$query 
> = mysql_query($sql,$connect) or die(mysql_error()); >                         echo 
>$sql;
> >                         } >                 }
> >         } >
> > At the moment not even echoing my $sql works. I know this aint gonna work as it 
>is, because what 
> I really need to know is: >
> > * How do I insert into only those categories that have been checked? (default is 
>'null' in a 
> VARCHAR(50) field) > * How do I only declare '$email' a single time as this is the 
>only value being 
> inserted? >
> > Many thanks: > Russ
> > > #-------------------------------------------------------#
> > >   "Believe nothing - consider everything"
> > >   Russ Michell
> >   Anglia Polytechnic University Webteam >   Room 1C 'The Eastings' East Road, 
>Cambridge
> > >   e: [EMAIL PROTECTED]
> >   w: www.apu.ac.uk/webteam >
> >   www.theruss.com >
> > #-------------------------------------------------------#
> 
> 
> -- 
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail: [EMAIL PROTECTED]
> 

#-------------------------------------------------------#
                                
  "Believe nothing - consider everything"       
  
  Russ Michell
  Anglia Polytechnic University Webteam
  Room 1C 'The Eastings' East Road, Cambridge
  
  e: [EMAIL PROTECTED]
  w: www.apu.ac.uk/webteam

  www.theruss.com
                        
#-------------------------------------------------------#


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to