2009-05-22 6 views
0

私は、チェックボックスが付いたフォームを表示する必要があるページを持っています。チェックされていればポストバックし、データベースに結果を格納してから、チェックし、必要に応じてチェックを外してください。mysqlとphpを使って問題をmaintiaingフォーム状態

フローティングの「チェック済み」は理想的ではありませんが、問題なく動作します。

私が抱えている問題は、レコードがデータベースに正しく挿入されているうちに、ページの再読み込み時にチェックされず、レコードを正しく更新していないことです。私は原因がどこにあるか確認されることなく、可能な限りこれをトリムダウンしている

<?php 
error_reporting(E_ALL); 
if (isset($_GET["cmd"])) 
    $cmd = $_GET["cmd"]; else 
if (isset($_POST["cmd"])) 
    $cmd = $_POST["cmd"]; else 
die("Invalid URL"); 
if (isset($_GET["pk"])) { 
    $pk = $_GET["pk"]; 
} 
$checkDeleted = ""; 
$checkNotice = ""; 
$checkWarrant = ""; 
$checkPromise = ""; 
$checkCompensation = ""; 
$checkBond = ""; 
$checkInjunction = ""; 
$checkActionpay = ""; 
$checkActionorder = ""; 
$checkCourtpayment = ""; 
$checkForeclosure = ""; 
$checkPenalty = ""; 
$checkboxes = $_POST['checkboxes']; 
if (in_array('deleted', $checkboxes)) 
    $checkDeleted = 'checked'; 
$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 ARTICLE_NO, deleted from STATUS where ARTICLE_NO = '$pk'"); 
while ($row = mysqli_fetch_assoc($getformdata)) { 
    $ARTICLE_NO = $row['ARTICLE_NO']; 
    $checkDeleted = $row['deleted']; 
} 
if($cmd=="submitinfo") { 
    if ($ARTICLE_NO == null) { 
     $statusQuery = "INSERT INTO STATUS VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
     if ($statusInfo = $con->prepare($statusQuery)) { 
      $statusInfo->bind_param("sssssssssssss", $pk, $checkDeleted, $checkNotice, $checkWarrant, $checkPromise, $checkCompensation, $checkBond, $checkInjunction, $checkActionpay, $checkActionorder, $checkCourtpayment, $checkForeclosure, $checkPenalty); 
      $statusInfo->execute(); 
      $statusInfo->close(); 
      echo $pk; 
      echo $checkDeleted; 
     } else { 
      print_r($con->error); 
     } 
    } else if ($ARTICLE_NO == $pk) { 
     $statusQuery = "UPDATE STATUS SET deleted = ?, notice = ?, warrant = ?, promise = ?, compensation = ?, bond = ?, injunction = ?, actionpay = ?, actionorder = ?, courtpayment = ?, foreclosure = ?,penalty = ? WHERE ARTICLE_NO = ?"; 
     if ($statusInfo = $con->prepare($statusQuery)) { 
      $statusInfo->bind_param("sssssssssssss", $checkDeleted, $checkNotice, $checkWarrant, $checkPromise, $checkCompensation, $checkBond, $checkInjunction, $checkActionpay, $checkActionorder, $checkCourtpayment, $checkForeclosure, $checkPenalty, $pk); 
      $statusInfo->execute(); 
      $statusInfo->close(); 
     } else { 
      print_r($con->error); 
     } 
    } 
} 
if($cmd=="EditStatusData") { 
    echo '<link rel="stylesheet" href="style.css" type="text/css" />' . "\n"; 
    echo "<form name=\"statusForm\" action=\"test.php?pk=".$pk."\" method=\"post\" enctype=\"multipart/form-data\"> 
<h1>Editing information for Auction No: ".$pk."</h1> 
<input type=\"checkbox\" name=\"checkboxes[]\" value=\"deleted\" ".$checkDeleted." /> 
<label for=\"deleted\">Löschung Ebay</label> 
<br /> 
<input type=\"hidden\" name=\"cmd\" value=\"submitinfo\" /> 
<input name=\"Submit\" type=\"submit\" value=\"submit\" /> 
</form>"; 
} 

は、ここに私のコードです。私はあなたの問題を解決すると思い

$checkboxes = (isset($_POST['checkboxes'])? $_POST['checkboxes'] : array());

