2013-06-25 3 views
0

를 확인했습니다. '저장'을 클릭하면 다음 체크 박스와 첫 번째 레코드가 삭제됩니다. 예를 들어, 내가 '저장'을 클릭하고 페이지를 새로 고칠 때 기록은 'DMG, SCR, KLS, AST'를하는 경우, DMG 확인란을 선택하지하지만 난 클릭하면 기록은 여전히 ​​'DMG, SCR, KLS, AST'를 말한다 다시, 기록은 'SCR, KLS, AST'가되고 SCR 체크 박스는 선택되지 않습니다. 폼의 체크 박스 부분이 아래쪽에 있습니다.PHP HTML 먼저 체크 박스는 없습니다 그것은 항상 체크 박스가 나타내는 레코드의 실제 부분을 첫 번째 확인란을 삭제 있지만

감사합니다.

// delete 
if(isset($_GET['id']) && $_GET['x'] == "d") { 
    $eventType = EventType::find_by_id($_GET['id']); 
    if($eventType && $eventType->delete()) { 
     $message = "The Event Type '{$eventType->name}' was deleted."; 
    } else { 
     $message = "The Event Type could not be deleted."; 
    } 
} 

// save 
if(isset($_POST['submit'])) { 

    $eventType = new EventType(); 
    if(isset($_POST['id'])) { 
     $eventType->id = mysql_prep($_POST['id']); 
    } 
    $eventType->name = mysql_prep($_POST['name']); 

    $scoreTypes = ScoreType::find_all(); 
    $score_set = array(); 
    foreach($scoreTypes as $scoreType) { 
     if(isset($_POST[$scoreType->name]) && $_POST[$scoreType->name] == $scoreType->name) { 
      array_push($score_set, mysql_prep($_POST[$scoreType->name])); 
     } 
    } 

    if(!empty($score_set)) { 
     $scores = implode(", ", $score_set); 
    } else { 
     $scores = "empty"; 
    } 
    if(isset($scores)) { $eventType->score_types = $scores; } else { $eventType->score_types = ""; } 
    if(isset($_POST['is_disp'])) { $eventType->is_disp = mysql_prep($_POST['is_disp']); } 
    $eventType->save(); 
} 

// edit 
if(isset($_GET['id']) && ($_GET['x'] == "e")) { 
    $eventType = EventType::find_by_id($_GET['id']); 
} 

//view 
$eventTypes = EventType::find_all($ord="name"); 
$scoreTypes = ScoreType::find_all(); 
?> 
<div id="admin_table"> 
<div id="admin_thead"> 
    <table> 
     <tr> 
      <td width="35%">Name</td> 
      <td width="40%">Score Types</td> 
      <td width="5%">Display</td> 
      <td width="7%">Actions</td> 
      <td width="12"></td> 
     </tr> 
    </table> 
</div> 
<div id="admin_tdata"> 
    <table> 
     <colgroup></colgroup> 
     <colgroup class="odd"></colgroup> 
     <colgroup></colgroup> 
     <colgroup class="actions"></colgroup> 
    <?php foreach($eventTypes as $eventType_v): ?> 
     <tr> 
      <td width="35%"><?php echo $eventType_v->name; ?></td> 
      <td width="40%" title="<?php echo $eventType_v->score_types; ?>"><?php echo $eventType_v->score_types; ?></td> 
      <td width="5%" class="bool"><img src="../images/<?php echo ($eventType_v->is_disp == 1) ? "x_yes.png" : "x_no.png"; ?>"></td> 
      <td width="7%" class="but_admin"><a class="but_admin_edit" title="edit" href="index.php?con=event_types&id=<?php echo $eventType_v->id; ?>&x=e">edit</a><a class="but_admin_delete" title="delete" href="index.php?con=event_types&id=<?php echo $eventType_v->id; ?>&x=d" onclick="return confirm('Are you sure you want to delete the Event Type <?php echo "\'{$eventType_v->name}\'"; ?>?')">delete</a></td> 
     </tr> 
    <?php endforeach; ?> 
    </table> 
</div> 
</div> 
<div id="admin_ops_cont"> 
<div id="admin_lt_panel"> 
    <div id="admin_msg"> 
     <h2>Messages</h2> 
     <p><?php if(!$message) { echo "no message"; } else { echo $message; } ?></p> 
    </div> 
