2012-08-13 69 views
1

我希望這是一件簡單的事情,我失蹤或做得不對。PHP窗體值提交查詢

它涉及從窗體上的1個提交按鈕發佈兩個結果。

不發送代碼的質量,這裏的癥結: (這是在一個表中的一系列提交按鈕)

<td><input type=\"hidden\" name=\"query\" value=\"$query1\"><input type=\"submit\"  name=\"Submitano\" value='$aa'></td> 
<td><input type=\"hidden\" name=\"query\" value=\"$query2\"><input type=\"submit\" name=\"Submitano\" value='$ab'></td> 
<td><input type=\"hidden\" name=\"query\" value=\"$query3\"><input type=\"submit\" name=\"Submitano\" value='$ac'></td> 

那麼其他的結果頁面上使用:

$s1=$_POST['Submitano'].$_POST['query']; 

問題是,當我點擊相關的提交按鈕時,它通過選擇的正確的POST ['Submit'](即$ aa或$ ac),但它始終通過最後一個查詢 - $ query3而不是查詢附加到提交。 (即$ aa應該通過$ query1,但它通過$ query3拉動)

我懷疑它與我單擊提交時有關,它提交['Submit']而不是['query' ],所以下一頁只是簡單地提取最後一次輸入的查詢。如果是這樣,任何人都可以建議如何通過1提交兩位數據(一個隱藏,一個可見)?

希望這是有道理的。

感謝

保羅


感謝所有的意見。這就是我想要做的,但也許我應該以完全不同的方式做到這一點?

屏幕1 - 3 - 用戶選擇一個變量,它被傳遞到屏幕4.

屏幕4在每一頁上 - 上述3個變量被讀出並饋送到25預先設定的Mysql查詢和運行(即查詢1,查詢2等),但每個查詢都有一個稍微不同的元素,從而得到25個不同的答案。

這些25個查詢的結果被存儲在25個變量$ AA,AB $等

甲形式設置,其顯示這些25個查詢的結果,與正在顯示在提交按鈕每個答案。 (也就是說,在我編碼'Value = $ aa'的位置,用戶可以看到該查詢的答案,即'73',然後點擊它)。

(用戶基本需要看到25個不同的答案,根據他們在第3頁的選擇,然後選擇他們想要更多地瞭解答案。)

頁5 - 本頁面需要知道什麼用戶點擊按鈕,但更重要的是他們選擇了哪個查詢,但是我的問題是它只通過值來饋送,而不是前面的查詢生成該值。

關於命名每一個不同,我試過,但它是如何拿起它在第5頁這就是問題。我認爲我需要25個預設$ _POST的?問題在於它不喜歡其他24個未使用的$ _POST。我甚至試圖把它們放在elseif循環中,但沒有快樂。

但是,在某種程度上,這個解決方案的確存在嗎?

此外,有幾個人提出了一個數組,但由於我對陣列不太熱,我不知道他們將如何解決這個問題?

如果數組是答案,關於設置的更多信息,或者更具體地說,我如何在第5頁上拔出正確的信息會很好?

再次感謝。

Paul

+0

請勿爲您的表單使用此類抽象名稱和值。很難理解這種方式是什麼。 – Sgarz 2012-08-13 23:17:08

回答

3

它們不應該有相同的名稱。由於它們的形式相同,最後一個值會覆蓋其他值。

如果你只有這六個項目,你也可以用三種不同的形式對它們進行包裝,以使其工作。

+0

@asprin:你爲什麼編輯我的答案?關於形式的事情是錯的嗎? – 2012-08-13 23:35:19

+0

沒有。使其在語法上正確。 – asprin 2012-08-14 05:48:04

+0

通過接受它,它被刪除。儘管如此,感謝您的語法更正。不幸的是我的英文不是最好的。 – 2012-08-14 09:26:33

0

名稱應該是唯一的。由於所有隱藏的輸入都被命名爲「查詢」,因此只提交最後一個輸入。

+0

謝謝。根據其他意見,我添加了更多細節。 (作爲答案添加爲評論框太小) – user1596695 2012-08-14 15:40:58

0

您的表單項具有相同的名稱。這將意味着他們的價值觀有效地「相互覆蓋」。根據瀏覽器的不同,第一個或最後一個值將被髮送到您的頁面。

要解決它,你可以:

1)給他們不同的名字。

<input type=\"submit\" name=\"Submitano1\" value='$aa'> 
<input type=\"submit\" name=\"Submitano2\" value='$aa'> 
<input type=\"submit\" name=\"Submitano3\" value='$aa'> 

2)將它們命名爲數組。

<input type=\"submit\" name=\"Submitano[]\" value='$aa'> 
<input type=\"submit\" name=\"Submitano[]\" value='$aa'> 
<input type=\"submit\" name=\"Submitano[]\" value='$aa'> 

第二個選項將允許您訪問$ _POST [「Submitano」] [0](以及圖1和2),這將把所有的Submitano項到一個數組。如果您使用大量這些項目,則第二種方法將更有幫助。

有關您正在做什麼的更多信息將有助於在需要時提供更具體的建議。

+0

謝謝。根據其他意見,我添加了更多細節。 (作爲答案添加爲評論框太小) – user1596695 2012-08-14 15:40:02

0

您應該爲一個數組形式的元素:

<input type="text" name="query[]" value="whatever" /> 

同樣是提交按鈕比下一個頁面上使用相同的索引的情況。

編輯:如果您的要求是從多個屏幕收集數據,我建議您使用$_SESSION變量。 http://php.net/manual/en/book.session.php

+0

謝謝。根據其他意見,我添加了更多細節。(添加爲一個答案,評論框太小) – user1596695 2012-08-14 15:40:32

+0

閱讀我的回答現在 – 2012-08-15 03:50:57

+0

感謝穆罕默德 該網頁,一些東西,一個人在另一個論壇有關我已經成功地得到它的工作陣列之間建議。 非常感謝! Paul – user1596695 2012-08-15 15:50:48