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 回答