dp926460 2012-03-10 06:15
浏览 35
已采纳

如果输入字段不完整,则从变量中删除数据 - PHP

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.

Would this be easy enough to achieve?

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) . "

";
    }   

    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.

  • 写回答

1条回答 默认 最新

  • dongwuli5105 2012-03-10 06:27
    关注

    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) . "
    
    ";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置