2014-05-20 42 views
0

我有一個網頁,我要求用戶輸入,當他點擊添加按鈕時,它應該將來自用戶的輸入插入到數據庫中。我一直認爲你不能同時使用POST和GET,但根據thisthis的答案應該是可以的。然而,我似乎無法得到他們的解決方案。PHP:同時瞭解POST和GET的問題

該腳本在數據庫中插入某些內容(生成了一個標識),但seriesName字段保持爲空。

PHP腳本:

<?php 
$con=mysqli_connect("localhost","user","passwd","database"); 

// Check connection 

if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$issueSeries = mysqli_real_escape_string($con, $_GET['addSeries']); 

mysqli_query($con,"INSERT INTO series (seriesName) VALUES ('$issueSeries')"); 

mysqli_close($con); 
?> 

的HTML:

<div id="issueAddInformationLayout"> 
    <div id="issueAddCredits"> 
     <form action="addIssue.php" method="post"> 
      <table> 
       <tr id="lblAddCreator"> 
        <td><p>NR</p></td> 
        <td><p>Series</p></td> 
        <td><p>Volume</p></td> 
        <td><p>Title</p></td> 
        <td><p>Publisher</p></td> 
       </tr> 
       <tr> 
        <td><input type="text" id="addNR" size="3%"/></td> 
        <td><input type="text" id="addSeries" size="25%" /></td> 
        <td><input type="text" id="addVolume" size="25%" /></td> 
        <td><input type="text" id="addTitle" size="30%" /></td> 
        <td><input type="text" id="addPublisher" size="30%" /></td> 
       </tr> 
      </table> 
      <table> 
       <tr id="lblAddCreator"> 
        <td><p>Writer</p></td> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr id="txtAddCreator"> 
        <td><input type="text" id="addWriter1" size="30%" /></td> 
        <td><input type="text" id="addWriter2" size="30%" /></td> 
        <td><input type="text" id="addWriter3" size="30%"/></td> 
        <td><input type="text" id="addWriter4" size="30%"/></td> 
       </tr> 
       <tr id="lblAddCreator"> 
        <td><p>Editor</p></td> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr id="txtAddEditor"> 
        <td><input type="text" id="addEditor1" size="30%" /></td> 
        <td><input type="text" id="addEditor2" size="30%"/></td> 
        <td><input type="text" id="addEditor3" size="30%"/></td> 
        <td><input type="text" id="addEditor4" size="30%"/></td> 
       </tr> 
       <tr id="lblAddCreator"> 
        <td><p>Letterer</p></td> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr id="txtAddLetterer"> 
        <td><input type="text" id="addLetterer1" size="30%"/></td> 
        <td><input type="text" id="addLetterer2" size="30%"/></td> 
        <td><input type="text" id="addLetterer3" size="30%"/></td> 
        <td><input type="text" id="addLetterer4" size="30%"/></td> 
       </tr> 
       <tr id="lblAddCreator"> 
        <td><p>Colourist</p></td> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr id="txtAddColourist"> 
        <td><input type="text" id="addColourist1" size="30%"/></td> 
        <td><input type="text" id="addColourist2" size="30%"/></td> 
        <td><input type="text" id="addColourist3" size="30%"/></td> 
        <td><input type="text" id="addColourist4" size="30%"/></td> 
       </tr> 
       <tr id="lblAddCreator"> 
        <td><p>Cover Artist</p></td> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr id="txtAddCoverArtist"> 
        <td><input type="text" id="addCoverArtist1" size="30%"/></td> 
        <td><input type="text" id="addCoverArtist2" size="30%"/></td> 
        <td><input type="text" id="addCoverArtist3" size="30%"/></td> 
        <td><input type="text" id="addCoverArtist4" size="30%"/></td> 
       </tr> 
       <tr id="lblAddCreator"> 
        <td><p>Inker</p></td> 
        <td></td> 
        <td></td> 
       </tr> 
       <tr id="txtAddInker"> 
        <td><input type="text" id="addInker1" size="30%"/></td> 
        <td><input type="text" id="addInker2" size="30%"/></td> 
        <td><input type="text" id="addInker3" size="30%"/></td> 
        <td><input type="text" id="addInker4" size="30%"/></td> 
       </tr> 
       <tr id="lblAddCreator"> 
        <td><p>Penciler</p></td> 
        <td></td> 
        <td></td> 
        </tr> 
       <tr id="txtAddPenciler"> 
        <td><input type="text" id="addPenciler1" size="30%"/></td> 
        <td><input type="text" id="addPenciler2" size="30%"/></td> 
        <td><input type="text" id="addPenciler3" size="30%"/></td> 
        <td><input type="text" id="addPenciler4" size="30%"/></td> 
       </tr> 
       <tr id="lblAddCreator"> 
        <td><p>Trade Paper Back</p></td> 
        <td><p id="lblAddCover">Cover</p></td> 
       </tr> 
      </table> 
      <table> 
       <tr id="txtAddTPB"> 
        <td><input type="text" id="addTPB" size="30%"/></td> 
        <td> 
         <p id="btnAddCover" enctype="multipart/form-data" action="parse_file.php" method="post"> 
          <input type="file" name="uploaded_file"> 
         </p> 
        </td> 
        <td> 
         <id="btnAddIssue"><input type="submit" value="Add"> 
        </td> 
       </tr> 
      </table> 
     </form> 
    </div> 
