html.php表单将布尔单选按钮值呈现为“on”

时间:2017-03-19 10:29:54

标签: php html radio-button

所以我有一个html.php页面,它有三个按钮:“清除页面”,“检索”和“更新详细信息。”

当用户首次打开表单时,它是空白的,他们可以输入id =“siteId”值或id =“siteName”值,然后按“检索”按钮以请求存储网站的其余部分详细信息从mySQL数据库中显示并显示在表单中。

如果用户想要更改/更新任何详细信息,可以使用相同的表单进行更改/更新,然后单击“更新详细信息”按钮将网站的详细信息推送回数据库。

到目前为止,所有(有点)都是好的。但是,在成功显示网站的详细信息后(在从数据库中检索到网站的详细信息之后)单击“更新详细信息”按钮时,单选按钮表示的任何布尔数据都将返回为on,使用{{ 1}}在当前值的数组上。

对于每个单选按钮,php条件与html内联使用,以确定从数据库中检索数据后每个行/字段应该print_r的单选按钮。这可能就是为什么当按下更新按钮而不是先前确定的布尔值时,表单以某种方式为所有单选按钮设置值checked

如果是这样,可能会有什么问题,因为我需要通过条件检查任何给定集合的单选按钮需要on

html.php网页摘录:

checked

var $ extAlarmsTerminated是以下网站详细信息数组中的一个此类单选按钮组:

  } // close isset IF

?>

  <h1 id="heading">Cell Site Details</h1>


  <!--fieldset id="Site:"-->
    <!--legend>Site:</legend-->
    <div id="formContentDiv">
      <form id="formContent" action="#" method="post" accept-charset="utf-8">
        <input type="hidden" name="submitted" value="true">
        <div id="clearPageDiv">
          <a href="index2.php">
              <input type="button" id="buttonClear" name="clearPage" class="button" value="Clear Page">
            </a>
        </div><!-- closes clearPageDiv -->
        <div id="retreiveDiv">
          <input type="submit" id="buttonRetreive" name="retreive" class="button" value="Retreive">
        </div><!-- closes retreiveDiv -->
        <div id="updateDiv">
          <input type="submit" id="buttonUpdate" name="update" class="button" value="Update Details">
        </div><!-- closes updateDiv -->

        <div class="formRowDiv">
          <label>
            <span>Site Id:</span>
            <input type="text" id="siteId" name="siteId" class="textInputShort" maxlength="" $value=""> 
            <script>
              siteId.value = <?php echo json_encode( ucfirst( $siteId ) ); ?>;
            </script>
          </label>
        </div>

        <div class="formRowDiv">
          <label>
            <span>Site Name:</span>
            <input type="text" id="siteName" name="siteName" class="textInput" maxlength="" $value="test"> 
            <!--input type="submit" value="Retreive"-->
            <script>
              siteName.value = <?php echo json_encode( ucwords( $siteName ) ); ?>;
            </script>
          </label>
        </div>

        <div class="formRowDiv">
          <label>
            <span># HSPA BBUs:</span>
            <input type="text" id="numHspaBbu" name="numHspaBbu" class="textInputShort" maxlength="" $value=""> 
            <script>
              numHspaBbu.value = <?php echo json_encode( $numHspaBbu ); ?>;
            </script>
          </label>
        </div>

        <div class="formRowDiv">
          <label>
            <span># LTE BBUs:</span>
            <input type="text" id="numLteBbu" name="numLteBbu" class="textInputShort" maxlength="" $value=""> 
            <script>
              numLteBbu.value = <?php echo json_encode( $numLteBbu ); ?>;
            </script>
          </label>
        </div>

        <div class="formRowDiv">
          <label><span>Ext. Alarm Terminations:</span></label>
            <label>
              <input type="radio" name="extAlarmsTerminated"
                <?php
                  if ( $extAlarmsTerminated == "hspa" ) {
                    echo 'checked';
                  }
                ?>
              >
              <span>HSPA</span>
            </label>
            <label>
              <input type="radio" name="extAlarmsTerminated"
                <?php
                  if ( $extAlarmsTerminated == "lte" ) {
                    echo 'checked';
                  }
                ?>
              >
              <span>LTE</span>
            </label>
            <label>
              <input type="radio" name="extAlarmsTerminated"
                <?php
                  if ( $extAlarmsTerminated == "hspa-lte" ) {
                    echo 'checked';
                  }
                ?>
              >
              <span>HSPA-and-LTE</span>
            </label>
          </label>
        </div><!-- close formRowDiv -->

