简体   繁体   English

使用PHP解析HTML页面,以从下拉列表中获取选定的值。 可能吗?

[英]Use PHP to parse HTML page to get selected value from a dropdown list. Is it possible?

I have a program that uploads a .csv file of golf scores. 我有一个程序可以上传高尔夫成绩的.csv文件。 upon upload the data from the file is diplayed in the form of a html table in the browser. 上传后,文件中的数据将以html表的形式在浏览器中显示。 the code for this is shown below. 的代码如下所示。

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);
}

once a user has uploaded the file and it is diplayed I want the user to be able to allocate a prize via the dropdown list and then, once this is done the data can be commited to a database. 一旦用户上传了文件并被显示,我希望用户能够通过下拉列表分配奖品,然后,一旦完成,就可以将数据提交到数据库。 what i need to do is basically get the selected prize position also and commit that to the database along with the other data. 我需要做的基本上是也获得选定的奖金位置,并将其与其他数据一起提交至数据库。 im just not too sure how to get at the selected value in the dropdown list. 我只是不太确定如何获得下拉列表中的选定值。 would the best way to do this be to use PHP simple HTML DOM parser? 最好的方法是使用PHP简单HTML DOM解析器? or does anyone know of an easier way. 还是没有人知道更简单的方法。 Thanks a lot for your help in advance! 非常感谢您的提前帮助!

the initial upload of the file looks like below. 文件的初始上传如下所示。 last column being the dropdownlist 最后一列是下拉列表

 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

I guess yes! 我猜是! You can do kind of this way: 您可以通过这种方式进行操作:

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>";

As @Carsten said, you don't need to overcomplicate this. 正如@Carsten所说,您不必过于复杂。 You can easily get the value from a dropdown: 您可以从下拉菜单中轻松获取值:

<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'];

If you select 'Second Prize' it will echo 'secondprize' 如果您选择“二等奖”,它将回显“二等奖”

my solution was this. 我的解决办法是这样。 this way i can get the post data on the new.php page by using var_dump($_POST). 这样,我可以使用var_dump($ _ POST)在new.php页面上获取发布数据。 I create another counter "$counter2" and initialize it to 1. then in append the counter to the dropdownlist name " and var_dump($_POST) gives me an output like this 我创建了另一个计数器“ $ 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"

here are the changes i made to the function. 这是我对该功能所做的更改。

    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);
}

this is a pretty sloppy solution i know. 我知道这是一个很草率的解决方案。 so any other solutions you may have for this would be appreciated. 因此,您可能对此还有其他解决方案。 thanks. 谢谢。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM