0

ここに画像の説明を入力 以下のようにデータベースから取得したテーブルと私のコードを印刷しました

print "<form id='form1' name='form1' method='post' action='http://localhost/live/index.php?m=sync&a=update'>";
while($db_field = mysql_fetch_assoc($result))
{
    print "<table border=1 width=100%>";
    print "<tr><td width=5%><input name='taskid' type='text' value=".$db_field['task_id']." readonly=readonly></td>";
    /*print "<td width=10%>".$db_field['task_name']."</td>";*/
    print "<td width=5%><input name='percent' type='text' value=".$db_field['task_percent_complete']." readonly=readonly></td>";
    print "</table>";
}
print "<input name='Sync' type='submit' value='Sync' id='Sync' />";
print "</form>";
mysql_close($db_handle); /*.$db_handle */ /*<---to check the resource link and id*/
}
else{
    print"Failed" ;//.$db_handle;

データベースから送信したいアクションのような別のページにすべてのデータを解析する方法を知りたいのは、以下のような同期ボタンをクリックすると、1 つのテーブルで 1 つのデータを解析できるためです。別のページ下の画像は解析コードです ここに画像の説明を入力

すべてのデータを新しいページに表示する方法がわかりません...ループを使用する必要がありますか? 初心者です、どうもありがとう

4

1 に答える 1

2

以下のコメントに基づいて編集します。

手始めに、最初のコードで、テーブルが 2 つの別々のテーブルとして 2 回生成されるため、ループの外にprint "<table border=1 width=100%>";andprint "</table>";の部分を移動します。while

現在のコードで起こっていることは、名前が同じであるため、フィールドの 2 番目のペアが最初のペアを上書きしているため、スクリーンショットには 2 番目の値のペアしか表示されないというtaskidことです。入力フィールド名を配列にする必要があります。名前に角括弧入れて、とが自動的に に配列されるようにします。これは、HTML ソースがフォームでどのように見えるかです:percent[]taskidpercent$_POST

<input name='taskid[]' type='text' ...>
<input name='percent[]' type='text' ...>

taskid_0(または、percent_0taskid_1、 ;のように手動で添字を付けpercent_1ますが、ループをいつ停止するか、可変変数を使用するかを決定する必要があります。)

その後、 を処理しているターゲット ページでは、 、およびとして$_POST["taskid"]アクセスできる配列になります。データベースを更新して2番目のhtmlを生成するときに、それをループします。$_POST["taskid"][0]$_POST["percent"][0]$_POST["taskid"][1]$_POST["percent"][1]

print_r($_POST["taskid"]);  // verify that this is an array
print_r($_POST["percent"]); // also an array
$i=0;
foreach ($_POST["taskid"] as $t) {
    // not using $t, that's just for looping convenience
    // do sql insert/update here, i'm just showing how you'd loop the array
    print "<td><input type='text' name='".$_POST["taskid"][$i]."' readonly=readonly></td>";
    print "<td><input type='text' name='".$_POST["percent"][$i]."' readonly=readonly></td>";
    $i++;
}

それが役立つことを願っています。

いくつかのヒント: 1. コードの画像を配置しないでください。コードを貼り付けてください。2. 生成された HTML をコピペ (ブラウザ -> ソースを表示) した方が、ページの画像よりも便利です。


バージョン 1:
1.私が正しく理解している場合、あるページにフォームを表示Syncし、ユーザーが( ) をクリックすると、フォームを処理する別のページsumbitに移動したいですか?

要素(リンク)のtarget属性を<form>使用します。お気に入り:

<form action="form_action.php" method="post">

または、
2.最初にフォーム (同じページ) を処理し、ユーザーを別のページに送りたい場合:

于 2012-08-29T01:55:33.960 に答える