【问题标题】:Pass/get drop down value into an sql variable without submit button/form在没有提交按钮/表单的情况下将下拉值传递/获取到 sql 变量中
【发布时间】:2018-01-18 01:07:42
【问题描述】:

我需要在从 sql 数据库填充的下拉选择中获取所选项目的值。那么在sql语句中需要那个值来获取具体的记录。

我已经填充了下拉选择。代码如下

<select name="year" id="year">   
    <?php                             
       $query = mysql_query("SELECT distinct Year(fromdate) FROM emp WHERE empcode='$emp' order by Year(fromdate) desc");
        while ($row = mysql_fetch_array($query)){
            $year = $row[0];
           echo "<option value=\"".$year."\">".$year."</option>";
        }
    ?>
</select>

这是我使用下拉列表中的值获取记录的 php 代码。

<?php
   $sql = mysql_query("SELECT salary FROM emp WHERE empcode='$emp' and Year(fromdate) = '$year'");
   $row = mysql_fetch_array($sql);
   $salary=$row[0];
?>

然后我需要将结果传递给文本框

<input id="salary" name="salary" value="<?php echo $salary; ?>">

我需要什么代码才能将下拉“year”中的选定项目值传递给 sql 语句的 PHP 变量 $year?我已经在 Stack Overflow 中查看了答案,但没有一个问题看起来像我的。

需要 sql 的人有什么问题,为什么要投反对票

【问题讨论】:

  • 你需要做一个 xmlhttprequest 来做这个,在 select 标签的 change 事件上发出请求。是的,你也可以用谷歌搜索
  • 警告...mysql_* 函数已折旧。使用 mysqli 或 PDO 获取新代码。此外,您的 SQL 查询将对 sql 注入攻击敞开大门。查看prepared statements。
  • @Ghost 谢谢你,我会努力的
  • @IncredibleHat 再次,我没有开发这个。简单地增强。这是在 2000 年创建的。如果我更新它,这将是一次重大的编辑,而且目前正在使用,所以我没有时间。谢谢
  • “再次”,你什么时候提到这是旧代码,你只是在编辑,而不是编写新代码?

标签: javascript php jquery mysql sql


【解决方案1】:

对您的 php 文件进行 ajax 调用,监听您的 select onchange 事件,如下所示:

$('#year').on('change', function() {
            $.post( "path/file.php", { 
                year: $(this).val()
            })
          .done(function( data, status ) {

            console.log('data: '+data+' status: '+status);

            if(status == 'success'){
             //pass to your input ?
             //data is what your php file will echo/output
               $('#salary').val(data);
            }else{
              //how do you want to handle http error ?

            }
    });
});

【讨论】:

  • 谢谢@hexYeah 唯一的问题是变量仍然无法获取。
  • 哎呀忘了()这里-> year: $(this).val()
  • 非常感谢@hexYeah ,还有一个小问题 :D 选择项目时薪水文本框中的显示有延迟。我必须选择 2 次才能出现在文本框上。您可能知道这其中的原因吗?
  • 既然是onchange,你可能想先有一个空白的option
【解决方案2】:

如果您想在不刷新页面的情况下获取选择框值,则需要使用 AJAX 编写代码。

http://api.jquery.com/jquery.ajax/

更改时请将年份值传递给 AJAX,然后在 AJAX 文件中写下获取薪水的查询,并在成功后使用 jQuery 函数将此值放入薪水文件中

【讨论】:

    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2021-12-20
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多