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]