【问题标题】:How do I make a drop down list follow links from a selection?如何使下拉列表跟随选择的链接?
【发布时间】:2020-07-27 04:59:48
【问题描述】:

我正在使用 PHP 数组和 foreach 循环来创建一个包含美国 50 个州的下拉列表,其中包含指向其每个 COVID-19 响应页面的链接。

当点击“Go”按钮时,它应该带你到所选状态的链接。

我运行测试,但“开始”按钮不适用于任何选择。

这是 PHP 代码:

<html>
    <body>
        <?php
        $states = array(
            "Alabama" => "governor.alabama.gov/newsroom/covid-19",
            "Alaska" => "dhss.alaska.gov/dph/Epi/id/Pages/COVID-19/default.aspx",
            "Arizona" => "www.azdhs.gov/index.php",
            "Arkansas" => "www.healthy.arkansas.gov/programs-services/topics/novel-coronavirus",
            "California" => "www.cdcr.ca.gov/covid19/",
            "Colorado" => "covid19.colorado.gov/",
            "Connecticut" => "portal.ct.gov/Coronavirus",
            "Delaware" => "coronavirus.delaware.gov/",
            "District of Columbia" => "https://coronavirus.dc.gov/",
            "Florida" => "www.floridadisaster.org/covid19/",
            "Georgia" => "georgia.gov/covid-19-state-services-georgia",
            "Hawaii" => "health.hawaii.gov/coronavirusdisease2019/",
            "Idaho" => "coronavirus.idaho.gov/",
            "Illinois" => "coronavirus.illinois.gov/s/",
            "Indiana" => "coronavirus.in.gov/",
            "Iowa" => "coronavirus.iowa.gov/",
            "Kansas" => "govstatus.egov.com/coronavirus",
            "Kentucky" => "governor.ky.gov/covid19",
            "Louisiana" => "ldh.la.gov/coronavirus/",
            "Maine" => "www.maine.gov/covid19/",
            "Maryland" => "coronavirus.maryland.gov/",
            "Massachusetts" => "www.mass.gov/resource/information-on-the-outbreak-of-coronavirus-disease-2019-covid-19",
            "Michigan" => "www.michigan.gov/coronavirus",
            "Minnesota" => "mn.gov/covid19/",
            "Mississippi" => "msdh.ms.gov/msdhsite/_static/14,0,420.html#Mississippi",
            "Missouri" => "dss.mo.gov/covid-19/",
            "Montana" => "covid19.mt.gov/",
            "Nebraska" => "dhhs.ne.gov/pages/Coronavirus.aspx",
            "Nevada" => "nvhealthresponse.nv.gov/",
            "New Hampshire" => "www.nh.gov/covid19/",
            "New Jersey" => "www.nj.gov/health/cd/topics/covid2019_community.shtml",
            "New Mexico" => "www.dws.state.nm.us/COVID-19-Info",
            "New York" => "coronavirus.health.ny.gov/home",
            "New York City" => "www1.nyc.gov/site/coronavirus/index.page",
            "North Carolina" => "www.ncdhhs.gov/divisions/public-health/covid19",
            "North Dakota" => "www.ndresponse.gov/covid-19-resources",
            "Ohio" => "coronavirus.ohio.gov/wps/portal/gov/covid-19/home",
            "Oaklahoma" => "coronavirus.health.ok.gov/",
            "Oregon" => "coronavirus.oregon.gov/",
            "Pennsylvania" => "www.health.pa.gov/topics/disease/coronavirus/Pages/Coronavirus.aspx",
            "Rhode Island" => "www.ride.ri.gov/InsideRIDE/AdditionalInformation/Covid19.aspx",
            "South Carolina" => "www.scdhec.gov/infectious-diseases/viruses/coronavirus-disease-2019-covid-19",
            "South Dakota" => "covid.sd.gov/",
            "Tennessee" => "www.tn.gov/governor/covid-19.html",
            "Texas" => "dshs.texas.gov/coronavirus/",
            "Utah" => "coronavirus.utah.gov/",
            "Vermont" => "www.healthvermont.gov/response/coronavirus-covid-19",
            "Virgina" => "www.vdh.virginia.gov/coronavirus/",
            "Washington" => "coronavirus.wa.gov/",
            "West Virginia" => "dhhr.wv.gov/COVID-19/Pages/default.aspx",
            "Wisconsin" => "www.dhs.wisconsin.gov/covid-19/index.html",
            "Wyoming" => "health.wyo.gov/publichealth/infectious-disease-epidemiology-unit/disease/novel-coronavirus/"
            );
            ?>

            <form action="" method="POST">
                <select name="states" id="states">

                    <?php

                    foreach ($states as $array_key => $array_value) {
                    ?>
                    <option value="https://<?php echo $array_value; ?>"><?php echo $array_key; ?></option>
                    <?php
                    } //end loop

                    ?>

                </select>
                <input id="submit" type="submit" name="submit" value="Go">
            </form>

            <?php
            if(isset($_POST['submit'])) {
                $option = $_POST['states'];

                header("Location: " . $option);
            }
            ?>
    </body>
</html>

提前谢谢你。

