所以我有一个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中吗?
答案 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'] );
?>