У меня есть форма, с помощью которой я пытаюсь отобразить форму с флажками, а затем вставить в базу данных независимо от того, установлены ли эти флажки или нет. Затем при каждом вызове страницы проверяйте значение и добавляйте информацию в html-форму, чтобы отображать флажок как установленный или нет.
Я изменил приведенный ниже пример кода, чтобы сделать его коротким, и мне известно, что я присваиваю проверенное значение значению 'value', которое ничего не будет делать.
Подход
<input type="checkbox" name="notice" value="checked" checked/>
для отображения флажка как отмеченного, хотя и не является действительным html, работает в каждом браузере и основан на примере здесь . Я бы предпочел придерживаться этого подхода.
Теперь я не вижу, что не так с моим кодом.
Первым шагом должно быть получение значений из базы данных, из которых будет извлечена только одна строка, так как article_no является первичным ключом. Если ничего не получено, переменные просто присваиваются "", что приводит к тому, что флажок не проверяется.
Поскольку значение проверено, если оно выбрано, оно должно быть вставлено в базу данных и будет отображаться как проверенное при следующем просмотре страницы.
Теперь, как есть, этот код полностью не работает. firebug не показывает ничего отправляемого или получаемого в консоли, ошибки не записываются ни с помощью php, ни с помощью mysql, ничего не появляется в базе данных, несмотря на поля, и это верно, ошибки mysql не сообщаются ...
В чем проблема?
The code:
<?php
error_reporting(E_ALL);
if (isset($_GET["cmd"]))
$cmd = $_GET["cmd"];
else
if (isset($_POST["cmd"]))
$cmd = $_POST["cmd"];
if (isset($_GET["pk"]))
{ $pk = $_GET["pk"];}
if (isset($_POST["deleted"]))
{ $deleted = $_POST["deleted"];}
if (isset($_POST["notice"]))
{ $notice = $_POST["notice"];}
$con = mysqli_connect("localhost","user","pass", "db");
if (!$con) {
echo "Can't connect to MySQL Server. Errorcode: %s\n". mysqli_connect_error();
exit;
}
$con->set_charset("utf8");
$getformdata = $con->query("select * from TEST where ARTICLE_NO = '$pk'");
$checkDeleted = "";
$checkNotice = "";
while ($row = mysqli_fetch_assoc($getformdata))
{
$checkDeleted = $row['deleted'];
$checkNotice = $row['notice'];
}
if($cmd=="submitinfo"){
$statusQuery = "INSERT INTO TEST VALUES (?, ?, ?)";
if ($statusInfo = $con->prepare($statusQuery)) {
$statusInfo->bind_param("sss", $pk, $deleted, $notice);
$statusInfo->execute();
$statusInfo->close();
} else {
print_r($con->error);
}
}
echo "<form name=\"statusForm\" action=\"x.php\" method=\"post\" enctype=\"multipart/form-data\">
<h1>Editing information for auction: ".$pk."</h1>
Löschung Ebay:
<input type=\"checkbox\" name=\"deleted\" value=\"checked\" ".$checkDeleted." align=\"right\"/>
<br />
Abmahnung:
<input type=\"checkbox\" name=\"notice\" value=\"checked\" ".$checkNotice." align=\"left\"/>
<br />
<input type=\"hidden\" name=\"cmd\" value=\"submitinfo\" />
<input name=\"Submit\" type=\"submit\" value=\"submit\" />
</form>";
В реальной форме / странице у меня есть соответствующая очистка.
Большая проблема в том, что в базу данных ничего не вставляется и ошибок вообще не возвращается!