【问题标题】:Need two dropdown lists on same form in PHP在 PHP 中需要两个相同表单的下拉列表
【发布时间】:2017-10-19 14:01:28
【问题描述】:

Wanted resultResult - error- trying to use two statements

我已经尝试了几天来成功建立一个表单,该表单可以给我两个下拉框,我可以在其中从同一数据库中的不同表中选择记录。我的目标是能够将酒店房间从一个参与者转移到另一个参与者。为此,我需要能够先选择房间捐赠者,然后再选择接受者。我是在 cms 中执行此操作的,因此我必须能够从同一个 PHP 脚本中进行此选择。

一旦我包含第二个选项,我就会遇到问题。我不明白如何在同一个表单上实现两个选择选项。有人对我有解决方案吗?这是我的代码:


    if (!isset($_POST['selected']))
    {   
        $DonorSelect = "Select * from rog_jomres_guests where property_uid in ($RallyHotels) order by surname";
        $DonorResult = mysql_query($DonorSelect) or die("Donor lookup Query failed" . mysql_error());
        $numrecords=mysql_num_rows($DonorResult); $rows = 0;
        ?>
        <html>
        <body>
        <form method="post" action="<?php echo $PHP_SELF;?>">
        <select name="donor">
        <?php
        while ($JosRow = mysql_fetch_array($DonorResult))
        {
            $Name = $JosRow['guests_uid'] . " " . $JosRow['surname'] . "," . $JosRow['firstname'];
            $id = $JosRow['mos_userid'];
            $gid=$JosRow['guests_uid'];
            $IDName = $Name; 

            $AttendSelect = "select * from rog_sembookings where userid = $id AND semid = $ThisRally";
            $AttendResult = mysql_query($AttendSelect) or die("$ThisRally query failed" . mysql_error());
            $AttendRow = mysql_fetch_array($AttendResult);

            if ($Name == "Administrator"){ }
            elseif (!$AttendRow) { }
            else
                {
                    ?>          
                    <option value="<?php echo $gid; ?>"><?php echo $IDName;?></option>
                <?php
                }
        }
        ?>
        </select>
        <?php /**  

        <select name="transferto">
        <?php
        $RecipientSelect = "Select * from rog_users order by name";
        $RecipientResult = mysql_query($RecipientSelect) or die("Recipient lookup Query failed" . mysql_error());
        $Recipientrecords=mysql_num_rows($RecipientResult); 
        while ($RecipientRow = mysql_fetch_array($RecipientResult))
        {
            $RecipientName = $RecipientRow['name'];
            $Recipientid = $RecipientRow['id'];
            $RIDName = $RecipientName; 
            $PartSelect = "select * from rog_users where userid = $Recipientid";
            $PartResult = mysql_query($PartSelect) or die("$ThisRally PartSelect query failed" . mysql_error());
            $PartRow = mysql_fetch_array($PartResult);

            if ($RecipientName == "Administrator"){ }
            elseif (!$PartRow) { }
            else
            {
                    ?>          
                    <option value="<?php echo $Recipientid; ?>"><?php echo $RIDName;?></option>
                <?php  
            }
        }
        ?>
        </select>
        <?php **/ ?>

        <input type="submit" value="<?php echo $Valg; ?>" name="selected">
        </input>
        </form>
        </body>
        </html>
        <?php

    }       // end of clause if not set     $_POST['selected']
    else
    {       // beginning clause if set  $_POST['selected'] let's do this thing......

        if ($AdminUser==1)
            { $CurrGuest    = $_POST["donor"];}

非常感谢任何帮助!谢谢

【问题讨论】:

  • 您的代码应该失败,因为 AFAIK 没有 mysql_numrows 函数。您也不应该使用 mysql_ 函数,而应该只使用准备好的语句,因为我假设您的查询包括用户输入。此外,如果您在此站点上需要帮助,则需要包含有关您的“问题”的更多信息,例如错误消息。
  • 虽然函数 mysql_numrows 不是该脚本的重要组成部分,但该函数存在并且帮助我解决了脚本和数据库查询问题。我从 php v5.4 开始使用该功能。我看到它现在被命名为 mysql_num_rows。但是,这是一个支线,我应该在此处输入代码之前将其删除。我将使用运行脚本产生的屏幕转储更新文章。我没有收到错误消息。谢谢
  • 自从 PHP7 以来 mysql_ 函数不再是 PHP 的一部分,我建议您使用 PDO 或 MYSQLI 和准备好的语句重写代码,您可以通过这样做来解决您的错误。提示:不要在线遵循 PHP 教程,除非它们来自有信誉的来源。大约 8 年前就没有人推荐 mysql_ 函数了。
  • 谢谢德文 - 我明白你的意思。任何人都可以提出任何线索?

标签: php mysql forms select


【解决方案1】:

试试这个代码:

if (!isset($_POST['selected']))
{   
    $DonorSelect = "Select * from rog_jomres_guests where property_uid in ($RallyHotels) order by surname";
    $DonorResult = mysql_query($DonorSelect) or die("Donor lookup Query failed" . mysql_error());
    $numrecords=mysql_numrows($DonorResult); $rows = 0;
    ?>
    <html>
    <body>
    <form method="post" action="<?php echo $PHP_SELF;?>">
    <select name="donor">
    <?php
    while ($JosRow = mysql_fetch_array($DonorResult))
    {
        $Name = $JosRow['guests_uid'] . " " . $JosRow['surname'] . "," . $JosRow['firstname'];
        $id = $JosRow['mos_userid'];
        $gid=$JosRow['guests_uid'];
        $IDName = $Name; 

        $AttendSelect = "select * from rog_sembookings where userid = $id AND semid = $ThisRally";
        $AttendResult = mysql_query($AttendSelect) or die("$ThisRally query failed" . mysql_error());
        $AttendRow = mysql_fetch_array($AttendResult);

        if ($Name == "Administrator"){ }
        elseif (!$AttendRow) { }
        else
            {
                ?>          
                <option value="<?php echo $gid; ?>"><?php echo $IDName;?></option>
            <?php
            }
    }
    ?>
    </select>

    <select name="transferto">
    <?php
    $RecipientSelect = "Select * from rog_users order by name";
    $RecipientResult = mysql_query($RecipientSelect) or die("Recipient lookup Query failed" . mysql_error());
    $Recipientrecords=mysql_numrows($RecipientResult); 
    while ($RecipientRow = mysql_fetch_array($RecipientResult))
    {
        $RecipientName = $RecipientRow['name'];
        $Recipientid = $RecipientRow['id'];
        $RIDName = $RecipientName; 
        $PartSelect = "select * from rog_users where userid = $Recipientid";
        $PartResult = mysql_query($PartSelect) or die("$ThisRally PartSelect query failed" . mysql_error());
        $PartRow = mysql_fetch_array($PartResult);

        if ($RecipientName == "Administrator"){ }
        elseif (!$PartRow) { }
        else
        {
                ?>          
                <option value="<?php echo $Recipientid; ?>"><?php echo $RIDName;?></option>
            <?php  
        }
    }
    ?>
    </select>

    <input type="submit" value="<?php echo $Valg; ?>" name="selected">
    </input>
    </form>
    </body>
    </html>
    <?php

}       // end of clause if not set     $_POST['selected']
else
{       // beginning clause if set  $_POST['selected'] let's do this thing......

    if ($AdminUser==1)
        { $CurrGuest    = $_POST["donor"];}

【讨论】:

  • 感谢您的意见。不幸的是,它并没有解决我的挑战。请查看我更新后的查询。
  • 嗨 Rune,从您想要的结果图片中,我可以看到您有两个 (2) 选择按钮,但您只使用一个表单。当您从选择元素中选择一个选项时,无需通知或从按钮中选择该值,您正在使用的选择按钮将选择元素中的“选择”选项发送到 POST 方法。如果我明白了,您的目标是向系统通知从您的捐赠者到您的接收者的转移室或“转移到”,在这种情况下,您需要使用该信息更新您的数据库。您使用的是什么 CMS?
  • 谢谢卡洛斯!!我正在使用旧的 joomla 1.5.26。我有一个可以使用多年的预订系统。现在我需要再使用一年。我不打算重写整个系统,这将花费数月和数月。我只想能够轻松地将房间从一个参与者转移到另一个参与者。我已经 6 年没有使用模组了。
  • 因此,古老的编码方式。到细节。我想在执行 $_post 之前进行两次选择。这两个变量将是捐助者和接受者。稍后我将添加房间选择作为要转移的房间的单选按钮。我不确定我的 Joomla 版本中的 mysqli 实现。我认为 mysqli db 访问是从 1.6 开始的。知道如何应对挑战吗?感谢您在这里的帮助。我真的很感激!
【解决方案2】:

我自己解决了这个挑战。一些结构性的逻辑挑战。结案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多