PHP - 将多个文本框值的文本值添加到数据库

时间:2012-07-03 12:44:59

标签: php

基本上我想将以下信息添加到单个数据库字段中(txt-via-hn文本框是门牌号,txt-via是地址详细信息)

$vias =         $_POST['txt-via-hn2'].' '.$_POST['txt-via2'] 
        .' -> '.$_POST['txt-via-hn3'].' '.$_POST['txt-via3']
        .' -> '.$_POST['txt-via-hn4'].' '.$_POST['txt-via4']
        .' -> '.$_POST['txt-via-hn5'].' '.$_POST['txt-via5']
        .' -> '.$_POST['txt-via-hn6'].' '.$_POST['txt-via6']
        .' -> '.$_POST['txt-via-hn7'].' '.$_POST['txt-via7']
        .' -> '.$_POST['txt-via-hn8'].' '.$_POST['txt-via8']
        .' -> '.$_POST['txt-via-hn9'].' '.$_POST['txt-via9']
        .' -> '.$_POST['txt-via-hn10'].' '.$_POST['txt-via10'];

目前,例如,如果我要输入两个过孔,则会将以下内容添加到数据库字段中:

HOUSENUMBER ADDRESS -> HOUSENUMBER ADDRESS -> -> -> -> -> -> ->

我想要发生的是,如果文本框值为空,则不包括末尾的空格。因此,如果我只输入两个过孔,则只会添加以下内容:

HOUSENUMBER ADDRESS -> HOUSENUMBER ADDRESS

这可能吗?

2 个答案:

答案 0 :(得分:2)

将它们全部添加到数组中,对它们运行array_map()array_filter()以删除空元素,然后implode()它们,如下所示:

$array = array();
foreach( range( 2, 10) as $i) {
    $array[] = $_POST['txt-via-hn' . $i] . ' ' . $_POST['txt-via' . $i];
}
$vias = implode( ' -> ', array_filter( array_map( 'trim', $array)));

您甚至可以检查循环中的空值,并省略对array_filter()的调用,如下所示:

$array = array();
foreach( range( 2, 10) as $i) {
    if( !empty( $_POST['txt-via-hn' . $i]) && !empty( $_POST['txt-via' . $i])) 
        $array[] = $_POST['txt-via-hn' . $i] . ' ' . $_POST['txt-via' . $i];
}
$vias = implode( ' -> ', $array);

请注意,如果您在$_POST内尝试访问未定义的索引,则这两种方法都会产生通知。要解决此问题,请在尝试从isset()读取之前致电$_POST以确保密钥已设置。

答案 1 :(得分:0)

for($i = 2; $i <= 10; $i++)
{
    if(strlen($_POST['txt-via2']))
        $array[] = $_POST['txt-via-hn'.$i] . ' ' .  $_POST['txt-via'.$i];
}

$vias = join("->", $array);