【问题标题】:Getting the value of a checked radio PHP获取选中的电台 PHP 的值
【发布时间】:2015-12-05 03:13:55
【问题描述】:

以下代码是我正在使用的代码:

<form action="sendinfo.php" method="post" id="form">
                -Title:<br>
                <input type="text" class="u-full-width" name="title" placeholder="Insert a title" >
                <br>-Date<br>
                <input class="u-full-width" type="text" name="date" placeholder="Click to add a date"><hr>
                <br>-Buildyear:<br>
                <input class="u-full-width" type="text" name="buildyear" placeholder="click to add buildyear">

                <br>-rebuild<br>
                <input id="1" type="radio" name="rebuildyes" value="yes"><label for="1">tes</label>
                <input id="2" type="radio" name="rebuildno" value="No"><label for="2">No</label><hr>

                <input type="submit" value="send" class="u-full-width">
</form>

另一个代码是:

 <?php
        //variables
            $title = $_POST['title'];
            $date = $_POST['date'];
            $buildyear = $_POST['buildyear']; 
            $rebuildyes = $_POST['rebuildyes'];
            $rebuildno = $_POST['rebuildno'];

        //in browser 
            echo "<h1>The inserted data has been locally stored as " . $title . " " . $date . ".txt</h1>";
            echo "<p>click <a href='index.html'>Here</a> to return to the previous screen</p>";



        //write text file.
            $file = fopen($title . " " . $date . ".txt","w");
            if ($date) fwrite($file, "Date: " . $date . "\r\n");
            fwrite($file, "\r\n");
            if ($buildyear) fwrite($file, "Buildyear: " . $buildyear . "\r\n");
            if ($rebuildyes) fwrite($file, "Rebuild? " . $rebuildyes . "\r\n");
            if ($rebuildno) fwrite($file, "Rebuild? " . $rebuildno . "\r\n");

    ?>

此代码的结果是一个生成的文本文件,其中数据填写在第一页给出的表格中。这里的问题是我无法让单选按钮工作,至少我无法从中获取数据。当它们为空时,不应将它们写在文件中,当它们被选中时,它们应该是。

另外,请不要告诉我这是一种危险的 PHP 编码方式,因为我知道它让用户可以在 PHP 可以访问的任何地方进行编写,但是这个“项目”只能供少数人使用,并且实际上不会托管在服务器上。话虽这么说,如果你有更好的方法让我构建这个项目,而不是风险明智,只是 PHP 明智,请告诉我,因为我刚刚开始编写 PHP。

谢谢

【问题讨论】:

    标签: php html forms get radio-button


    【解决方案1】:

    这是我测试的代码,文件写入正确,“rebuild”的值也正确:

    <form action="sendinfo.php" method="post" id="form">
        -Title:<br>
        <input type="text" class="u-full-width" name="title" placeholder="Insert a title" >
        <br>-Date<br>
        <input class="u-full-width" type="text" name="date" placeholder="Click to add a date"><hr>
        <br>-Buildyear:<br>
        <input class="u-full-width" type="text" name="buildyear" placeholder="click to add buildyear">
    
        <br>-rebuild<br>
        <input id="1" type="radio" name="rebuild" value="yes"><label for="1">Yes</label>
        <input id="2" type="radio" name="rebuild" value="no"><label for="2">No</label><hr>
    
        <input type="submit" value="send" class="u-full-width">
    </form>
    

    PHP:

    <?php
        //variables
        $title = $_POST['title'];
        $date = $_POST['date'];
        $buildyear = $_POST['buildyear']; 
    
        //in browser 
        echo "<h1>The inserted data has been locally stored as " . $title . " " . $date . ".txt</h1>";
        echo "<p>click <a href='index.html'>Here</a> to return to the previous screen</p>";
    
        //write text file.
        $file = fopen($title . " " . $date . ".txt","w");
        if ($date) fwrite($file, "Date: " . $date . "\r\n");
        fwrite($file, "\r\n");
        if ($buildyear) fwrite($file, "Buildyear: " . $buildyear . "\r\n");
        if (isset($_POST['rebuild']) && $_POST['rebuild'] == 'yes') { 
            fwrite($file, "rebuild? yes \r\n");
        } 
        elseif (isset($_POST['rebuild']) && $_POST['rebuild'] == 'no') { 
            fwrite($file, "rebuild? no \r\n"); 
        }
    
        fclose($file);
    ?>
    

    【讨论】:

      【解决方案2】:
      <input type="radio" name="rebuild" value="yes"><label>Yes</label>
      <input type="radio" name="rebuild" value="No"><label>No</label>
      
      and get the value using 
      
      if(isset($_POST['submit'])){
          echo    $rebuild  = $_POST['rebuild'];
          die;
      }
      

      【讨论】:

      • 不幸的是,这个不起作用。我收到以下错误:注意:未定义的索引:在第 16 行的 C:\wamp\www\sendinfo.php 中重建
      • name="rebuild",rebuild是你输入框的名字。
      【解决方案3】:

      将您的单选按钮设为一个组:

      <input id="1" type="radio" name="rebuild" value="yes"><label for="1">tes</label>
      <input id="2" type="radio" name="rebuild" value="no"><label for="2">No</label><hr>
      

      然后,检查用户是否选择了“是”值:

      if (isset($_POST['rebuild']) && $_POST['rebuild'] == 'yes') {
          // YOUR CODE
      }
      

      【讨论】:

      • 执行了以下操作: if (isset($_POST['rebuild']) && $_POST['rebuild'] == 'yes') { fwrite($file, "rebuild? yes \r \n"); } else { fwrite($file, "重建?没有 \r\n"); } 输出总是没有。
      • 我在 PHPFiddle 上测试过,它似乎可以工作:phpfiddle.org/main/code/b7r8-2hpt
      • 您现在可以在其中使用 else 标记而不是检查值添加 fwrite 行。看看这是否有效,我自己不能让它工作。
      • 我设法让它工作;必须为 no radiobox 添加另一个 if isset 非常感谢!
      • 别忘了使用 fclose($file);毕竟你的内容都写好了。为了以防万一,我将代码发布在另一个答案中。
      猜你喜欢
      • 2011-01-09
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多