php form konular

3 Cevap php

Ben onay kutularını bir formu görüntülemek ve daha sonra bu kutuların işaretli olup olmadığını bir veritabanına eklemek çalışıyorum hangi ile bir form var. Ardından, sayfa her çağrıldığında, değerini kontrol ve kontrol ya da değil gibi onay kutusunu görüntülemek için uygun html forma bilgi ekleyecektir.

Ben kısa yapmak için aşağıdaki kod örneği modifiye var, ve ben bir şey yapmayacağım ki, ben 'değer' için işaretli değer atama am farkındayım.

Yaklaşımı

<input type="checkbox" name="notice"  value="checked" checked/>

geçerli değil html, her tarayıcıda çalışır ve örnek dayalı iken, kontrol gibi bir onay kutusu görüntülemek için here. Ben bu yaklaşımı ile sopa tercih ederim.

Şimdi, benim koduyla yanlış olduğunu görmüyorum.

Ilk adımlar article_no birincil anahtar olarak, alınabilir hangi bir satır onil arasında veritabanından değerleri almak için olmalıdır. Hiçbir şey elde edilirse, daha sonra değişkenler sadece onay kutusu işaretli durumda sonuçları, "" atanır.

Değer kontrol edilir gibi seçilirse, bu veritabanına eklenmesi gereken, ve sayfanın bir sonraki görüntüleme üzerine kontrol olarak gösterecektir.

Olduğu gibi Şimdi, bu kod compeltely başarısız olur. kundakçı konsolunda gönderilen veya alınan bir şey görünmüyor, hiçbir hatalara ya php veya mysql ile kaydedilir, hiçbir şey alanlar ve bu doğru olma, yok mysql hatalar raporlanır rağmen veritabanında görünür ...

Sorun nedir?

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>";

Gerçek form / sayfa, ben bir yerde uygun sanitasyon var.

Büyük bir sorun hiçbir şey veritabanına eklenen ediliyor ve hiçbir hataları hiç iade ediliyor olmasıdır!

3 Cevap

O gönderildiği zaman denetlenmeyen onay kutusu form herhangi bir değer katkıda olmadığını hatırlamak önemlidir. Silinen kutusu işaretli olduğunda, hiçbir $ _POST ['silindi'] değeri set var.

Onay kutusu temizlenir eğer gerçekten silinen $ değerini ayarlamak yok gibi akılda ile görünüyor. Böyle bir deyim kullanın.

$deleted = isset($_POST["deleted"]) ? 1: 0;

Yerine 1 ve 0 size (sizin durumda, "" "işaretli" ve) kontrol ve denetlenmeyen devletler için veritabanı tablodan istediğiniz değerleri ne olursa olsun

Paul Dixon'ın cevap olarak aynı çizgide, ben zaman zaman bu yaptık:

<input type="hidden" name="notice" value="not checked" />
<input type="checkbox" name="notice" value="checked" checked="checked" />

Kullanıcı onay unchecks, gizli girişin değeri yerine gönderilen alır. Bu şekilde, $_POST['notice'] her zaman komut gönderilir.

Ben onay kutularını bu şekilde yapılması gerektiğini düşündüm:

<input type="checkbox" name="notice1"  value="value1" checked="checked"/>
<input type="checkbox" name="notice2"  value="value2" checked="checked"/>