2016-03-03 57 views
0

例如选择了MySQL表我有 我有两个表我datbase月1日是列表1和2是列表2如何通过下拉列表

<select> 
<option name='select' value="0">Select</option> 
<option value="list1">List1</option> 
<option value="List2">List2</option> 
</select> 

假设用户在下拉选项选择列表1,则数据插入在列表1选项 如果用户选择列表2然后数据插入到列表2如何做到这一点请大家帮我解决这个问题 感谢

mysql_query("INSERT list1 SET title='$titile', subject='$subject'") 

这里是完整的代码

<?php 
} 

    //connect to database 

    mysql_connect('localhost','root',''); 
    mysql_select_db('pdsd'); 



// check if the form has been submitted. If it has, start to process the form and save it to the database 
if (isset($_POST['submit'])) 
{ 
// get form data, making sure it is valid 

$title = mysql_real_escape_string(htmlspecialchars($_POST['title'])); 
$subject = mysql_real_escape_string(htmlspecialchars($_POST['subject'])); 



// check to make sure both fields are entered 
if ($title == '' || $subject == '') 
{ 
// generate error message 
$error = 'ERROR: Please fill in all required fields!'; 

// if either field is blank, display the form again 
renderForm($title, $subject,$date, $error); 
} 
else 
{ 



// save the data to the database 



$tables = array('list1', 'list2'); 
if (in_array($_POST['select'], $tables)) { 
    mysql_query("INSERT {$_POST['select']} SET title='$title',subject='$subject'"); 

} 


or die(mysql_error()); 

echo "<center>Succesfully add</center>"; 
echo "<script>setTimeout(\"location.href = 'login.php';\",1500);</script>"; 
// once saved, redirect back to the view page 

} 
} 
else 
// if the form hasn't been submitted, display the form 
{ 
renderForm('','','','','','','','','','','','','','','','','','','',''); 
} 




?> 
+2

很简单,根据条件语句使用条件语句和2个单独的查询。 –

+1

名称应该选择不选项 –

+0

^...也是;-) –

回答

3

正如我在评论中所述,使用条件语句和基于条件语句的2个单独查询以及选择与所选值相等的选项。

例如假设你正在使用纯PHP和使用形式:

旁注:你需要在这里用自己的查询,如在评论// query for LIST X

另一个附注:name属性属于<select>而不是<option>

尾注:我的遗漏action=""等于“自我”。所以,如果你想使用单独的文件,你可以添加action="handler.php"

<form method="post"> 

    <select name="select"> 
    <option value="0">Select</option> 
    <option value="list1">List1</option> 
    <option value="list2">List2</option> 
    </select> 

<input type = "submit" name = "submit" value = "Submit"> 

</form> 

<?php 

if(isset($_POST['submit'])){ 

if(isset($_POST['select']) && $_POST['select'] == 'list1'){ 

    // query for LIST 1 

} 

if(isset($_POST['select']) && $_POST['select'] == 'list2'){ 

    // query for LIST 2 

} 

if(isset($_POST['select']) && $_POST['select'] == '0'){ 

    // Do nothing 

} 

} 

这只是一个例子,用事先准备好的声明中应该考虑到。

其他参考资料,你应该阅读与MySQL有关的:


编辑:

你也可以使用一个switch/case声明:

if(isset($_POST['submit'])){ 

    switch($_POST['select']) { 

    case 'list1': 
     // query for LIST 1 
     break; 
    case 'list2': 
     // query for LIST 2 
     break; 

    case '0': 
     // Do nothing 
     break; 
    } 

} 
+1

用''switch'](http://php.net/manual/en/control-structures.switch.php)声明会少得多。 – tadman

+0

@tadman我同意这是我以前的想法,但TBH我不记得如何通过记忆来完成这些。我输入所有的*内存* ;-) –

+0

很高兴知道你仍然有它! – tadman

0

您应首先验证输入是有效的,那么你可以用它替换成SQL。

$tables = array('list1', 'list2'); 
if (in_array($_POST['select'], $tables)) { 
    mysql_query("INSERT INTO {$_POST['select']} SET title='$titile', subject='$subject'") or die(mysql_error()); 
} 

确保你正确转义变量$titile$subject如果他们从用户输入派生,以防止SQL-注入(使用mysql_real_escape_string())。如果你使用MySQLI或PDO,那将会更好,所以你可以使用准备好的语句而不是将变量代入查询。

+0

@tadman在检查列表后,我没有看到问题。 – Barmar

+0

@tadman我在说'$ _POST ['select']'。其他问题超出了问题的范围。 – Barmar

+0

它说'$ title'来自'$ _POST'数据? – Barmar

相关问题