2015-03-03 107 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 }