Link to home
Start Free TrialLog in
Avatar of MisterHamper
MisterHamperFlag for Denmark

asked on

Checkboxes for row-insert on my database

Hey I have this code here, that works pretty good. But what I would like is to add some checkboxes that you could click. If you clicked checkbox 2 and 3, it would then add $query = "INSERT INTO added_items (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username')"; into both added_items2 and added_items3
But I can't really seem to figure out how to do that. Its like my mind is completely blank here!
Would it be something like this:

IF checkbox 1 selected $query = "INSERT INTO added_items (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username')";
IF checkbox 2 selected $query = "INSERT INTO added_items (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username')";
IF checkbox 3 selected $query = "INSERT INTO added_items (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username')"; ?

Please help! Thanks ! :)
Avatar of MisterHamper
MisterHamper
Flag of Denmark image

ASKER

This is how my script looks
<?php
if(isset($_POST['add']))
{
include 'config.php';
 
$connection = mysql_connect($server, $dbusername, $dbpassword) or die(mysql_error());
 
$db = mysql_select_db($db_name,$connection) or die(mysql_error());
 
$name = mysql_real_escape_string($_POST['name']);
$quantity = mysql_real_escape_string($_POST['quantity']);
$amount = mysql_real_escape_string($_POST['amount']);
$username = mysql_real_escape_string($_SESSION['user_name']);
 
$query = "INSERT INTO added_items1 (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username')";
mysql_query($query) or die('There was an error. Please try again.');
 
echo "'$name' have been added to your list";
}
else
{
?>
 
<form method="post">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100"><b>Name:</b></td>
<td><input name="name" type="text" id="name" maxlength="40"></td>
</tr>
<tr>
<td width="100"><b>Amount:</b></td>
<td><input name="amount" type="text" id="amount" maxlength="3"></td>
</tr>
<tr>
<td width="100"><b>Quantity:</b></td>
<td><input name="quantity" type="text" id="quantity" maxlength="2"></td>
</tr>
<tr>
<td width="100">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<INPUT TYPE=CHECKBOX NAME="items1">items1<BR>
<INPUT TYPE=CHECKBOX NAME="items2">items2<BR>
<INPUT TYPE=CHECKBOX NAME="items3">items3<BR>
<tr>
<td width="100">&nbsp;</td>
<td><input name="add" type="submit" id="add" value="Add New item"></td>
</tr>
</table>
</form>
<?php
}
?>

Open in new window

Avatar of AlexanderR
That is indeed how its done.
Only one thing that may cause a problem is that with 3 queries like that you should ideally use mysqli_multi_query from mysqli extension.  Having 3 separate queries for each checkbox is straining for the DB.

If you want to stick with old mysql you can run a query every time php detects a selected checkbox:
if(isset($_POST['items1'])){
   $query = " INSERT INTO added_items1 (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
mysql_query($query);
}

if(isset($_POST['items2'])){
   $query = " INSERT INTO added_items2 (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
mysql_query($query);
}

If you want to use better mysqli extension then its cleaner:

$query = '';
if(isset($_POST['items1'])){
   $query .= " INSERT INTO added_items1 (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
}

if(isset($_POST['item2'])){
   $query .= " INSERT INTO added_items2 (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
}

if(isset($_POST['item3'])){
   $query .= " INSERT INTO added_items3 (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
}

mysqli_multi_query($connection, $query);
Thanks alot for that! It seems smart with the better Mysqli extension, so I just tried that.

It gives me this error here though.
SQL server version for the right syntax to use near 'WHERE username=\'Hamper\'' at line 1

It worked fine previously when there was no check-boxes

Maybe I have done something wrong? Could you take a look? Thanks! Else I will just try to go with the original script you posted
<?php
if(isset($_POST['add']))
{
include 'config.php';
 
$connection = mysql_connect($server, $dbusername, $dbpassword) or die(mysql_error());
 
$db = mysql_select_db($db_name,$connection) or die(mysql_error());
 
$name = mysql_real_escape_string($_POST['name']);
$quantity = mysql_real_escape_string($_POST['quantity']);
$amount = mysql_real_escape_string($_POST['amount']);
$username = mysql_real_escape_string($_SESSION['user_name']);
 
$query = '';
if(isset($_POST['items1'])){
   $query .= " INSERT INTO added_breakfast (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
}
 
if(isset($_POST['items2'])){
   $query .= " INSERT INTO added_lunch (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
}
 
if(isset($_POST['items3'])){
   $query .= " INSERT INTO added_brunch (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
}
 
if(isset($_POST['items4'])){
   $query .= " INSERT INTO added_brunch (name, quantity, amount, username) VALUES ('$name', '$quantity', '$amount', '$username');";
}
 
mysqli_multi_query($connection, $query);
 
echo "'$name' have been added to your list";
}
else
{
?>
 
<form method="post">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100"><b>Name:</b></td>
<td><input name="name" type="text" id="name" maxlength="40"></td>
</tr>
<tr>
<td width="100"><b>Kcal:</b></td>
<td><input name="amount" type="text" id="amount" maxlength="3"></td>
</tr>
<tr>
<td width="100"><b>Priority:</b></td>
<td><input name="quantity" type="text" id="quantity" maxlength="2"></td>
</tr>
<tr>
<td width="100">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
</tr>
<td width="100">&nbsp;</td>
<td><INPUT TYPE=CHECKBOX NAME="items1">items1<BR>
<INPUT TYPE=CHECKBOX NAME="items2">items2<BR>
<INPUT TYPE=CHECKBOX NAME="items3">items3<BR>
<INPUT TYPE=CHECKBOX NAME="items4">items4<BR>
<br><input name="add" type="submit" id="add" value="Add New item"></td>
</tr>
</table>
</form>
<?php
}
?>

Open in new window

the rest of the code needs readjusting to fit mysqli extension.  While i do that, could you please provide versions of your php and mysql as well as check that mysqli extension is enabled using phpinfo();
Oh wow, thanks alot :-)

Yeah sure. PHP version is 5.2.9, MySQL is 5.2.9, phpMyAdmin is 2.11.9.4
I couldn't quite see where phpinfo(): would be. I am using BlueHost as my hoster, they have a cPanel.
MySQL is 5.0.75-community-log, I mean
ASKER CERTIFIED SOLUTION
Avatar of AlexanderR
AlexanderR
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
It seems mysqli extension was enabled, because it working ABSOLUTELY WONDERFULLY!

Thanks alot, my good sir!! :-) Have a nice day
Thanks alot!!