从变量,如果输入字段不完全删除数据 - PHP [英] Removing Data from Variable if Input Fields incomplete - PHP

查看:99
本文介绍了从变量,如果输入字段不完全删除数据 - 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