2012-03-07 6 views
0

나는 선택한 요일에 관한 정보를 보유하는 문자열 $ eventdays가 있습니다.PHP 문자열에서 확인란을 미리 선택하십시오.

데이터의 형식은 다음과 같습니다

Monday = Mo 
Tuesday = Tu 
Wedneday = We 
Thursday = Th 
Friday = Fr 
Saturday = Sa 
Sunday = Su 

예를 들어 화요일과 금요일 선발 그렇다면 모, 화, 우리는 목, 백, 사, 스와

, 문자열 것 수 :

Tu,Fr 

월요일, 수요일, 토요일이 선정되었다 경우는 다음과 같습니다

Mo,We,Sa 

참고 : 일 조합을 선택할 수 있습니다.

이 정보를 얻는 방법을 궁금하고 체크 박스를 미리 선택했습니다.

<input type="checkbox" name="days[]" value="Mo" />Monday<br /> 
<input type="checkbox" name="days[]" value="Tu" />Tuesday<br /> 
<input type="checkbox" name="days[]" value="We" />Wednesday<br /> 
<input type="checkbox" name="days[]" value="Th" />Thursday<br /> 
<input type="checkbox" name="days[]" value="Fr" />Friday<br /> 
<input type="checkbox" name="days[]" value="Sa" />Saturday<br /> 
<input type="checkbox" name="days[]" value="Su" />Sunday<br /> 

내가 (= 확인 "예") 체크 박스를 미리 선택하는 방법을 알고,하지만 난 문자열을 구문 분석하고 그 정보에서 올바른 확인란을 선택하는 방법을 내 질문은 : 확인란은?

답변

2

strpos을 사용하고 확인란을 동적으로 생성 할 수 있습니다. 귀하의 의견을 가정

$eventdays = "Tu,Fr"; // Selected days 

$days = array("Monday" => "Mo", 
       "Tuesday" => "Tu", 
       "Wedneday" => "We", 
       "Thursday" => "Th", 
       "Friday" => "Fr", 
       "Saturday" => "Sa", 
       "Sunday" => "Su" 
      ); 

foreach ($days AS $day => $shortDay) { 
    // Is there an event on this day? 
    $checked = strpos($eventdays, $shortDay) !== FALSE ? "checked='checked'" : ""; 
    // Generate checkbox HTML 
    echo "<input type='checkbox' name='days[]' value='{$shortDay}' {$checked} />{$day}<br />"; 
} 

가 출력

<input type='checkbox' name='days[]' value='Mo' />Monday<br /> 
<input type='checkbox' name='days[]' value='Tu' checked='checked'/>Tuesday<br /> 
<input type='checkbox' name='days[]' value='We' />Wedneday<br /> 
<input type='checkbox' name='days[]' value='Th' />Thursday<br /> 
<input type='checkbox' name='days[]' value='Fr' checked='checked'/>Friday<br /> 
<input type='checkbox' name='days[]' value='Sa' />Saturday<br /> 
<input type='checkbox' name='days[]' value='Su' />Sunday<br /> 
+1

완벽했다! – user1233852

0

사용은 당신이 선택해야하는 일 배열을 가지고, 그것은 배열을

$days = "mon,tu"; 
$needstobeselected= explode(",", $days); 

를 반환) (폭발. 그런 다음 배열에 루프를 만들고 논리를 작성할 수 있습니다. 내가 좋아, 엉터리 방법 추측되지만 $의 checkeddays 어레이를 구축 :

[0] => '확인' [1] => ''

하고, 다음을 사용

echo '<input type="checkbox" name="days[]" value="Mo" '.$checkeddays[0].'/>Monday<br />' 

주요 부분이 폭발합니다.

2

행 구분 된 문자열입니다 ... 첫 번째 프로세스가 키 입력 배열에 데이터가 인생을 더 쉽게 만드는 ... 내가 사용했던 정규 표현식에 형식 변경에 대해 더 강력하게 만듭니다.

$eventdays="Monday = Mo 
Tuesday = Tu 
Wedneday = We 
Thursday = Th 
Friday = Fr 
Saturday = Sa 
Sunday = Su"; 

$lines = explode("\n", $eventdays); 
$data = array(); 
foreach ($lines as $line) { 
    if (preg_match("/(\w+)\s*=\s*(\w+)/", $line, $match)) { 
    $data[] = array('value'=>$match[2], 'label' => $match[1]); 
    } 
} 

이제 키/라벨을 인쇄하는 구조를 반복하십시오. 현재 선택되어 있는지 확인하려면 in_array 함수를 사용하십시오. 또한 checked = "checked"를 사용했는데 이는 체크 박스를 선택하는 표준 호환 방법입니다 ... this question을 참조하십시오.

$selected_test="Mo,We,Sa"; 
$select=explode(",", $selected_test); 

foreach ($data as $datum) { 
    $checked=""; 
    if (in_array($datum['value'], $select)) { 
    $checked = " checked=\"checked\""; 
    } 
    echo <<< EOF 
<input type="checkbox" name="days[]" value="{$datum['value']}"$checked/>{$datum['label']}<br />\n 
EOF; 
} 

출력이 우수 답변 -

<input type="checkbox" name="days[]" value="Mo" checked="checked"/>Monday<br /> 
<input type="checkbox" name="days[]" value="Tu"/>Tuesday<br /> 
<input type="checkbox" name="days[]" value="We" checked="checked"/>Wedneday<br /> 
<input type="checkbox" name="days[]" value="Th"/>Thursday<br /> 
<input type="checkbox" name="days[]" value="Fr"/>Friday<br /> 
<input type="checkbox" name="days[]" value="Sa" checked="checked"/>Saturday<br /> 
<input type="checkbox" name="days[]" value="Su"/>Sunday<br /> 
관련 문제