2014-11-25 1 views
0

SQL 결과를 테이블로 표시 할 페이지가 있습니다. 모든 옵션이 기본값으로 선택되도록합니다. 그러나 사용자가 일부 위치의 선택을 취소하고 양식을 제출하면 모든 확인란이 계속 선택되어 있기 때문에 필터링중인 위치를 알 수 없습니다. 양식을 제출 한 후 검사 된 확인란 만 값을 유지하도록하려면 어떻게해야합니까?양식 제출 후 확인란을 계속 유지하십시오.

<?php 

    $start=_GET['start']; 
    $end=_GET['end']; 

    if(empty($start)){ 
     $start=date("Ym"); 
    } 
    if(empty($end)){ 
    $end=date("Ym"); 
} 


$places=array(); 
if(!empty($_GET['cities'])){ 
    foreach($_GET['cities'] as $loc){ 
    array_push($places,$loc); 
    } 
}else{ 
    $places=('CHI','DET','LA','NYC','DALLAS','SPR','PHI'); 
} 

?> 

//html 
<form method='GET'> 
    START:<input type='text' name='start' value= '<?$start?>'> 
    END: <input type='text' name='end' value='<?$end?>'> 
<input type='checkbox' name='cities[]' value='CHI' checked>CHICAGO 
<input type='checkbox' name='cities[]' value='DET' checked>DETROIT 
<input type='checkbox' name='cities[]' value='LA' checked>LAS ANGELES 
<input type='checkbox' name='cities[]' value='NYC' checked>NEW YORK 
<input type='checkbox' name='cities[]' value='DALLAS' checked>DALLAS 
<input type='checkbox' name='cities[]' value='SPR' checked>SPRINGFIELD 
<input type='checkbox' name='cities[]' value='PHI' checked>PHILIDELPHIA 
<input type='submit' value='Filter'> 
</form> 

<? 
$SQL="SELECT NAME, 
    ID, 
    PHONE, 
    EMAIL, 
    EVENT, 
    LOCATION 
FROM SHOPPERS 
WHERE LOCATION IN ('".implode("', '", $places)."') 
AND EVENT BETWEEN '{$start}' and '{$end}' 
AND ID BETWEEN '25687' AND '28050' 
    "; 

    //and then fetch array to print out results... 
    ..... 
    ?> 
+0

아약스 양식 제출을 통해 당신의 문제를 해결할 수 있기를 바랍니다. – Affan

답변

3

보다는 당신의, 당신은 GET 변수와 관련 여부를 결정하기 위해 PHP를 사용한다하여 <input type="checkbox"> 각 필드에 속성 "확인"하드 코딩 : 여기

내 지금까지 페이지의 감사 각 필드는 스크립트로 전달되었습니다. 이 경우 <input> 필드에 checked 속성을 추가하려고합니다. 당신은 같은 오른쪽 필드 내부 삼항 연산자를 사용하여이 작업을 수행 할 수 있습니다 :

<input type='checkbox' name='cities[]' value='CHI' <?= (in_array('CHI', $places)) ? 'checked' : ''; ?> >CHICAGO 
<input type='checkbox' name='cities[]' value='DET' <?= (in_array('DET', $places)) ? 'checked' : ''; ?> >DETROIT 
<input type='checkbox' name='cities[]' value='LA' <?= (in_array('LA', $places)) ? 'checked' : ''; ?> >LAS ANGELES 
<input type='checkbox' name='cities[]' value='NYC' <?= (in_array('NYC', $places)) ? 'checked' : ''; ?> >NEW YORK 
<input type='checkbox' name='cities[]' value='DALLAS' <?= (in_array('DALLAS', $places)) ? 'checked' : ''; ?> >DALLAS 
<input type='checkbox' name='cities[]' value='SPR' <?= (in_array('SPR', $places)) ? 'checked' : ''; ?> >SPRINGFIELD 
<input type='checkbox' name='cities[]' value='PHI' <?= (in_array('PHI', $places)) ? 'checked' : ''; ?> >PHILIDELPHIA 
+0

내가 이것을했을 때 예기치 못했던 ' – user3266259

+0

죄송합니다. 삼항 연산자의 첫 번째 인수 주변에 닫는 괄호가 없습니다. 지금 코드를 업데이트했습니다. 잘하면 그것이 작동해야합니다. –

+0

고마워요! 배열은 첫 번째가 아니라 두 번째 인수로 나열되어야하기 때문에 처음에는 오류가 발생했습니다. – user3266259

1

당신이 체크 박스는 GET 요청, 에 체크 매개 변수를 보내고 페이지에서 그것을 확인할 수 있습니다 예를 들어

if ($_GET['param1']==1) // checked 
{ 
?> 
<input type='checkbox' name='cities[]' value='CHI' checked>CHICAGO 
<? 
else 
?> 
<input type='checkbox' name='cities[]' value='CHI' >CHICAGO 
?> 
0
<?php 
$citiesGroup = array(); 
$citiesGroup['CHI'] = 'CHICAGO'; 
$citiesGroup['DET'] = 'DETROIT'; 
$citiesGroup['LA'] = 'LAS ANGELES'; 
$citiesGroup['NYC'] = 'NEW YORK'; 
$citiesGroup['DALLAS'] = 'DALLAS'; 
$citiesGroup['SPR'] = 'SPRINGFIELD'; 
$citiesGroup['PHI'] = 'PHILIDELPHIA'; 

$citiesChecked = array(); 
if (!empty($_GET['cities'])) { 
    foreach ($_GET['cities'] as $cityCode) { 
     $citiesChecked[] = $cityCode;  
    } 
} 
else { 
    foreach ($citiesGroup as $key => $value) { 
     $citiesChecked[] = $cityCode;  
    } 
} 
?> 
<?php 
foreach ($citiesGroup as $cityId => $cityName) { 
    $chekced = in_array($cityId, $citiesChecked) ? 'checked="checked"' : ''; 
?> 
<input type='checkbox' name='cities[]' value='<?php echo $cityId;?>' <?php echo $chekced;?>><?php echo $cityName;?> 
<?php 
} 
?> 

체크 박스가있는 HTML을 배열로 가져 와서 반복하십시오.

위의 코드는 작동합니다.