0

ゴルフのスコアの .csv ファイルをアップロードするプログラムがあります。アップロードすると、ファイルからのデータがブラウザーに html テーブルの形式で表示されます。このコードを以下に示します。

echo '<div class="tablediv"><table><form method="post" action="new.php" >';


while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if($ctr ==1)
        {
        echo '<tr>';
        echo "<th>" . $data[3] . "</th><th>" .  $data[4] .
        "</th><th>  " .     $data[5] . "</th><th> " . $data[6].
        "</th><th>" . $data[7] ."</th><th> Prize </th>" ;
        echo '</tr>';
        $ctr++ ;
        }
        else if ($ctr > 1) 
        {
        echo '<tr>';
        echo "<td>" .$data[9] . "</td><td>" .  $data[10] .
       "</td><td>" . $data[11] . "</td><td>  " . $data[12]. "</td><td>" . $data[13] . "</td><td><select name='dropdown'>
        <option value='empty'>None Allocated</option>
        <option value='firstprize'>First Prize</option>
        <option value='secondprize'>Second Prize</option>
        <option value='thirdprize'>Third Prize</option>
        </select></td>";
        echo '</tr>';
        }

    }
    echo '<input type="submit" name="submit" value="Submit" class="submit1" /></form></table></div></br>';

fclose($handle);
}

ユーザーがファイルをアップロードして表示されたら、ユーザーがドロップダウン リストを介して賞品を割り当てられるようにしたいと考えています。これが完了すると、データをデータベースにコミットできます。私がする必要があるのは、基本的に選択した賞金の位置も取得し、それを他のデータと一緒にデータベースにコミットすることです。ドロップダウンリストで選択した値を取得する方法がよくわかりません。これを行う最善の方法は、PHP のシンプルな HTML DOM パーサーを使用することでしょうか? または、より簡単な方法を知っている人はいますか。事前にご協力いただきありがとうございます。

ファイルの最初のアップロードは次のようになります。最後の列はドロップダウンリストです

 Player name    H'cap   Score   Front   Back    Prize
 name           18        66    33.0    33.0    none allocated
 name           11        67    33.5    33.5    none allocated
 name           4         67    33.0    34.0    none allocated
 name           12        67    31.0    36.0    none allocated
 name           11        68    34.5    33.5    none allocated
 name           6         68    34.0    34.0    none allocated
 name           19        68    31.5    36.5    none allocated
 name           11        69    36.5    32.5    none allocated
 name           11        69    33.5    35.5    none allocated
4

3 に答える 3

1

はい!このような方法で行うことができます:

echo "<td>" .$data[9] . "</td><td>" .  $data[10] .
       "</td><td>" . $data[11] . "</td><td>  " . $data[12]. "</td><td>" . $data[13] . "</td><td><select>
        <option value='empty'", ($prize == "None") ? ' class="selected"' : '',">None Allocated</option>
        <option value='firstprize'", ($prize == "First Prize") ? ' class="selected"' : '',">First Prize</option>
        <option value='secondprize'", ($prize == "Second Prize") ? ' class="selected"' : '',">Second Prize</option>
        <option value='thirdprize'", ($prize == "Third Prize") ? ' class="selected"' : '',">Third Prize</option>
        </select></td>";
于 2013-01-23T12:40:41.810 に答える
1

@Carsten が言ったように、これを過度に複雑にする必要はありません。ドロップダウンから簡単に値を取得できます。

<form action="page.php" method="post">
<select name="example">
        <option value='empty'>None Allocated</option>
        <option value='firstprize'>First Prize</option>
        <option value='secondprize'>Second Prize</option>
        <option value='thirdprize'>Third Prize</option>
</select>
</form>

<!-- page.php -->

<?
    echo $_POST['example'];

「二等賞」を選択すると「二等賞」と表示されます

于 2013-01-23T12:40:52.617 に答える
0

私の解決策はこれでした。このようにして、var_dump($_POST) を使用して new.php ページの投稿データを取得できます。別のカウンター「$counter2」を作成し、それを 1 に初期化します。次に、カウンターをドロップダウンリスト名に追加し、var_dump($_POST) は次のような出力を与えます

 array(76) { ["dropdown1"]=> string(11) "secondprize"    
 ["dropdown2"]=> string(5) "empty" ["dropdown3"]=> string(10) "firstprize" 
 ["dropdown4"]=> string(5) "empty" ["dropdown5"]=> string(5) "empty"

これが私が関数に加えた変更です。

    if ($this->fileerror > 0) {
    echo "Error: " . $this->fileerror . "<br />"; 
}else{ 
if (($handle = fopen($this->filetemp, "r")) !== FALSE) {
    $ctr = 1; // used to exclude the CSV header
            $count2 = 1;        
    echo '<div class="tablediv"><table><form method="post" action="new.php" >';

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if($ctr ==1)
        {

        echo '<tr>';
        echo "<th>" . $data[3] . "</th><th>" .  $data[4] . "</th><th>  " . $data[5] . "</th><th> " . $data[6]. "</th><th>" . $data[7] ."</th><th> Prize </th>" ;
        echo '</tr>';
        $ctr++ ;
        }
        else if ($ctr > 1) 
        {
        echo '<tr>';
        echo "<td>" .$data[9] . "</td><td>" .  $data[10] . "</td><td>" . $data[11] . "</td><td>  " . $data[12]. "</td><td>" . $data[13] . "</td><td><select name='dropdown" .  $count2."'>
        <option value='empty'>None Allocated</option>
        <option value='firstprize'>First Prize</option>
        <option value='secondprize'>Second Prize</option>
        <option value='thirdprize'>Third Prize</option>
        </select></td>";
        echo '</tr>';
        $count2++;
        }

    }
    echo '</br><input type="submit" name="submit" value="Submit" /></form></table></div></br>';

fclose($handle);
}

これは私が知っているかなりずさんな解決策です。そのため、これに対する他の解決策をいただければ幸いです。ありがとう。

于 2013-01-23T15:22:56.487 に答える