从数据库中检索保存的复选框的名称和值 [英] Retrieving saved checkboxes' name and values from database
问题描述
我有一个带有复选框的表单,每个都有一个值.当注册用户选择任何 复选框,该值将递增(求和),然后注册用户保存其
I have a form with checkboxes, each one has a value. When the registered user select any checkbox the value is incremented (the summation) and then then registred user save his
如果他对汇总到数据库中的结果感到满意,则选中该复选框,这一切工作正常 ...我想通过检索并显示他在具有更多值的页面中选择的复选框来使注册用户能够查看其选择历史记录...我该怎么做?
selection of checkbox if he satisfied with the result of summation into database all this work fine ...i want to enable the registred user to view his selection history by retriving and displaying the checkboxes he selected in a page with thier values ... How I can do that?
我只可以将选择的复选框保存为选项1,选项2,例如..
I'm just able to save the selected checkboxes as choice 1, choice 2, for example ..
我想查看用户第一次选择时在页面中显示的数据库中选中的复选框:例如,如果注册用户选择了这三个选项
I want to view the selected checkboxes that is saved in database as the appear in the page when the user first select them: for example if the registred user selects these 3 options
- LEED DEEP KEEL(1825)
- 全副主力(558)
- 柚木甲板(2889)
例如,它们将另存为(choice1,choice2,choice3).
They will be saved as for example (choice1, choice2, choice3).
但是,如果他要查看选定的复选框,则其出现的方式与他首先选择的复选框完全相同:
But if he want to view selected checkboxes the appear exactly as first he selects them:
- LEED DEEP KEEL(1825)
- 全副主力(558)
- 柚木甲板(2889)
这是我的用户表:
$query="CREATE TABLE User(
user_id varchar(20),
password varchar(40),
user_type varchar(20),
firstname varchar(30),
lastname varchar(30),
street varchar(50),
city varchar(50),
county varchar(50),
post_code varchar(10),
country varchar(50),
gender varchar(6),
dob varchar(15),
tel_no varchar(50),
vals varchar(50),
email varchar(50))";
和用于将选择的选项插入数据库的代码
and the code to inser the options selected to database
<?php
include("databaseconnection.php");
$str = '';
foreach($_POST as $key => $val)
if (strpos($key,'choice') !== false)
$str .= $key.',';
$query = "INSERT INTO User (vals) VALUES('$str')";
$result=mysql_query($query,$conn);
if ($result)
{
(mysql_error();
}
else
{
echo " done";
}
?>
这是我的表格:
函数checkTotal(){ document.listForm.total.value =''; var sum = 0; 为(i = 0; i
function checkTotal() { document.listForm.total.value = ''; var sum = 0; for (i=0;i
<form name="listForm" method="post" action="insert_options.php" >
<TABLE cellPadding=3 width=600 border=0>
<TBODY>
<TR>
<TH align=left width="87%" bgColor=#b0b3b4><SPAN
class=whiteText>Item</SPAN></TH>
<TH align=right width="13%" bgColor=#b0b3b4><SPAN
class=whiteText>Select</SPAN></TH></TR>
<TR>
<TD bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>General</B></SPAN></TD></TR>
<TR>
<TD bgcolor="#c4c8ca"><SPAN class=normalText >TEAK SIDE DECKS (2889)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="2889" type="checkbox" onchange="checkTotal()" /></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>LEAD DEEP KEEL (1825)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="1825" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>FULLY BATTENED MAINSAIL (558)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="558" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>HIGH TECH SAILS FOR CONVENTIONAL RIG (1979)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="1979" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>IN MAST REEFING WITH HIGH TECH SAILS (2539)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="2539" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>SPlNNAKER GEAR (POLE LINES DECK FITTINGS) (820)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="820" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>SPINNAKER POLE VERTICAL STOWAGE SYSTEM (214)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="214" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>GAS ROD KICKER (208)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="208" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>SIDE RAIL OPENINGS (BOTH SIDES) (392)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="392" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>SPRING CLEATS MIDSHIPS -ALUMIMIUM (148)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="148" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>ELECTRIC ANCHOR WINDLASS (1189)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="1189" type="checkbox" onchange="checkTotal()"> </TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>ANCHOR CHAIN GALVANISED (50m) (202)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="202" type="checkbox" onchange="checkTotal()"> </TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>ANCHOR CHAIN GALVANISED (50m) (1141)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="1141" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>NAVIGATION & ELECTRONICS</B></SPAN></TD></TR>
<TR>
<TD bgcolor="#c4c8ca"><SPAN class=normalText >WIND VANE (STAINLESS STEEL)(41)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="41" type="checkbox" onchange="checkTotal()" /></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>RAYMARINE ST6O LOG & DEPTH (SEPARATE UNITS)(226)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="226" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>ENGINES & ELECTRICS</B></SPAN></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>SHORE SUPPLY (220V) WITH 3 OUTLETS (EXCLUDJNG SHORE CABLE) (327)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="327" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>3rd BATTERY(14OA/H)(196)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="196" type="checkbox" onchange="checkTotal()"></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>24 AMP BATTERY CHARGER (475)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="475" type="checkbox" onchange="checkTotal()"></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>2 BLADED FOLDING PROPELLER (UPGRADE)(299)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="299" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>BELOW DECKS/DOMESTIC</B></SPAN></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>WARM WATER (FROM ENGINE & 220V)(749)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="749" type="checkbox" onchange="checkTotal()"></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>SHOWER IN AFT HEADS WITH PUMPOUT(446)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="446" type="checkbox" onchange="checkTotal()"></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>DECK SUCTION DISPOSAL FOR HOLDINGTANK(166)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="166" type="checkbox" onchange="checkTotal()"></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>REFRIGERATED COOLBOX (12V)(666)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="666" type="checkbox" onchange="checkTotal()"></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>LFS SAFETY PACKAGE (COCKPIT HARNESS POINTS STAINLESS STEEL JACKSTAYS)(208)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="208" type="checkbox" onchange="checkTotal()"></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>UPHOLSTERY UPGRADE IN SALOON (SUEDETYPE)(701)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="701" type="checkbox" onchange="checkTotal()"></TD></TR>
<TR>
<TD bgcolor="#9da8af"colSpan=2><SPAN class=normalText><B>NAVIGATION ELECTRONICS & ELECTRICS</B></SPAN></TD></TR>
<TD bgColor=#c4c8ca><SPAN class=normalText>VHF RADIO AERIAL CABLED TO NAVIGATION AREA(178)</SPAN></TD>
<TD align=right bgColor=#c4c8ca><input name="choice" value="178" type="checkbox" onchange="checkTotal()"></TD></TR>
</table>
推荐答案
以html格式显示,而不是
In the html form, instead of having
<input type="checkbox" name="choice" value="123">
做:
<input type="checkbox" name="choice[]" value="123">
这将使您可以将选择作为数组使用.
This will make the choices available as an array to you.
然后更改用于将选择内容插入数据库的php代码:
Then change your php code for inserting the choices into the databse to this:
<?php
$str='';
foreach ($_POST['checked'] as $val)
{
$str.=$val.',';
}
$str=substr($str,0,-1);//Remove the final comma from the end
$sql="UPDATE users SET vals='$str' WHERE user_id='$user_id'";
mysql_query($sql) or die(mysql_error());
?>
然后在将选项显示给用户时,执行以下操作:
Then when displaying the choices back to the user, do something like this:
Php:
<?php
$checked=array();
$sql="SELECT vals FROM users WHERE user_id='$user_id'";
$result=mysql_query($sql) or die(mysql_error());
$row=mysql_fetch_assoc($row);
$vals=explode(',',$row['vals']);
foreach ($vals as $val)
{
if ($val !='' && is_numeric($val))
$checked[$val]='checked';
}
function set_checked($value)
{
global $checked;
if (isset($checked[$value]))
return 'checked';
else
return '';
}
?>
在html中:
<input type="checkbox" name="choice[]" value="123" <? echo set_checked('123');?>>
PS.请确保将$ user_id替换为用户的用户ID,或通过其他方式在查询中识别该用户.
PS. make sure you replace $user_id with the user id of the user or another way to identify him in the queries.
这篇关于从数据库中检索保存的复选框的名称和值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!