从变量,如果输入字段不完全删除数据 - PHP [英] Removing Data from Variable if Input Fields incomplete - PHP
问题描述
我有2套4输入字段的在我的HTML表单。我希望,最终有超过20套但在这个例子中只提供了2
I have 2 sets of 4 input fields in my HTML Form. I expect to eventually have over 20 sets but have provided just 2 for this example.
是否有可能如果一个字段的集是不完整的,我可以只的删除行的从我得到的所有$变量。因此,而不是具有数据行| | | |这纯粹是完全空白的。
Is it possible if a "set" of fields is incomplete that I can just remove that row from my resultant $all variable. So instead of having a row with the data '| | | |' it would just be completely blank.
这将只是帮助干净的东西了。
It would just help clean things up.
这将是很容易实现的?
下面是我当前的 stuff.php 的我用来测试脚本。
Here is my current stuff.php script I'm using to test.
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php
if (isset($_POST['sendform'])) {
$ierrors = array();
$all = '';
// Loop over the values 1 through 2
foreach( range( 1, 2) as $i)
{
// Create an array that stores all of the values for the current number
$values = array(
'p' . $i . 'height' => $_POST['p' . $i . 'height'],
'p' . $i . 'width' => $_POST['p' . $i . 'width'],
'p' . $i . 'length' => $_POST['p' . $i . 'length'],
'p' . $i . 'weight' => $_POST['p' . $i . 'weight']
);
// Validate every value
foreach( $values as $key => $value)
{
if( empty( $value))
{
$ierrors[] = "Value $key is not set";
}
// You can add more validation in here, such as:
if( !is_numeric( $value))
{
$ierrors[] = "Value $key contains an invalid value '$value'";
}
}
// Join all of the values together to produce the desired output
$all .= implode( '|', $values) . "\n\n";
}
var_dump($all);
}
?>
<form action="stuff.php" method="post">
<div id="npup0" class="hidden">
<div class="parcel-group">
<div class="parcel-title">
<label for="p1weight">Parcel 1</label>
</div>
<div class="minis weight">
<input type="text" id="p1weight" name="p1weight" value="<?php if ((isset($_POST['sendform'])) && (!empty($_POST['p1weight']))) { echo htmlspecialchars($_POST['p1weight']); } ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
</div>
<div class="minis length">
<input type="text" id="p1length" name="p1length" value="<?php if ((isset($_POST['sendform'])) && (!empty($_POST['p1length']))) { echo htmlspecialchars($_POST['p1length']); } ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
</div>
<div class="minis width">
<input type="text" id="p1width" name="p1width" value="<?php if ((isset($_POST['sendform'])) && (!empty($_POST['p1width']))) { echo htmlspecialchars($_POST['p1width']); } ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
</div>
<div class="minis height">
<input type="text" id="p1height" name="p1height" value="<?php if ((isset($_POST['sendform'])) && (!empty($_POST['p1height']))) { echo htmlspecialchars($_POST['p1height']); } ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
</div>
</div>
</div>
<div id="npup1" class="hidden">
<div class="parcel-group">
<div class="parcel-title">
<label for="p1weight">Parcel 2</label>
</div>
<div class="minis weight">
<input type="text" id="p2weight" name="p2weight" value="<?php if ((isset($_POST['sendform'])) && (!empty($_POST['p2weight']))) { echo htmlspecialchars($_POST['p2weight']); } ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
</div>
<div class="minis length">
<input type="text" id="p2length" name="p2length" value="<?php if ((isset($_POST['sendform'])) && (!empty($_POST['p2length']))) { echo htmlspecialchars($_POST['p2length']); } ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
</div>
<div class="minis width">
<input type="text" id="p2width" name="p2width" value="<?php if ((isset($_POST['sendform'])) && (!empty($_POST['p2width']))) { echo htmlspecialchars($_POST['p2width']); } ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
</div>
<div class="minis height">
<input type="text" id="p2height" name="p2height" value="<?php if ((isset($_POST['sendform'])) && (!empty($_POST['p2height']))) { echo htmlspecialchars($_POST['p2height']); } ?>" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
</div>
</div>
</div>
<p><input type="submit" value="click me" id="sendform" name="sendform" /></p>
</form>
</body>
</html>
对于任何指针非常感谢。这个已经挣扎了一段时间了。
Many thanks for any pointers. Been struggling with this for a while now.
推荐答案
是的,提供了一个条件,只有会连接 $值
与 $所有
只要 $值
不是空的。
Yes, provide a condition that only concatenates $values
with $all
as long as $values
isn't empty.
// Assume all values are empty.
$allEmpty = true;
// Validate every value
foreach( $values as $key => $value)
{
if( empty($value))
$ierrors[] = "Value $key is not set";
else
$allEmpty = false;
// You can add more validation in here, such as:
if( !is_numeric( $value) )
$ierrors[] = "Value $key contains an invalid value '$value'";
}
// Join all of the values together to produce the desired output
if (!$allEmpty)
$all .= implode( '|', $values) . "\n\n";
这篇关于从变量,如果输入字段不完全删除数据 - PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!