</div> 

似乎有對HTML有些混亂,所以我說的全部HTML代碼。請記住:這純粹是爲了我自己,而我並不在乎那些表格過時的東西:)

+0

你輸入的形式外.. 。 –

+0

@DamienPirsy似乎有一些關於HTML的混淆,所以我添加了完整的HTML代碼 – Noosrep

回答

0

您的意見不屬於您的表格,因此未提交。

<form id="btnAddIssue" action="addIssue.php" method="post"> 
    <input type="text" id="addSeries" size="25%" /> 
    <input type="submit" value="Add"> 
</form> 

然後,您需要,因爲你的形式設置爲POST改變$_GET['addSeries']$_POST['addSeries'](或改變形式通過GET提交)。

0

您的輸入不在表單標籤之外,用戶提交表單時將不會考慮該表單。

<form id="btnAddIssue" action="addIssue.php" method="post"> 
    <input type="text" id="addSeries" size="25%" /> 
    <input type="submit" value="Add"> 
</form> 

而且因爲你是一個post請求到PHP端將是$ _ POST來引用輸入的值

此外,有時它會是很好的利用$ _REQUEST其中包含來自兩個數據GET和POST所以你必須從每次請求適當的數據

$issueSeries = mysqli_real_escape_string($con, $_REQUEST['addSeries']); 
+2

**警告**:'$ _REQUEST'還包含來自cookie的數據。我通常會避免它,以便知道你的數據來自哪裏。 – Quentin

+0

感謝@Quentin的建議:) – rsakhale

1

在HTTP,你不能使用在同一時間GET和POST,但是你可以讓具有查詢字符串作爲URL的一部分POST請求。

即使請求是POST請求,PHP也會使用查詢字符串填充$_POST$_GET

由於表單是POST,從輸入的數據將被投入到體內,而不是查詢字符串(因此將出現在$_POST$_GET)。

如果addSeries的值固定,那麼你可以用$_GET使用它像這樣:

<form id="btnAddIssue" action="addIssue.php?addSeries=someValue" method="post"> 

...但因爲你正在服用的用戶輸入,使用$_POST你把輸入後讀取值在表單內。

+0

似乎有一些關於HTML的混淆,所以我添加了完整的HTML代碼。 – Noosrep

+0

@TimothyPersoon - 您的編輯已使HTML無效。你不能嵌套窗體。 – Quentin

+0

不知道,但我改變了。 – Noosrep

0

您的文本提交被放置在表單之外,因此沒有任何值(該文本提交)會被提交到操作頁面。

將其更改爲

<form id="btnAddIssue" action="addIssue.php" method="post"> 
<input type="text" id="addSeries" size="25%" /> 
<input type="submit" value="Add"> 
</form> 

還可以使用$ _POST,或者你甚至可以用$ _REQUEST(你可以使用GET和POST變量$ _REQUEST)

+0

似乎有關於HTML的一些混淆,我已經添加了整個HTML代碼 – Noosrep