【问题讨论】:

    标签: php html arrays foreach dynamic-programming


    【解决方案1】:

    已经发送(第 67 行)的标题(第 81 行)不能重新发送。

    我建议你重新组织你的代码,例如:

    <html>
        <body>
              <?php
                $states = array(
                "Alabama" => "governor.alabama.gov/newsroom/covid-19",
                "Alaska" => "dhss.alaska.gov/dph/Epi/id/Pages/COVID-19/default.aspx",
                "Arizona" => "www.azdhs.gov/index.php",
                "Arkansas" => "www.healthy.arkansas.gov/programs-services/topics/novel-coronavirus",
                "California" => "www.cdcr.ca.gov/covid19/",
                "Colorado" => "covid19.colorado.gov/",
                "Connecticut" => "portal.ct.gov/Coronavirus",
                "Delaware" => "coronavirus.delaware.gov/",
                "District of Columbia" => "https://coronavirus.dc.gov/",
                "Florida" => "www.floridadisaster.org/covid19/",
                "Georgia" => "georgia.gov/covid-19-state-services-georgia",
                "Hawaii" => "health.hawaii.gov/coronavirusdisease2019/",
                "Idaho" => "coronavirus.idaho.gov/",
                "Illinois" => "coronavirus.illinois.gov/s/",
                "Indiana" => "coronavirus.in.gov/",
                "Iowa" => "coronavirus.iowa.gov/",
                "Kansas" => "govstatus.egov.com/coronavirus",
                "Kentucky" => "governor.ky.gov/covid19",
                "Louisiana" => "ldh.la.gov/coronavirus/",
                "Maine" => "www.maine.gov/covid19/",
                "Maryland" => "coronavirus.maryland.gov/",
                "Massachusetts" => "www.mass.gov/resource/information-on-the-outbreak-of-coronavirus-disease-2019-covid-19",
                "Michigan" => "www.michigan.gov/coronavirus",
                "Minnesota" => "mn.gov/covid19/",
                "Mississippi" => "msdh.ms.gov/msdhsite/_static/14,0,420.html#Mississippi",
                "Missouri" => "dss.mo.gov/covid-19/",
                "Montana" => "covid19.mt.gov/",
                "Nebraska" => "dhhs.ne.gov/pages/Coronavirus.aspx",
                "Nevada" => "nvhealthresponse.nv.gov/",
                "New Hampshire" => "www.nh.gov/covid19/",
                "New Jersey" => "www.nj.gov/health/cd/topics/covid2019_community.shtml",
                "New Mexico" => "www.dws.state.nm.us/COVID-19-Info",
                "New York" => "coronavirus.health.ny.gov/home",
                "New York City" => "www1.nyc.gov/site/coronavirus/index.page",
                "North Carolina" => "www.ncdhhs.gov/divisions/public-health/covid19",
                "North Dakota" => "www.ndresponse.gov/covid-19-resources",
                "Ohio" => "coronavirus.ohio.gov/wps/portal/gov/covid-19/home",
                "Oaklahoma" => "coronavirus.health.ok.gov/",
                "Oregon" => "coronavirus.oregon.gov/",
                "Pennsylvania" => "www.health.pa.gov/topics/disease/coronavirus/Pages/Coronavirus.aspx",
                "Rhode Island" => "www.ride.ri.gov/InsideRIDE/AdditionalInformation/Covid19.aspx",
                "South Carolina" => "www.scdhec.gov/infectious-diseases/viruses/coronavirus-disease-2019-covid-19",
                "South Dakota" => "covid.sd.gov/",
                "Tennessee" => "www.tn.gov/governor/covid-19.html",
                "Texas" => "dshs.texas.gov/coronavirus/",
                "Utah" => "coronavirus.utah.gov/",
                "Vermont" => "www.healthvermont.gov/response/coronavirus-covid-19",
                "Virgina" => "www.vdh.virginia.gov/coronavirus/",
                "Washington" => "coronavirus.wa.gov/",
                "West Virginia" => "dhhr.wv.gov/COVID-19/Pages/default.aspx",
                "Wisconsin" => "www.dhs.wisconsin.gov/covid-19/index.html",
                "Wyoming" => "health.wyo.gov/publichealth/infectious-disease-epidemiology-unit/disease/novel-coronavirus/"
                );
                if(isset($_POST['submit'])) {
                    $option = $_POST['states'];
                    //header("Location: $option");
                    //using javascript
                    echo "<script>window.location.href='{$option}';</script>";
                    exit();
                }else{
                ?>
                <form action="" method="POST">
                    <select name="states" id="states">
                        <?php
                        foreach ($states as $array_key => $array_value) {
                        ?>
                        <option value="https://<?php echo $array_value; ?>"><?php echo $array_key; ?></option>
                        <?php
                        } //end loop
                        ?>
                    </select>
                    <input id="submit" type="submit" name="submit" value="Go">
                </form>
                <?php
                }
                ?>
        </body>
    </html>
    

    希望对你有帮助:)

    【讨论】:

    • 您好。感谢您的回答,但这并不能解决我的问题。我运行了它,当点击“Go”时,下拉框就消失了。
    • 我知道,它消失是因为站点将您重定向到所选的域,对吗?你想要什么功能?
    • 我希望网站重定向到所选的域,就像你说的那样。这是我正在运行的测试。我完全复制并粘贴了代码。 covidinfo.app/states_test.php
    • 我已经在我的服务器上进行了测试,它可以工作。无论如何,我已经用一种新方法编辑了代码,检查一下,现在使用的是 javascript 而不是标题位置 :) 立即尝试 :) 让我知道它是否有效
    • 有效!太感谢了。我相信你它第一次奏效了。我认为我的网络服务器提供商出了点问题。感谢您对此如此耐心。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多