2015-07-02 99 views
2

我要的是第二组选项更改为一旦选择了一个名字任何可用的基于date=today and name=selectedname表 - 基于第一选择与MySQL查询更新选项

下面是表的基础知识:

ID | name | location | Date 
1 |John | place 1 | 03-07-2015 
2 |Jane | place 2 | 03-07-2015 
3 |John | place 2 | 04-07-2015 
4 |Jane | place 2 | 04-07-2015 

我只是不知道如何基于运行SQL语句

SELECT location FROM table WHERE name = "selected name" AND date = CURDATE()时选择 “姓名” 改变

这里是我当前的代码示例:

<form name="test" id="test"> 
 
    <div> 
 
    <label for="name">Name:</label> 
 
    <select name="name" id="name" required> 
 
     <option value="" disabled selected>Please Select</option> 
 
     <option value="John">John</option> 
 
     <option value="Jane">Jane</option> 
 
    </select> 
 
    </div> 
 
    <div> 
 
    <label for="location">location:</label> 
 
    <select name="location" id="location" required> 
 
     <option value="" disabled selected>Please Select</option> 
 
     <option value="place 1">place 1</option> 
 
     <option value="place 2">place 2</option> 
 
    </select> 
 
    </div> 
 
    <div> 
 
    <label for="startend">Start or Finish:</label> 
 
    <select name="startend" id="startend" required> 
 
     <option value="" disabled selected>Please Select</option> 
 
     <option value="Start">Start</option> 
 
     <option value="End">Finish</option> 
 
    </select> 
 
    </div> 
 
    <div class="submit"> 
 
    <input type="submit" name="submit" value="Submit" class="submit" /> 
 
    </div> 
 
</form>

所以一旦约翰从名称选择选择“约翰”的位置选择框将只包含“地点1”,如果今天的日期是03 -07-2015,但如果今天的日期是04-07-2015,那么它只包含'Place 2'

+1

名称是重复的。仍然有可能。创建一个选项框,其中选项是'name',值是'ID'。然后在表单提交你会得到该ID,然后你可以轻松更新。 –

+0

如果我理解正确,所以如果选择一个名称,然后更新第二个选定的值的所有行? –

+0

约翰和约翰是一样的人简 - ID只是那里的主要列,所以基本上,如果约翰今天被选中位置只会显示'地点1',但如果他选择他的名字汤罗洛它会显示'地点2' – RedSparr0w

回答

1

如果你想选择约翰今天的位置,你只需要选择基于namedate像这样:

SELECT location 
FROM table 
WHERE name = "John" 
    AND date = CURDATE() 

如果要在选择名称后即时更新第二个选择框,则可能需要使用ajax。如何填充一个Ajax调用一个选择框Here are some good examples,调用代码namelocation领域的东西,如改变:

$("#name, #location").change(function(){ 
    $.ajax({ 
     url: "fetchData.php", 
     data: $('form').serialize(), 
     dataType: "json", 
     success: function(data) { 
      alert("Next we populate the <select> with the data received..."); 
     } 
    }); 
}); 

fetchDate.php文件是你需要创建。这个PHP文件将简单地抓取正确的位置(使用上面的SQL示例)并以JSON格式将它们回显出来供JS使用(使用json_encode()函数将PHP数组转换为JSON)。

您还可以使用专用的names表格,只需在此处引用John的名字ID,否则在用户需要更改名称或多个用户具有相同名称时会遇到问题。

+0

谢谢,SQL语句部分没有太多的问题,主要是当名称更改时如何运行它,有没有办法用JQuery来做到这一点,因为我知道一点点,但我对Ajax一无所知 – RedSparr0w

+0

我有一个表名和用户名和电子邮件/密码等我如何参考2在一起? – RedSparr0w

+1

@ RedSparr0w你会想要使用'内部连接',这里是[一个入门](http://www.w3schools.com/sql/sql_join_inner.asp)关于如何使用它和[官方文档](https ://dev.mysql.com/doc/refman/5.0/en/join.html)。 – Andrew

0

试试这个

SELECT location 
FROM table 
WHERE name = "John" 
    AND date = "03-07-2015" 
相关问题