【问题标题】:PHP POST for HTML Select using another POST使用另一个 POST 选择 HTML 的 PHP POST
【发布时间】:2025-11-21 22:50:02
【问题描述】:

这不是什么不起作用,只是我对如何做感到困惑,我想根据之前选择的用户偏好从我的数据库中获取值。 这些是我的流程将采取的步骤:

  1. 用户将从图像中选择(将添加 HTML 图像,然后在另一个选择时将其鞭打)
  2. 将持续到最后阶段
  3. 最后阶段将有 3 个选择(下拉菜单),其中 2 个将根据用户的选择更改内容(如国家和州 dd)

我的 PHP:

else if ($_POST["data_key"]=="last")
{   
    $final_arr;
    $fetcher_theme =    $_POST["themeid"];
    $fetcher_category=  $_POST["themecategory"];
    $fetcher_product=   $_POST["themeproduct"];
    $fetcher_cover =    $_POST["ctitle"];

    $myquery="SELECT DISTINCT Layout.* FROM Layout,Products,Occasion, Cover, Theme 
    WHERE Layout.product=$fetcher_product 
    AND Layout.occasion=$fetcher_category 
    AND Layout.theme=$fetcher_theme 
    AND Layout.cover=$fetcher_cover;";


    $results=$DB->fetchAll($myquery);

      foreach ($results as $row) {
        $row["current"]="size";
        unset($row["pixfizzId"]);
        $final_arr[]=$row;
            }

    echo json_encode($final_arr);
}


    else if ($_POST["data_key"]=="size")
{   
    $final_arr;
    $fetcher =           $_POST["selected_id"];
    $fetcher_theme =     $_POST["themeid"];
    $fetcher_category=   $_POST["themecategory"];
    $fetcher_product=    $_POST["themeproduct"];
    $fetcher_cover =     $_POST["ctitle"];
    $fetcher_size =      $_POST["stitle"];

    $myquery="SELECT DISTINCT Size.stitle FROM Layout,Products,Occasion, Size, Theme 
    WHERE Layout.product=$fetcher_product
    AND Layout.occasion=$fetcher_category
    AND Layout.theme=$fetcher_theme 
    AND Layout.size=$fetcher_size
    AND Layout.size=Size.id";

    $results=$DB->fetchAll($myquery);

      foreach ($results as $row) {
        $row["current"]="finishing";
        unset($row["pixfizzId"]);
        $final_arr[]=$row;
            }

    echo json_encode($final_arr);
}

        else if ($_POST["data_key"]=="finishing")
{   
    $final_arr;
    $fetcher =           $_POST["selected_id"];
    $fetcher_theme =     $_POST["themeid"];
    $fetcher_category=   $_POST["themecategory"];
    $fetcher_product=    $_POST["themeproduct"];
    $fetcher_cover =     $_POST["ctitle"];
    $fetcher_size =      $_POST["stitle"];
    $fetcher_finishing = $_POST["ftitle"];

    $myquery="SELECT DISTINCT Finishing.ftitle FROM Layout,Products,Occasion, Size, Cover, finishing, Theme 
    WHERE Layout.product=$fetcher_product 
    AND Layout.occasion=$fetcher_category 
    AND Layout.theme=$fetcher_theme 
    AND Layout.size=$fetcher_size 
    AND Layout.cover=$fetcher_cover 
    AND Layout.finishing=$fetcher_finishing";

    $results=$DB->fetchAll($myquery);

      foreach ($results as $row) {
        $row["current"]="finishing";
        unset($row["pixfizzId"]);
        $final_arr[]=$row;
            }

    echo json_encode($final_arr);
}}

我的引擎 JS(我分配的):

         myItem.setId(jsonData[i].id);
         myItem.setImg(jsonData[i].image);
         myItem.setTitle(jsonData[i].title);

我在 JS 中的选择(打印 HTML):

myString +="<a>Sizes: </a><br><select id='sizesSelect' style=' width:200px'></select><br><br>";
    myString +="<a>Cover: </a><br><select id='coverSelect' style=' width:200px'><br></select><br><br>";
    myString +="<a>Finishing: </a><br><select id='finishingSelect' style=' width:200px'></select><br><br><br>";

在 JS 中追加选择:

myString +="<script>$('#sizesSelect').append('<option val="+i+">"+this.getSize()+"</option>')</script>";

现在我需要知道如何再次发布到我的 PHP 服务器以获取其他选择的值(请参阅 img)。

选择尺寸 -> 更新封面 -> 选择封面 -> 更新修整 -> 选择修整

【问题讨论】:

  • $myquery="SELECT DISTINCT Layout.* FROM Layout,Products,Occasion, Cover, Theme WHERE Layout.product=$fetcher_product AND Layout.occasion=$fetcher_category AND Layout.theme=$fetcher_theme AND Layout.cover=$fetcher_cover;"; 那是一个字符串...
  • 我知道如何输入我的查询,我需要 POST 如何完成。

标签: javascript php jquery html post


【解决方案1】:

您可以通过将选项重新添加到 HTML 表单中作为隐藏输入字段,将以前的选项保留为 $_POST 数据,而不是使用 SQL 来存储和显示以前的用户选择。示例:&lt;input type="hidden" text="foo" name="&lt;?=htmlspecialchars($_POST['foo'])?&gt;"&gt;

【讨论】:

  • 感谢您的建议,每次我根据用户选择的数据库从数据库中获取数据时,我都会对服务器进行多次召回,例如(选定的 [USA] 将获取 [New York, Washington, Las Vegas, etc..])。