で右

$checkboxes = $_POST['checkboxes'];

を交換するあなたの質問を理解している場合

答えて

0

<?php 
error_reporting(E_ALL); 

if (isset($_GET["cmd"])) 
    $cmd = $_GET["cmd"]; 
    else 
if (isset($_POST["cmd"])) 
    $cmd = $_POST["cmd"]; 
     else die("Invalid URL"); 

if (isset($_GET["pk"])) { $pk = $_GET["pk"]; } 

$checkDeleted = ""; 
$checkNotice = ""; 
$checkWarrant = ""; 
$checkPromise = ""; 
$checkCompensation = ""; 
$checkBond = ""; 
$checkInjunction = ""; 
$checkActionpay = ""; 
$checkActionorder = ""; 
$checkCourtpayment = ""; 
$checkForeclosure = ""; 
$checkPenalty = ""; 

$checkboxes = (isset($_POST['checkboxes'])? $_POST['checkboxes'] : array()); 

if (in_array('deleted', $checkboxes)) $checkDeleted = 'checked'; 

$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 ARTICLE_NO, deleted from STATUS where ARTICLE_NO = '$pk'"); 

while ($row = mysqli_fetch_assoc($getformdata)) { 
    $ARTICLE_NO = $row['ARTICLE_NO']; 
    $checkDeleted = $row['deleted']; 
} 

if($cmd=="submitinfo") { 
    if ($ARTICLE_NO == null) { 
     $statusQuery = "INSERT INTO STATUS VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
     if ($statusInfo = $con->prepare($statusQuery)) { 
       $statusInfo->bind_param("sssssssssssss", $pk, $checkDeleted, $checkNotice, $checkWarrant, $checkPromise, $checkCompensation, $checkBond, $checkInjunction, $checkActionpay, $checkActionorder, $checkCourtpayment, $checkForeclosure, $checkPenalty); 
       $statusInfo->execute(); 
       $statusInfo->close(); 
       echo $pk; 
       echo $checkDeleted; 
     } else { 
       print_r($con->error); 
     } 
    } else if ($ARTICLE_NO == $pk) { 
     $statusQuery = "UPDATE STATUS SET deleted = ?, notice = ?, warrant = ?, promise = ?, compensation = ?, bond = ?, injunction = ?, actionpay = ?, actionorder = ?, courtpayment = ?, foreclosure = ?,penalty = ? WHERE ARTICLE_NO = ?"; 
     if ($statusInfo = $con->prepare($statusQuery)) { 
       $statusInfo->bind_param("sssssssssssss", $checkDeleted, $checkNotice, $checkWarrant, $checkPromise, $checkCompensation, $checkBond, $checkInjunction, $checkActionpay, $checkActionorder, $checkCourtpayment, $checkForeclosure, $checkPenalty, $pk); 
       $statusInfo->execute(); 
       $statusInfo->close(); 
     } else { 
       print_r($con->error); 
    } 
    } 
} 
if($cmd=="EditStatusData") { 
    echo '<link rel="stylesheet" href="style.css" type="text/css" />' . "\n"; 
    echo "<form name=\"statusForm\" action=\"test.php?pk=".$pk."\" method=\"post\" enctype=\"multipart/form-data\"> 
      <h1>Editing information for Auction No: ".$pk."</h1> 
       <input type=\"checkbox\" name=\"checkboxes[]\" value=\"deleted\" ".$checkDeleted." /> 
       <label for=\"deleted\">Löschung Ebay</label> 
       <br /> 
       <input type=\"hidden\" name=\"cmd\" value=\"submitinfo\" /> 
       <input name=\"Submit\" type=\"submit\" value=\"submit\" /> 
     </form>"; 
} 
?> 
+0

なぜあなたは変更行は、問題を解決しました:

全例(私がテストするためのスクリプトを実行しませんでしたが、うまくいけば、バグ無料となりますか)?また、$ _POST配列が完成していないときにインスタント配列値が割り当てられていないため、更新ブランチはまだfuntional –

+0

ではありません。また、あなたの "if(isset($ _ GET [" cmd "]))$ cmd = $ _GET [" cmd " "cmd"]; else die( "無効なURL"); "もう一度検証! – Mantichora