2012-07-03 5 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

은과 같이, implode()에게 다음, 비어있는 요소를 제거하는 array_map()과 그들에 array_filter()을 실행 배열로 그들 모두를 추가

$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()에 전화를 생략 : 당신이 정의되지 않은 경우 $_POST 내에서 인덱스에 액세스하려고하면 두 가지 접근 방식이 통지를 얻을 것입니다

$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()으로 전화하여 키가 설정되어 있는지 확인하십시오.

+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); 
관련 문제