$inputVals = array( $siteId, $siteName, $numHspaBbu, $numLteBbu, $extAlarmsTerminated ); print_r( $inputVals ); 输出首先显示,用户按下Retrieval按钮后显示的布尔单选按钮值:

print_r
用户按下“更新详细信息”按钮后,

Array ( [0] => P6969 [1] => Toledo Centre [2] => 1 [3] => 1 [4] => hspa-lte 输出显示相同站点详细信息的单选按钮值:

print_r

修改
我将从数据库中检索到的每个字段输入值分配给PHP $ _SESSION var,并且当单击“更新详细信息”按钮时,将引用$ _SESSION变量,这解决了单元格按钮被绑定的原始问题{{1} }。

但我仍然无法保存用户可能进行的细节更改。我已经研究过JS / AJAX作为实现这个目标的可能方法,但是我知道的那个JS很少让我更加危险。以下是我能够拼凑阅读多个类似问题的内容:

Array ( [0] => P6969 [1] => Toledo Centre [2] => 1 [3] => 1 [4] => on )

好消息是当我的字段输入值被更改时,我得到JS警报回显$ siteName的更改值。我创建了在同一个dir中引用的ajax.php文件,它包含:

on

我以为我可以通过以下方式访问此更改的$ siteName值:

<div class="formRowDiv">
      <label>
        <span>Site Name:</span>
        <input type="text" id="siteName" name="siteName" class="textInput" maxlength="" $value="test"> 
        <script>
          siteName.value = <?php echo json_encode( ucwords( $siteName ) ); ?>;
        </script>
      </label>
    </div>
    <script>
      $( document ).ready( function() {
        $( "#siteName" ).on( 'change', function() {
          var siteName = document.getElementById( 'siteName' ).value;
          $.ajax ({
            url: 'ajax.php',
            data: { siteName : siteName },
            success: function( result ) {
              alert( 'Site Name value changed to: ' + siteName );
            }
          });
        });
      });
    </script>

但显然不是。确实有办法访问这个已更改的PHP var,我认为它现在必须存储在ajax.php中吗?

1 个答案:

答案 0 :(得分:0)

尝试为每个输入复选框分配value=属性,例如您的代码为:

<input type="radio" name="extAlarmsTerminated" value='HSPA'
    ...
<input type="radio" name="extAlarmsTerminated" value='lte'
    ...
<input type="radio" name="extAlarmsTerminated" value='HSPA-lte'

结果:print_r($_POST)输出:

Array ( [submitted] => true [update] => Update Details [siteId] => P6969 [siteName] => Toledo Centre [numHspaBbu] => 1 [numLteBbu] => 1 [extAlarmsTerminated] => HSPA-lte )

  

我以为我可以通过以下方式访问此更改的$ siteName值:

     

$ siteName = $ _GET ['siteName'];   但显然不是。   确实有办法访问这个已更改的PHP var,我认为它现在必须存储在ajax.php中吗?

首先,你使用POST而不是GET方法,所以你应该寻找$ _POST ['siteName']

其次,如果您要确保传递正确的值,请在表单<form id="formContent" action="#" method="post" ...

中更改此值

通过  <form id="formContent" action="test.php" method="post" ... test.php包含:

<?php echo ( $_POST['siteName'] ); ?>