2011-01-05 1 views
0

私はデータベースを更新するためにテーブルを使用しています。このテーブルには264個のチェックボックスがあり、チェックボックスをオンにしてチェックボックスをオフにしてからデータベースを更新します。チェックボックスとテキストエリアのデータでMYSQL DBを更新する(PHPで)

私はフォームにデータを投稿し、各フィールドのすべてのフィールドを空白(チェックボックスの値とテキストエリアの値)に設定し、次にforeachループを使用して各フィールドを更新しますチェックボックスの値を使用してデータベース内の

私がしたいことは、各チェックボックスのテキストエリアの値をデータベースに追加することです。これを行う方法はわかりません。

これは私の更新コードです:

if (isset($_POST["update"])) { 
$seolistRes2 = mysql_query($seolistQ) or die(mysql_error()); 
while ($seolistRow2 = mysql_fetch_array($seolistRes2)) { 
    $wsID1 = $seolistRow2["worksheetID"]; 
    $updateWSQ2 = "UPDATE seo_work SET taskValue=0, taskInfo='' WHERE worksheetID=$wsID1 AND userID=$userID"; 
    mysql_query($updateWSQ2) or die(mysql_error()); 
} 

$item = $_POST; 
foreach($item as $key => $value) { 
    $wsID = str_replace("checkbox","",$key); 

    if (is_numeric($wsID)) { 
     $updateWSQ = "UPDATE seo_work SET taskValue=$value taskInfo=$value WHERE worksheetID=$wsID AND userID=$userID"; 
     mysql_query($updateWSQ) or die(mysql_error()); 
     header("Location: worksheet.php?y=".$seoworkyear."&userID=$userID&action=success"); 
    } 
} 

}

これは、チェックボックスやテキストエリアコードです:(これはフォーム内であることに注意してください)

$currentTask = ''; 
echo "<tr class='tr'>"; 
while ($seolistRow = mysql_fetch_array($seolistRes)) { 
    $taskValue = $seolistRow["taskValue"]; 
    $worksheetID = $seolistRow["worksheetID"]; 
    $taskName = $seolistRow["taskName"]; 
    $taskInfo = $seolistRow["taskInfo"]; 

    if ($taskValue == 1) { 
     $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox".$worksheetID."' id=checkbox'".$worksheetID."' checked='checked' />". 
     "<textarea class='textarea' name='textarea".$worksheetID."' id=textarea'".$worksheetID."'>" . $taskInfo . "</textarea>"; 
    } 
    else { 
     $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox".$worksheetID."' id='checkbox".$worksheetID."' />". 
     "<textarea class='textarea' name='textarea".$worksheetID."' id=textarea'".$worksheetID."'>" . $taskInfo . "</textarea>"; 
    } 
    if ($currentTask != $taskName) { 
     echo "</tr>"; 
     echo "<tr class='tr'>"; 
     echo "<td class='task'>".$taskName."</td>"; 
    } 
    echo "<td class='tick'>".$taskDone."</td>"; 
     $currentTask = $taskName; 
} 
echo "</tr>"; 
+0

...他のニュースでは、働いていた「SQLインジェクション」 –

答えて

0

次のことができるようにすべきです$ _POST ['textarea'を使ってテキストエリアの値を取得します。 $ wsID]を返します。

+0

を調べ、感謝:)今私は、テキストエリアの表示に問題があります。最初のフィールドだけを表示することができます。6つのボックスをチェックし、それぞれに異なるノートを付けると、6つのボックスすべてにノート1が表示されます。 – Martin

+0

最新のコードを投稿/編集していただけますか? – Spechal

1

下記のようなHTMLフォームを使用してください。

$currentTask = ''; 
echo "<tr class='tr'>"; 
while ($seolistRow = mysql_fetch_array($seolistRes)) { 
    $taskValue = $seolistRow["taskValue"]; 
    $worksheetID = $seolistRow["worksheetID"]; 
    $taskName = $seolistRow["taskName"]; 
    $taskInfo = $seolistRow["taskInfo"]; 

    if ($taskValue == 1) { 
     $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox[".$worksheetID."]' id='checkbox[".$worksheetID."]' checked='checked' />". 
     "<textarea class='textarea' name='textarea[".$worksheetID."]' id='textarea[".$worksheetID."]'>" . $taskInfo . "</textarea>"; 
    } 
    else { 
     $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox[".$worksheetID."]' id='checkbox[".$worksheetID."]' />". 
     "<textarea class='textarea' name='textarea[".$worksheetID."]' id='textarea[".$worksheetID."]'>" . $taskInfo . "</textarea>"; 
    } 
    if ($currentTask != $taskName) { 
     echo "</tr>"; 
     echo "<tr class='tr'>"; 
     echo "<td class='task'>".$taskName."</td>"; 
    } 
    echo "<td class='tick'>".$taskDone."</td>"; 
     $currentTask = $taskName; 
} 
echo "</tr>"; 

テキストエリアとチェックボックスの変更された名前とIDを確認してください。 textarea [SOME_WORKSHEET_ID]とチェックボックス[SOME_WORKSHEET_ID]にそれぞれ変更しました。

フォームを送信すると、そのチェックボックスとtextareaの値が配列として取得され、worksheetIdがインデックスとして取得されます。この[]技法を使用して、テキストエリアとチェックボックスの値、またはフォームに追加するフィールドの数を取得できます。

上記のHTML構造を使用し、$ _POST配列を確認してください。

希望します。

ありがとう!

フセイン。ここで

0

は完全にテストされていない、別のアプローチですが、うまくいけばあなたのアイデアを得る...

if (isset($_POST["update"])) 
{ 
    // All to blank 
    $seolistRes2 = mysql_query($seolistQ) or die(mysql_error()); 
    while ($seolistRow2 = mysql_fetch_array($seolistRes2)) 
    { 
     $wsID1 = $seolistRow2["worksheetID"]; 
     $updateWSQ2 = "UPDATE seo_work SET taskValue=0, taskInfo='' WHERE worksheetID=$wsID1 AND userID=$userID"; 
     mysql_query($updateWSQ2) or die(mysql_error()); 
    } 

    // Re use your result from the select to go through all the known IDs 
    foreach($seolistRow2 as $i => $data) 
    { 
     // Obtain the ID 
     $id = $data['worksheetID']; 

     // Get the checkbox value for current ID 
     $checkbox_wsID = $_POST['checkbox' . $id]; 

     // Get the textarea value for current ID 
     $textarea_wsID = $_POST['textarea' . $id]; 

     // Update the Row using mysql_escape 
     $updateWSQ = "UPDATE seo_work " . 
     "SET taskValue = '" . mysql_escape_string($checkbox_wsID) ."' taskInfo = '" . mysql_escape_string($textarea_wsID) ."'" . 
     "WHERE worksheetID=$id AND userID=$userID"; 

     mysql_query($updateWSQ) 
      or die(mysql_error()); 

     header("Location: worksheet.php?y=".$seoworkyear."&userID=$userID&action=success");   
    } 
} 
関連する問題