2016-09-27 78 views
1

我有这种形式,以便人们可以将一些数据插入到数据库中。如何从表单输入选择选项获得字符串

  <form action="publicar_action.php" method="POST"> 
      <input type="text" name="concNome" placeholder="nome do concurso"> <br> 

      <select name="concInstrumento"> 
       <option>guitarra</option> 
       <option>flauta</option> 
      </select> 

      <input type="date" name="concDataDE" ><br> 
      <input type="date" name="concDataATE" ><br> 
      <input type="text" name="concDescricao" placeholder="Descrição"><br><br> 

      <input type="submit">  
     </form> 

,我有这个数据库mr_concursos,至极有2个表:guitarraflauta。 我想做的是将数据插入相应的表格中。该表将通过用户在表单上选择的选项来选择。

像这样:

<?php 
     $con = mysqli_connect('localhost', 'root', '', 'mr_concursos'); 
     $concNome = $_POST['concNome']; 
     $concInstrumento = $_POST['concInstrumento']; 
     $concDataDE = $_POST['concDataDE']; 
     $concDataATE = $_POST['concDataATE']; 
     $concDescricao = $_POST['concDescricao']; 
     $sql = "INSERT INTO $concInstrumento (nome, instrumento, dataDE, dataATE, descricao) VALUES ('$concNome', '$concInstrumento', '$concDataDE', '$concDataATE', '$concDescricao')"; 
     $result = mysqli_query($con,$sql); 
     header('Location: publicar.php'); 

两个表都有相同的列。

由于某种原因,它不起作用。

如果不是选择/选项标签,我只使用一个简单的文本字段,并写入表的名称,它只会被插入表guitarra。它不起作用flauta ...

你知道为什么吗?

+0

为什么你有2种仪器相同的表结构......所以,如果将来你有像100度的仪器,你将有一个具有相同结构100个表?...为什么不只是一个名为InstrumentDetails的表和另一个名为InstrumentTypes的表,或者类似的东西? – Hackerman

+0

我对编码很陌生,我的很多行为都会缺乏经验。当我正在学习新的东西时,我会修改我写的东西。 我会确保你的建议。如果我想从'InstrumentDetails'表中检索数据,但只是从一种仪器中获取数据,我该如何做? (可能使用'InstrumentTypes'表格......但我不明白如何关联它们) –

+0

在InstrumentDetails表格中,您需要包含您正在引用的InstrumentType的主键 – Hackerman

回答

0

您已经失踪超过formPHP conditions以下限制。

HTML:

  1. 选项标记缺失值
  2. 提交按钮缺少名称

PHP

  1. isset()条件缺失,因为如果页面张贴我们要用这个检查它。
  2. Insert语句缺少蜱交给你把表名内

因此整个代码应该如下表名。

HTML:

<form action="publicar_action.php" method="POST"> 
<input type="text" name="concNome" placeholder="nome do concurso"> <br> 
<select name="concInstrumento"> 
<option value="guitarra">guitarra</option> 
<option value="flauta">flauta</option> 
</select> 

<input type="date" name="concDataDE"><br> 
<input type="date" name="concDataATE"><br> 
<input type="text" name="concDescricao" placeholder="Descrição"><br><br> 

<input type="submit" name="save" value="Submit">  
</form> 

publicar_action.php

<?php 
$con = mysqli_connect('localhost', 'root', '', 'mr_concursos'); 
if(isset($_POST['save'])){ // where save is the name of the input button 
$concNome = $_POST['concNome']; 
$concInstrumento = $_POST['concInstrumento']; 
$concDataDE = $_POST['concDataDE']; 
$concDataATE = $_POST['concDataATE']; 
$concDescricao = $_POST['concDescricao']; 

$sql = "INSERT INTO $concInstrumento (`nome`, `instrumento`, `dataDE`, `dataATE`, `descricao`) VALUES ('".$concNome."', '".$concInstrumento."', '".$concDataDE."', '".$concDataATE."', '".$concDescricao."')"; 
$result = mysqli_query($con,$sql); 
header('Location: publicar.php'); 
} 
?> 

为了确保INSERT语句的正确工作到你可以按照点数据库。

注:你先放回声的INSERT语句,然后通过将出口突破执行;并复制回显的语句并将其放入DB的SQL中,然后检查插入时是否发生错误。如果没有发生错误,请删除回显并删除退出;

希望解释清楚,如果将来发生错误,将有助于您纠正错误。

编码愉快:)

相关问题