2012-07-03 67 views
0

基本上我想添加以下信息到单个数据库字段,(txt-via-hn文本框是房屋号码,txt-via是地址详细信息)PHP - 将多个文本框值的文本值添加到数据库

$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

他们都加入到一个数组,运行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访问索引两种方法将产生通知。要解决此问题,请在尝试从$_POST读取以确保密钥已设置之前,请致电isset()

+0

图例,非常感谢:) – nsilva

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); 
相关问题