2016-11-18 5 views
-2

私は以下のようなPHPフォームを用意しています。ユーザーが特定の行/行を選択すると、PHPのバックエンドスクリプトに対応するデータを送信する必要があります。ここで、externalIDは一意です。私は現在、私は私が選択した行のみに対応するデータを必要とする、私のPHPのバックエンドスクリプトにフォーム全体のデータを取得選択したhtml行のデータをPHPバックエンドスクリプトに送信する方法

  1. 私のコードでは二つの問題に直面しています。

  2. 私はページに2つのボタンがあり、ボタンをクリックするとどのようにして別のPHPスクリプトを呼び出すことができますか?現在、 "MTDATAを送信"をクリックすると、フォームアクションでPHPスクリプトが呼び出されます。

SRCコード:

出力
<form target="iframe_b" action="/php_src/first.php" method="POST" 
      echo "sending data"> 
     <fieldset> 
    <br><br> 
     <input type="button" id="activate_device" name="activatedevice" value="Activate_device"> 
     <input type="submit" value="SEND MTDATA"> 
    <table border="1"> 
    <tr> 
      <th><input type="checkbox" id="selectall"/></th> 
      <th>External ID</th> 
      <th>Status</th> 
    </tr> 

    <?php 
    $dbhost = 'localhost:3036'; 
     $dbuser = 'root'; 
     $dbpass = 'xxxx'; 
     $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
     if (!$conn) { 
      die('Could not connect: ' . mysql_error()); 
     } 
     mysql_select_db("ApplicationServer") or die(mysql_error()); 
     // Get all the data from the "example" table 
     $result = mysql_query("SELECT EXTERNAL_ID,CONNECTION_STATUS FROM DEVICE_DETAILS") or die(mysql_error()); 
     while ($row = mysql_fetch_array($result)) { 
     $extID = $row['EXTERNAL_ID']; 
     $conStatus = $row['CONNECTION_STATUS']; 
      echo "</tr><tr>"; 
      echo "</td><td>"; 
      echo "<input type=\"checkbox\" class=\"case\" name=\"checkBox".$extID."\" />"; 
      echo "</td><td>"; 
      echo "<input type=\"text\" class=\"classextID\" value=\"$extID\" name=\"textExID".$extID."\" />"; 
      echo "</td><td>"; 
      echo "<input type=\"text\" class=\"classConnection\" value=\"$conStatus\" name=\"textcon".$extID."\" />"; 

    } 
?> 

</table> 
</fieldset> 
</form> 

:すべてのHTML入力

array(9) { ["[email protected]_com"]=> string(2) "on" ["[email protected]_com"]=> string(19) "[email protected]" ["[email protected]_com"]=> string(16) "request accepted" ["[email protected]_com"]=> string(2) "on" ["[email protected]_com"]=> string(17) "[email protected]" ["[email protected]_com"]=> string(16) "request accepted" ["[email protected]_com"]=> string(2) "on" ["[email protected]_com"]=> string(18) "[email protected]" ["[email protected]_com"]=> string(16) "request accepted" } 

Htm form with checkbox

答えて

1

- 未チェックのチェックボックスを除いては - 唯一の方法は避けるようにしてサーバーに送信されますつまり、javascriptを使って、フォームが選択される前にフォームから選択されていない行を完全に削除しますnt。しかし

、データの総量が問題でない場合しかし、あなたはちょうどあなたがあなたのhtmlで配列を使用する必要があり、容易に確認の行を選択することができるようにしたい:

echo "<input type=\"checkbox\" class=\"case\" name=\"checkBox[".$extID."]\" />"; 
                  ^ array^
echo "</td><td>"; 
echo "<input type=\"text\" class=\"classextID\" value=\"$extID\" name=\"textExID[".$extID."]\" />"; 
echo "</td><td>"; 
echo "<input type=\"text\" class=\"classConnection\" value=\"$conStatus\" name=\"textcon[".$extID.]"\" />"; 

今すぐあなたの$_POST['checkBox']など。変数はPHPでも配列になるので、キーが$extIDの値であるので簡単にループすることができます。私は前に述べたように、唯一の確認チェックボックスがサーバーに送信されます。

// Loop over the sent-in/selected checkboxes 
foreach (array_keys($_POST['checkBox']) as $key) { 
    var_dump($_POST['textExID'][$key]); 
    // etc. 
} 

はまた、あなたが最後の行をクローズされていませんが、私はそれが原因とされるだろうとは思わないようにHTMLはおそらく有効ではないことに注意してくださいフォームに関する問題。

+1

あなたのプロフィールにOPの最新の質問が表示されることをお勧めします。彼らはゆっくりと他の回答からコードを取り出し、そこから再転記しています。私は彼らがここに投稿したものの正確な複製であるとして、最新のものを閉じた。 –

+0

@ Fred-ii- Hmmmmmm、それは良くないです、私はそれを念頭に置いておく必要があります... – jeroen

+1

OPによって特定のパターンを見つけ出すのがむしろ良くなっています;-) –

0

1つの方法は、入力を配列に集めることです。あなたは$ _POSTをチェックすると

<?php 
echo "</tr><tr>"; 
echo "</td><td>"; 
echo "<input type='checkbox' class='case' name='$extID[ checkBox ]' />"; 
echo "</td><td>"; 
echo "<input type='text' class='classextID' value='$extID' name='$extID[ textExID ]' />"; 
echo "</td><td>"; 
echo "<input type='text' class='classConnection' value='$conStatus' name='$extID[ textcon ]' />"; 
?> 

その後、各$ extIDの詳細をループ最初の配列を、配列内の配列を検索し、収集します。

2つのボタンについては、送信ボタンに名前を付けて、どれが押されたかを確認することができます。

<input type="button" id="activate_device" name="activatedevice" value="Activate_device"> 
<input type="submit" value="SEND MTDATA" name="submit_button"> 

<?php 

if(isset($_POST[ 'submit_button' ])) 
{ 
    // Process submit 
} 
elseif(isset($_POST[ 'activatedevice' ])) 
{ 
    // Process device 
} 
+0

恐ろしいおかげで... – ramkriz

関連する問題