</div> 
<div id="admin_form"> 
<?php if(isset($_GET['id'])) { if(isset($_GET['x'])) { if($_GET['x'] == "e") { $edit = 1; } else { $edit = 0; }}} else { $edit = 0; } ?> 
    <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>?con=event_types<?php if(isset($_GET['id'])) { echo "&x=e&id={$eventType->id}"; } ?>" method="post"> 
     <fieldset> 
      <legend><?php if($edit == 1) { echo "Edit: <span>{$eventType->name}</span>"; } else { echo "New EventType"; } ?></legend> 
      <?php if($edit == 1): ?> 
       <input type="hidden" name="id" id="id" value="<?php echo $eventType->id; ?>"> 
      <?php endif; ?> 
      <p> 
       <label for="name">Name</label> 
       <input name="name" id="name" type="text"<?php if($edit == 1): ?> value="<?php echo $eventType->name; ?>"<?php endif; ?>> 
      </p> 
      <p> 
      <?php foreach($scoreTypes as $scoreType): ?> 
       <label for="<?php echo $scoreType->name; ?>"><?php echo $scoreType->description; ?></label> 
       <input type="checkbox" id="<?php echo $scoreType->name; ?>" name="<?php echo $scoreType->name; ?>" value="<?php echo $scoreType->name; ?>" 
        <?php if($edit == 1): if(strpos("{$eventType->score_types}", "{$scoreType->name}")): ?> checked<?php endif; endif; ?>> 
      <?php endforeach; ?> 
      </p> 
      <p> 
       <label for="is_disp">Display?</label> 
       <input type="checkbox" id="is_disp" name="is_disp" value="1"<?php if($edit == 1) { if($eventType->is_disp == 1) { echo " checked"; }} ?>> 
      </p> 
      <p> 
       <button type="submit" name="submit">Save</button><?php if($edit == 1): ?><a class="btn_cancel" href="index.php?con=event_types">done</a><?php endif; ?> 
      </p> 
     </fieldset> 
    </form> 
</div><!-- end .admin_form --> 
</div><!-- end #admin_ops_con --> 
+3

이 코드에 대해 이야기 코드 –

+2

TL을 보여 해달라고이며, 박사 코드를 보여주십시오. –

+0

죄송합니다. 전체 페이지에서 코드를 추가했습니다. 나를 괴롭히는 부분은 바닥에 가깝지만 문제가되는 내 개념 전체에 대비하여 모든 것을 게시합니다. 감사. – sinrise

답변

0

나는 항목이 첫 번째 위치에있는 경우 문제가 줄을

<?php if($edit == 1): if(strpos("{$eventType->score_types}", "{$scoreType->name}")): ?> checked<?php endif; endif; ?>> 

생각 (String의 인덱스는 0) strpos는 0 PHP 0 그래서 거짓 동일하다는 가정 반환 인덱스 0과 일치하는 첫 번째 항목은 "확인"되지 않습니다.

이 코드는 문제를 해결해야

<?php if($edit == 1): if(strpos("{$eventType->score_types}", "{$scoreType->name}")!==false): ?> checked<?php endif; endif; ?>> 

// Not tested since i dont have PHP installed on this machine. but will try to confirm this asap 

업데이트 (거짓 검사를 ==!) :

정보 strpos (...) 문자열의 인덱스를 반환합니다. 0으로 계산을 시작하는 것은 그래서 당신은 PHP는 인덱스 0은 거짓 치료 나던 것을, (=== false)를 거짓 명시 적으로 확인해야 할 데르를 (! == false)를 가질 것이다. 여기에 수동 (Link)에 대한 링크

+0

그게 도움이되는 Ok하지만 왜 그 일을하는지, 어떻게 바꿀 수 있습니까? 아마도 strpos가 잘못된 함수일까요? – sinrise

+0

나는 작동해야하는 예제 코드를 업데이트했다. 나는 그것이 작동하기를 바란다 –

+0

야, @winner_joiner 너는 내 영웅이야. 그것은 아름답게 작동합니다! 정말 고맙습니다. 그것이 거짓에 대한 검사없이 수행하는 방식으로 작동하는 이유 난 아직도 궁금하다. 고마워, 또! 당신은 strpos의 기준에서 [링크] (http://php.net/manual/en/function.strpos.php) 따르는 경우 – sinrise