2015-03-03 112 views
-1

我遇到了一些問題,正如你們在我的代碼中看到的,我得到了一個foreach循環顯示所有圖像的img文件夾,以及我忽略了正確的樣式因爲問題是每個圖像內部的形式。

我需要從無線電輸入中獲取值,所以我可以告訴我的其他腳本從數據庫中選擇ID與輸入具有相同值的所有信息。

我需要一個if語句,這樣如果沒有設置,我可以顯示一些內容,說明您需要選擇收音機,然後才能收聽任何電臺。

但我的if語句一直顯示「錯誤」,甚至儘管我按一下按鈕

我希望有人可以幫助我了:)

if(isset($_POST['submitRadio')): 
    $test = $_POST['radio']; 
    echo $test; 
else: 
    echo 'error'; 
endif; 

foreach(glob('img/radios/big/*.png') as path): 
    printf(' 
     <form method="post"> 
      <input class="hidden" type="text" name="radio" value="1"> 
      <input type="submit" name="submitRadio" value="Go!"> 
     </form> 
    '); 
endforeach; 

做什麼GolezTrol告訴我這樣做後:

<div class="row text-center"> 
       <?php 
       $sql = "SELECT * FROM radio"; 

       $stmt = $Db->dbh->prepare($sql); 
       $stmt->execute(); 

       $result = $stmt->fetchAll(); 

       if(isset($_POST['submitRadio'])): 
        $test = $_POST['submitRadio']; 
        echo $test; 
       else: 
        echo 'error'; 
       endif; 

       ?> 

       <form method="post"> 

       <? 
       foreach($result as $radio): 

        printf(' 

        <button type="submit" 
          name="submitRadio" 
          value="'.$radio['id'].'"> 
        Go! 
        </button> 

        '); 
       ?> 

       </form> 
+0

做的var_dump($ _ POST),看看有什麼正在從形式 – Kamran 2015-03-03 11:30:44

+2

HTML表單基礎知識101發佈:只提交的數據中包含_checked_單選按鈕。你沒有被檢查 - 所以沒有名稱=值對發送給他們。 – CBroe 2015-03-03 11:41:37

回答

2

我已經打消了我之前的解決方案。我只是看到你沒有真正的單選按鈕,但隱藏的元素,所以基本上按鈕是無線電。 這改變了一點,因爲你實際上有我早先提出的替代建議:按鈕本身作爲單選按鈕,立即張貼選定的選項。

要解決您的問題,您可以使用button而不是input來提交表單。在一個按鈕中,你可以使標題和值相互不同,所以你可以把id(或文件名,或任何你需要的)放在按鈕的值中,根本不需要隱藏的輸入。按鈕標籤的內容是它得到的標題,所以代碼可以是這樣的:

if(isset($_POST['selectedFile')): 
    $test = $_POST['selectedFile']; 
    echo $test; 
else: 
    echo 'error'; 
endif; 

?><form method="post"><? // Open the form outside of the loop 

foreach(glob('img/radios/big/*.png') as path): 
    // Not sure what you want to do here. Put the filename instead of 
    // "1" in the value? 
    $filename = basename($path, '.png'); 
    ?> 
     <button type="submit" 
       name="selectedFile" 
       value="<?=$filename?>"> 
     Go! 
     </button> 
    <? 
endforeach; 

?></form><? // Close the form 

在這個例子中,我拉了形式的標籤圈外的,因爲嚴格,你只需要一個形式。但是由於現在根本沒有單選按鈕,所以每個按鈕也可以有一個表單。它仍然有效。

順便說一句,我看到你在你的評論中提到了一個數據庫。當然,我沒有考慮到這一點,因爲你在問題中沒有提到這一點。無論如何,它不應該改變基本概念,只有'價值'的確定方式。

+0

虐待現在就去,順便說一句,我需要把我的腳本放在窗體或以上的表單或不重要嗎? – 2015-03-03 11:40:01

+0

你的意思是'如果'檢查?沒關係,儘管我可以想象,如果發佈某個值,您根本不想顯示該表單。在這種情況下,我會在上面說,所以你可以跳過生成表單。 – GolezTrol 2015-03-03 11:42:22

+0

好吧,你正在處理文件名,但即時通訊要與數據庫和身份證的工作,我會foreach整個數據庫,生病得到我的數據庫首先我想:) – 2015-03-03 11:43:37

0

首先,無線電標籤中的值代碼始終爲1.所以,如果選擇了任何單選按鈕,您總是會得到1.相反,值從句應該有文件名。所以你會知道選擇了哪個圖像(單選按鈕)。

對於沒有選擇的圖像(單選按鈕),你可以使用在上面

if (!isset($_POST['radio']))<br>{<br>//php code }