0

PHP でファイル (行と列でフォーマットされている) を開き、ファイルの行をループして、特定の条件を満たすテーブルに行をエコーアウトしています。エコーアウトする各行で、フォームタグでラップしています。最終的に、20 行をエコーアウトすると、それぞれにボタンがある 20 個のフォームがエコーアウトされます。コメント ボックス付きのコラムもエコーアウトしています。エンド ユーザーがこのページにアクセスし、各行にコメントを入力し、送信ボタンを押して行の結果をデータベースに保存できるようにしたいと考えています。解決方法がわからない問題が 2 つあります。

1.) 結果をテーブルにエコーアウトするとき、SQL 挿入ステートメントを作成するときに参照する静的変数を作成しません。後で呼び出すことができるように、各データにラベルを付けるにはどうすればよいですか?

2.) 複数のフォームがあり、ユーザーは一度に 1 つしか使用しません。ユーザーが送信をクリックしたときに、同じ行のデータ フィールドのみが送信されるようにするにはどうすればよいですか?

うまくいけば、これは理にかなっています。そうでない場合は、必要に応じて明確化を追加します。PHPに関しては間違いなく初心者なので、これは貧弱な設計だと確信していますが、タイムラインがタイトで、今のところ動作する製品が必要です。来週戻って、おそらくより良い解決策を実装することができます。親切な人が提案するものだと確信しています:)

<?php 

if (($handle = fopen("name of file to open here", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
    if ($data[4] == $login){
        $num = count($data);
                echo "<form action='analyzer.php' method='post'>";
                echo "<tr>";
                echo "<td>"; 
                echo $data[1];
                echo "</td>";
                echo "<td>";
                echo $data[2];
                echo "</td>";
                echo "<td>";
                echo $data[3];
                echo "</td>";
                echo "<td>";
                echo $data[4];
                echo "</td>";
                echo "<td>";
                echo $data[5];
                echo "</td>";
                echo "<td>";
                echo $data[6];
                echo "</td>"; 
                echo "<td>"; 
                echo $data[7];
                echo "</td>";
                echo "<td>";
                echo $data[8];
                echo "</td>"; 
                echo "<td>";    
                echo "<input type='text' name='comments' />";
                echo "</td>"; 
                echo "<td>"; 
                echo "<input class='mybutton' type='submit'         name='#' value='Submit' />";    
                echo "</td>"; 
                echo "</tr>";
                echo "</form>";


}
fclose($handle);
}
}

?>
4

2 に答える 2

1

1.) 結果をテーブルにエコーアウトするとき、SQL 挿入ステートメントを作成するときに参照する静的変数を作成しません。後で呼び出すことができるように、各データにラベルを付けるにはどうすればよいですか?

データの一部を一意に識別する何らかの方法が必要です。これは、非表示の入力変数を使用して行うことができます。

2.) 複数のフォームがあり、ユーザーは一度に 1 つしか使用しません。ユーザーが送信をクリックしたときに、同じ行のデータ フィールドのみが送信されるようにするにはどうすればよいですか?

フォームに名前を付けるか、配列内のシーケンスを割り当てることができます。例えば:

<input type="submit" name="form[5]" />

次のようなループを使用して、コードを簡素化することもできます。

foreach( $data as $key=>$val ) {
    echo "<td>$val</td>";
}
于 2013-02-22T02:48:15.433 に答える
0

ここですでに受け入れられている答えがあることは知っていますが、これを行う別の方法を提案したいと思います。1 つのページに多数のフォームがあり、それぞれに独自の送信ボタンがあり、毎回ページを読み込む必要があるのは、UI の観点からするとやや面倒です。

私の提案は、Ajax を学習するという、長く、苦痛を伴い、やりがいのあるプロセスを開始することです。私はjQuery AJAXを学んでおり、それを使って同様のことをしています。

例:

それぞれがプロセスを表す 30 行のテーブルがあります。各行にはチェックボックスがあります。下部に送信ボタンがあり、ユーザーはチェックボックスをオンにしてすべての行を送信できます。

ただし、各行にもボタンがあります(実際にはチェックボックスのすぐ隣にあります)。ボタンには単に「現在」というラベルが付けられており、クリックすると、その行はページのリロードなしでバックグラウンドで処理されます。

そのため、ユーザーが必要に応じて通常のフォームの送信ボタンを使用して多くの行を送信できるようにしたり、個々の行を送信したりして、ページがリロードされるのを待つ必要がないようにしました。

誰かが興味を持っている場合は、ここにコードを追加できます。

于 2013-05-04T06:25:34.380 に答える