php表单将布尔单选按钮值呈现为“on”`
所以我有一个html.php页面,它有三个按钮:“清除页面”、“检索”和“更新详细信息” 当用户第一次打开表单时,表单为空,他们可以输入id=“siteId”值或id=“siteName”值,然后按“检索”按钮,从mySQL数据库请求存储站点的其余详细信息,并在表单中显示 如果用户想要更改/更新任何详细信息,他们可以以相同的形式进行更改/更新,然后单击“更新详细信息”按钮将站点的详细信息推回数据库 到目前为止一切(有些)都很好。但是,当成功显示站点的详细信息后(从数据库检索站点的详细信息后)单击“更新详细信息”按钮时,任何由单选按钮表示的布尔数据将返回为php表单将布尔单选按钮值呈现为“on”`,php,html,radio-button,Php,Html,Radio Button,所以我有一个html.php页面,它有三个按钮:“清除页面”、“检索”和“更新详细信息” 当用户第一次打开表单时,表单为空,他们可以输入id=“siteId”值或id=“siteName”值,然后按“检索”按钮,从mySQL数据库请求存储站点的其余详细信息,并在表单中显示 如果用户想要更改/更新任何详细信息,他们可以以相同的形式进行更改/更新,然后单击“更新详细信息”按钮将站点的详细信息推回数据库 到目前为止一切(有些)都很好。但是,当成功显示站点的详细信息后(从数据库检索站点的详细信息后)单击
on
,使用print\r
在当前值数组上观察
对于每个单选按钮,php条件与html内联使用,以确定在从数据库检索数据后,应为每行/字段选中哪个单选按钮。这是否就是为什么当按下更新按钮时,表单会以某种方式为所有单选按钮设置一个on
值,而不是之前确定的布尔值
如果是这样的话,由于我需要通过条件来检查任何给定集合的哪个单选按钮需要被选中,那么修复方法可能是什么
html.php页面的片段:
} // 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 -->
print\r
输出首先显示用户按下检索按钮后显示的布尔单选按钮值:
Array ( [0] => P6969 [1] => Toledo Centre [2] => 1 [3] => 1 [4] => hspa-lte
print\r
输出,显示用户按下更新详细信息按钮后相同站点详细信息的单选按钮值:
Array ( [0] => P6969 [1] => Toledo Centre [2] => 1 [3] => 1 [4] => on )
编辑:
我将从DB检索到的每个字段输入值分配给一个PHP$\u会话变量,当单击更新详细信息按钮时,引用了$\u会话变量,这解决了单选按钮在上被分配的原始问题 但我仍然无法保存用户可能对详细信息所做的任何更改。我已经研究了JS/AJAX作为实现这一点的一种可能的方法,但是我所知道的很少的JS使我变得更危险、更有用。以下是我在阅读多个类似问题时能够拼凑起来的内容:
<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>
但显然不是。是否确实有一种方法可以访问我认为现在必须存储在ajax.PHP中的更改后的PHP变量?尝试为每个输入复选框分配一个
值=
属性,例如,您编写的代码将是:
<input type="radio" name="extAlarmsTerminated" value='HSPA'
...
<input type="radio" name="extAlarmsTerminated" value='lte'
...
<input type="radio" name="extAlarmsTerminated" value='HSPA-lte'
P6969[siteName]=>Toledo中心[Numhsapabbu]=>1[numLteBbu]=>1[extAlarmsTerminated]=>HSPA lte)
我想我可以通过以下方式访问此更改后的$siteName值:
$siteName = $_GET[ 'siteName' ];
$siteName=$\u GET['siteName'];
但显然不是。
是否确实有一种方法可以访问我认为现在必须存储在ajax.PHP中的这个更改后的PHP变量
首先,您使用的是POST not GET方法,所以您应该查找$\u POST['siteName']
第二,如果您试图确保传递了正确的值,那么请在表单
中对此进行更改。如果您希望它不是“on”,那么还需要在复选框上设置“value”属性。代码无法猜测值应该是什么。我不能再次从DB重置值,否则会否定用户对任何更改值的任何更改。也许我需要使用javascript来获取元素的当前值?您有多个复选框,它们的名称相同,但没有值,您希望它如何工作?如果没有值,您如何知道哪些复选框被选中,哪些复选框没有被选中,以及它们应该包含哪些值?我可以使用$\u SESSIONS
保存和检索输入字段的值,但是我仍然面临提取用户更改的更改值的问题。
$siteName = $_GET[ 'siteName' ];
<input type="radio" name="extAlarmsTerminated" value='HSPA'
...
<input type="radio" name="extAlarmsTerminated" value='lte'
...
<input type="radio" name="extAlarmsTerminated" value='HSPA-lte'