I wlaśnie dlatego logikę aplikacji robi się PRZED wyświetlaniem. Gdy masz tak zrobione to po kliknięciu wyślij masz na serwer pchany $_POST i go przetwarzasz. Gdy się skończy robi coś na serwerze ale gdy kończy wciąż masz $_POST dostępny. Teraz w czasie wyświetlania sprawdzasz czy w zmiennej $_POST ten checkbox wystąpił i jeśli tak, dajesz mu checked. Mniej więcej coś w deseń:
<?php
//tu jakiś kod do połączenia z bazą i wstępnych operacji
//ja tworzę sobie też zmienną z wszystkimi domyślnymi wartościami formularza, co załatwia mi też problem warningów "index undefined" co jest zmorą początkujących ;)
$fields = array( 'input' => 'wartość', 'input2' => 'wartość', 'checkbox' => false, 'checkbox2' => true ); if( array_key_exist( 'submit', $_POST ) ) {
//tu przetwarzasz i w razie czego robisz przypisania post do fields w stylu
$fields['checkbox'] = true;
}
//czas na wyświetlanie
?>
<form method="post", action="">
<input type="text" name="input" value="
<?php echo $fields['input']; ?>" />
<input type="" name="input2" value="
<?php echo $fields['input2']; ?>" />
<input type="" name="checkbox"
<?php echo ( $fields['checkbox'] ?
' checked="checked"' : ''); ?> />
<input type="" name="checkbox2"
<?php echo ( $fields['checkbox2'] ?
' checked="checked"' : ''); ?> />
<input type="submit" name="submit" value="Wyślij" />
</form>