2016-09-27 118 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中,然後檢查插入時是否發生錯誤。如果沒有發生錯誤,請刪除回顯並刪除退出;

希望解釋清楚,如果將來發生錯誤,將有助於您糾正錯誤。

編碼愉快:)

相關問題