【问题标题】:Post option text instead of value in PHP在 PHP 中发布选项文本而不是值
【发布时间】:2017-09-25 15:04:52
【问题描述】:

我想发布美国和佛罗里达等数据,而不是数字(1 和 1)。我尝试将.value 更改为文本,但代码不起作用。

这用于根据国家/地区过滤城市和州,但我必须使用国家和州名称更新数据库,目前我只获取值,有没有办法解决这个问题?

数据库结构

INSERT INTO `case_category` (`id`, `category`) VALUES
(1, 'USA'),
(2, 'China'):

INSERT INTO `case_sub_category` (`id`, `sub_category`, `category_id`) VALUES
(1, 'Florida', 1),
(2, 'Guangdong', 2),
(3, 'Sichuan', 2);

loadData.php

$loadType=$_POST['loadType'];
$loadId=$_POST['loadId'];

if($loadType=="subCat"){
    $sql="select id,sub_category from case_sub_category where category_id='".$loadId."' order by sub_category asc";
}else{
    $sql="select id,sub_sub_category from case_sub_sub_category where sub_category_id='".$loadId."' order by sub_sub_category asc";
}
$res=mysql_query($sql);
$check=mysql_num_rows($res);
if($check > 0){
    $HTML="";
    while($row=mysql_fetch_array($res)){
        $HTML.="<option value='".$row['id']."'>".$row['1']."</option>";
    }
    echo $HTML;
}
?> 

选择器

<table>
    <tr>
        <td>
            <select name="request_type_c"  onchange="selectsubSubCat(this.options[this.selectedIndex].value)">
                <option value="-1">Select Category</option>
                <?php
                while($rowCategory=mysql_fetch_array($resCategory)){
                    ?>
                    <option value="<?php echo $rowCategory['id']?>"><?php echo $rowCategory['category']?></option>
                    <?php
                }
                ?>
            </select>
        </td>
    </tr>
    <tr>
        <td>
            <select name="request_type_c_sub"  id="subCat_dropdown" onchange="selectsubCat(this.options[this.selectedIndex].value)">
                <option value="-1">Select Sub Category</option>
            </select>
            <span id="subCat_loader"></span>
        </td>
    </tr>

    <tr>
        <td>
            <select name="request_type_c_sub_sub" id="subSubCat_dropdown">
                <option value="-1">Select Sub Sub Category</option>
            </select>
            <span id="subSubCat_loader"></span>
        </td>
    </tr>
</table>

AJAX

 <script type="text/javascript">
    function selectsubSubCat(Category_id){
        if(Category_id!="-1"){
            loadData('subCat',Category_id);
            $("#subSubCat_dropdown").html("<option value='-1'>Select Category</option>");   
        }else{
            $("#subCat_dropdown").html("<option value='-1'>Select Sub Category</option>");
            $("#subSubCat_dropdown").html("<option value='-1'>Select Sub Sub Category</option>");       
        }
    }

    function selectsubCat(subCat_id){
        if(subCat_id!="-1"){
            loadData('subSubCat',subCat_id);
        }else{
            $("#subSubCat_dropdown").html("<option value='-1'>Select Sub Sub Category</option>");       
        }
    }

    function loadData(loadType,loadId){
        var dataString = 'loadType='+ loadType +'&loadId='+ loadId;
        $("#"+loadType+"_loader").show();
        $("#"+loadType+"_loader").fadeIn(400).html('Please wait... <img src="image/loading.gif" />');
        $.ajax({
            type: "POST",
            url: "loadData.php",
            data: dataString,
            cache: false,
            success: function(result){
                $("#"+loadType+"_loader").hide();
                $("#"+loadType+"_dropdown").html("<option value='-1'>Select "+loadType+"</option>");  
                $("#"+loadType+"_dropdown").append(result);  
            }
        });
    }
    </script>

【问题讨论】:

  • 绝对有一种方法可以只发布相关的 Js 和影响标记,而不是这堵代码......不是吗?
  • @teeyo 它只发布子类别文本,但子子类别不起作用。
  • @GoldPearl 是的,因为这是另一个选择 &lt;?php while($rowCategory=mysql_fetch_array($resCategory)){ ?&gt; &lt;option value="&lt;?php echo $rowCategory['category']?&gt;"&gt;&lt;?php echo $rowCategory['category']?&gt;&lt;/option&gt; &lt;?php } ?&gt; 如果这就是你想要的,我可以用更好的格式给你写一个答案哈哈
  • 为什么要使用早已弃用的mysql_ 代码库?它在多年前就停产了,并在 PHP7 中完全删除。不应使用此库编写新代码。它使您容易受到 SQL 注入攻击(由于缺乏参数化查询支持)和潜在的其他未修补漏洞。尽快切换到使用mysqliPDO,然后学习如何编写参数化查询来保护您的数据免受恶意输入。请参阅bobby-tables.com 以获得对风险的简单说明以及一些用于安全编写查询的示例 PHP 代码。

标签: javascript php jquery html ajax


【解决方案1】:

在 DB 上,您必须将字段类型更改为 varchar,因此您可以将值设置为字符串(美国或其他国家/地区)而不是数字。将“类别”字段设置为子类别表中的外键...

在每个表中设置AI,这样你就可以查询国家和城市的名字了……

【讨论】:

  • 仅受影响的表或字段...在您的情况下,在表 case_category 中:您必须将字段 id 设置为 AI,因此查询:INSERT INTO case_category (category) VALUES ('美国');
  • 另一方面,在 php 中使用 json 编码从 ajax 获取响应并在 javascript 上构建 html...
  • 最后,查询子类别表:INSERT INTO case_sub_category (sub_category, category_id) VALUES ('Florida', 'USA);...所以其他查询将是更容易...
猜你喜欢
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多