Вставьте 0 или 1 в MySQL на основе значения флажка

Я хотел бы вставить "0" или "1" в базу данных mysql, используя флажок php. Однако он не может изменять или вставлять в базу данных mysql.

Мое кодирование edit.php :

 <?php switch($_GET['action']) { case "Modify": /*************************** case "modify" **********************/ $colname_RsStaff = "1"; if (isset($_GET['staffid'])) { $colname_RsStaff = (get_magic_quotes_gpc()) ? $_GET['staffid'] : addslashes($_GET['staffid']); } mysql_select_db($database_conn, $conn); $query_RsStaff = "SELECT * FROM `tbl_staff` WHERE `tbl_staff`.`staffid` = '".$_GET['staffid']."'"; $RsStaff = mysql_query($query_RsStaff, $conn) or die(mysql_error()); $row_RsStaff = mysql_fetch_assoc($RsStaff); $totalRows_RsStaff = mysql_num_rows($RsStaff); $subagent = $row_RsStaff['subagent']; $subum = $row_RsStaff['subum']; $subssm = $row_RsStaff['subssm']; $subtutor = $row_RsStaff['subtutor']; break; /* ****************Add**************** */ default: $subagent = ""; $subum = ""; $subssm = ""; $subtutor = ""; break; } ?> <form name="staff" method="post" onsubmit="return validateForm()" action="commit.php?action=<?php echo $_GET['action'] ?>"> <tr> <td height="12" align="right" bgcolor="#CCCCCC"><h5>&nbsp;</h5></td> <td height="12" align="left" bgcolor="#dfdfdf">&nbsp;<input type="checkbox" name="subagent[]" value="<?php echo $subagent; ?>" />&nbsp;Agent&nbsp;<input type="checkbox" name="subum[]" value="<?php echo $subum; ?>" />&nbsp;UM&nbsp;</td> <td rowspan="2" align="left" bgcolor="#dfdfdf"> <h6>&nbsp;* Selected one or more</h6></td> </tr> <tr> <td height="12" align="right" bgcolor="#CCCCCC"><h5>&nbsp;</h5></td> <td height="12" align="left" bgcolor="#dfdfdf">&nbsp;<input type="checkbox" name="subssm[]" value="<?php echo $subssm; ?>" />&nbsp;SSM&nbsp;&nbsp; <input type="checkbox" name="subtutor[]" value="<?php echo $subtutor; ?>" />&nbsp;Tutor&nbsp;</td> </tr> <input type="submit" name="Submit" value="<?php echo $_GET['action'] ?>" /> 

Проводка в commit.php

  $editFormAction = $_SERVER['PHP_SELF']; if (isset($_SERVER['QUERY_STRING'])) { $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); } switch ($_GET['action']) { case "Create": $staffid = $_POST['staffid']; mysql_select_db($database_conn, $conn); $result ="SELECT * FROM tbl_staff WHERE staffid = '".$_POST['staffid']."'"; $Staff = mysql_query($result, $conn) or die(mysql_error()); $totalRows_Staff = mysql_num_rows($Staff); $insertSQL = sprintf("INSERT INTO tbl_staff (subagent, subum, subssm, subtutor) VALUES (%s, %s, %s, %s)", GetSQLValueString($_POST['subagent'], "text"), GetSQLValueString($_POST['subum'], "text"), GetSQLValueString($_POST['subssm'], "text"), GetSQLValueString($_POST['subtutor'], "text"), mysql_select_db($database_conn, $conn); $Result1 = mysql_query($insertSQL, $conn) or die(mysql_error()); } $insertGoTo = "tr_staff.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } header(sprintf("Location: %s", $insertGoTo)); } break; /************************* update *************************/ case "Modify": $updateSQL = sprintf("UPDATE tbl_staff SET subagent=%s, subum=%s, subssm=%s, subtutor=%s WHERE staffid=%s", GetSQLValueString($_POST['subagent'], "text"), GetSQLValueString($_POST['subum'], "text"), GetSQLValueString($_POST['subssm'], "text"), GetSQLValueString($_POST['subtutor'], "text"), GetSQLValueString($_POST['staffid'], "int")); mysql_select_db($database_conn, $conn); $Result1 = mysql_query($updateSQL, $conn) or die(mysql_error()); $insertGoTo = "tr_staff.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } header(sprintf("Location: %s", $insertGoTo)); //} break; } ?> 

Любые советы будут оценены по достоинству.

Попробуйте код, как показано ниже.

ошибки

  • Сначала вы использовали метод POST в форме и получаете переменную, используя GET
  • Вы можете попробовать, как показано ниже, чтобы получить значение флажка

    if ($subssm) { <input type='checkbox' name='subssm[]' value='1' /> }else{ <input type='checkbox' name='subssm[]' value='0' /> }

    * PHP *

  <form name="staff" method="get" onsubmit="return validateForm()" action="commit.php?action=<?php echo $_GET['action'] ?>"> <tr> <td height="12" align="right" bgcolor="#CCCCCC"><h5>&nbsp;</h5></td> <td height="12" align="left" bgcolor="#dfdfdf">&nbsp;<input type="checkbox" name="subagent[]" value="<?php echo $subagent; ?>" />&nbsp;Agent&nbsp;<input type="checkbox" name="subum[]" value="<?php echo $subum; ?>" />&nbsp;UM&nbsp;</td> <td rowspan="2" align="left" bgcolor="#dfdfdf"> <h6>&nbsp;* Selected one or more</h6></td> </tr> <tr> <td height="12" align="right" bgcolor="#CCCCCC"><h5>&nbsp;</h5></td> <td height="12" align="left" bgcolor="#dfdfdf">&nbsp; <?php if ($subssm) { <input type='checkbox' name='subssm[]' value='1' /> }else{ <input type='checkbox' name='subssm[]' value='0' /> } ?> &nbsp;SSM&nbsp;&nbsp; <input type="checkbox" name="subtutor[]" value="<?php echo $subtutor; ?>" />&nbsp;Tutor&nbsp;</td> </tr> <input type="submit" name="Submit" value="<?php echo $_GET['action'] ?>" /> 

Вот небольшой трюк: при работе с флажками просто добавьте скрытое поле перед этим флажком:

 <input type="hidden" name="checkbox" value="0" /> <input type="checkbox" name="checkbox" value="1" /> 

Затем вы можете получить доступ к значению с помощью

 <?php $checkboxValue = (isset($_POST['checkbox'])) ? intval($_POST['checkbox']) : 0; // returns 0 or 1 ?> 

и вы сохраняете некоторые строки кода.

В вашем коде я бы заменил

 <input type="checkbox" name="subssm[]" value="<?php echo $subssm; ?>" /> 

с

 <input type="hidden" name="subssm" value="0" /> <input type="checkbox" name="subssm" <?php if($subssm == "1") echo "checked='checked'"; ?> value="1" />