У меня есть форма с флажками, у каждого есть значение. Когда зарегистрированный пользователь выбирает любой чекбокс значение увеличивается (суммирование), а затем зарегистрированный пользователь сохраняет свои
установка флажка, если его устраивает результат суммирования в базу данных, все это работает нормально ... я хочу, чтобы зарегистрированный пользователь мог просматривать свою историю выбора, извлекая и отображая флажки, которые он выбрал на странице с их значениями ... Как я могу это сделать?
Я просто могу сохранить выбранные флажки как вариант 1, вариант 2, например ..
Я хочу просмотреть выбранные флажки, которые сохранены в базе данных, как они отображаются на странице, когда пользователь впервые их выбирает: например, если зарегистрированный пользователь выбирает эти 3 параметра
Они будут сохранены, например, как (выбор1, выбор2, выбор3).
Но если он хочет просмотреть выбранные флажки, они появятся в точности так, как он их выбрал первым:
Это моя таблица пользователей:
$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))";
и код для вставки выбранных опций в базу данных
<?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";
}
?>
А это моя форма:
function checkTotal () { document.listForm.total.value = ''; var sum = 0; для (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>






Для сохранения настроек в базе данных необходимо использовать UPDATE, а не INSERT. Сначала вы должны знать user_id. Затем вам нужно будет ввести такой запрос:
$query = "update User set val = '" . mysql_real_escape_string($str)
. "' where user_id = $user_id";
Вы можете использовать функцию PHP взорваться, чтобы получить массив значений из вашей строки.
$values = explode(',', $val);
В html-форме вместо
<input type = "checkbox" name = "choice" value = "123">
Делать:
<input type = "checkbox" name = "choice[]" value = "123">
Это сделает выбор доступным для вас в виде массива.
Затем измените свой php-код для вставки вариантов в базу данных на это:
<?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());
?>
Затем, отображая варианты выбора обратно пользователю, сделайте что-то вроде этого:
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 на идентификатор пользователя или другой способ идентифицировать его в запросах.