0

Hello:

I have a select box which offers the user the option of selecting multiple selections.

I'm a bit lost as to how --if multiple selections are made, to save these selections into mysql.

here is the code of my select box:

<form name="theForm">
<select size=11 name=servicearea id=select multiple onMouseDown="GetCurrentListValues(this);" onchange="FillListValues(this);" style="width:200;">  
  <option value="Air Intake">Air Intake</option>
  <option value="Brake">Brake</option>
  <option value="Clutch">Clutch</option>
  <option value="Cooling System">Cooling System</option>
  <option value="Oil Change">Oil Change</option>
  <option value="Driveshaft & Axle">Driveshaft & Axle</option>
  <option value="Engine Mechanical">Engine Mechanical</option>
  <option value="Exhaust">Exhaust</option>
  <option value="Steering">Steering</option>
  <option value="Suspension">Suspension</option>
  <option value="Transmission">Transmission</option>
  <option value="Other">Other</option>
  </select>
  <br>
  <font face=arial size=1><a href="javascript:SelectAllList(document.theForm.servicearea);" style="color:blue;">select
  all</a> &nbsp;&nbsp;<a href="javascript:DeselectAllList(document.theForm.servicearea);" style="color:blue;">deselect
  all</a></font>
</form>

Any thoughts on this is appreciated!
Mossa

Edited by mbarandao: n/a

2
Contributors
5
Replies
9
Views
6 Years
Discussion Span
Last Post by mbarandao
0

In order to store multiple selections, you can send the data as an array. In your case use the name of the select box as servicearea[] instead of servicearea.

When you use the $servicearea=$_GET['servicearea']; in the PHP code, the $servicearea variable becomes an array with all the selected values. You can then use the to store the required data into your MySQL DB.

A few tips though as to your style of coding. Programming in HTML has its own semantics. Even though the HTML program would work fine if they are not followed, it is always better to follow the Web Standards.

1. Always enclose the attributes in quotes ("").
2. You have not specified if you want a method="post" or method="get" in your form.
3. Specify where the form will take you using the action attribute.
4. The JavaScript in the <a> tag for select/deselect all has a <b></b> in it.

etc. etc. etc.

But anyways, I hope you get your code working because that's more important that Valid markup.

0

Thanks for the replies!

I have managed to get it working, but need a bit of tweaking.
Here is what I have

<?php
//error_reporting(0);
//error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ALL);

$host = "localhost";
$login_name = "-----";
$password = "----";

$link=mysql_connect("$host","$login_name","$password");		
mysql_select_db("shop", $link); 
//or die("Could not find database");
//echo mysql_errno() . ": " . mysql_error(). "\n";

$servicearea= $_POST['servicearea'];
if( is_array($servicearea)){
while (list ($key, $val) = each ($servicearea)) 
{
echo "$val <br>";
$mysql_query=("INSERT servicesrendered SET servicearea='$val'");
$result=mysql_query($mysql_query); 
if(!$result){die("Error: ".mysql_error());
}}}
else{echo "not array";}
?>

my select box:

<form name="theForm" method="post" action="select_multiple_box2.php">
<select size=11 name=servicearea[] id=select multiple onMouseDown="GetCurrentListValues(this);" onchange="FillListValues(this);" style="width:200; height:100">  
  <option value="Air Intake">Air Intake</option>
  <option value="Brake">Brake</option>
  <option value="Clutch">Clutch</option>
  <option value="Cooling System">Cooling System</option>
  <option value="Oil Change">Oil Change</option>
  <option value="Driveshaft & Axle">Driveshaft & Axle</option>
  <option value="Engine Mechanical">Engine Mechanical</option>
  <option value="Exhaust">Exhaust</option>
  <option value="Steering">Steering</option>
  <option value="Suspension">Suspension</option>
  <option value="Transmission">Transmission</option>
  <option value="Other">Other</option>
  </select>
  
  <font face=arial size=1><a href="javascript:SelectAllList(document.theForm.select);" style="color:blue;">select
  all</a> &nbsp;&nbsp;<a href="javascript:DeselectAllList(document.theForm.select);" style="color:blue;">deselect
  all</a></font>
  <input type=submit>
  
</form>

php is inserting the selection into db --with each selection on a separate row. I would like each insert to be inserted in one row --in a text box in mysql. is this doable? if so, I appreciate some help.

Best
Mossa

Edited by mbarandao: n/a

0

This is because you are using "INSERT servicesrendered SET servicearea='$val'" in a while loop, so PHP gets each value individually and puts it into the DB.

To avoid this, create a string with each selection in a CSV (Comma Separated Value) format and then put that string in the DB. Later when you want the data you can easily pull it out from the DB and convert it into an array using PHP's explode command.

Here is how to do it.

$servicearea= $_POST['servicearea'];
$servicearea_str=implode(",",$servicearea);
$mysql_query="INSERT servicesrendered SET servicearea='$servicearea_str'";
$result=mysql_query($mysql_query);

This will put it into the DB in one record with commas.

Edited by sudeepjd: n/a

0

This is because you are using "INSERT servicesrendered SET servicearea='$val'" in a while loop, so PHP gets each value individually and puts it into the DB.

To avoid this, create a string with each selection in a CSV (Comma Separated Value) format and then put that string in the DB. Later when you want the data you can easily pull it out from the DB and convert it into an array using PHP's explode command.

Here is how to do it.

$servicearea= $_POST['servicearea'];
$servicearea_str=implode(",",$servicearea);
$mysql_query="INSERT servicesrendered SET servicearea='$servicearea_str'";
$result=mysql_query($mysql_query);

This will put it into the DB in one record with commas.

Very interesting. I thank you for your thoughts on this. I'm giving it a try now...will advise of the outcome shortly.

Thanks again!
Mossa

0

I got it straighten out. A great thanks to sudeepjd.

Much oblidge!
Mossa

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.