Zapamiętywanie wartości pól input formularza - cache / sesja

0

Witajcie, od jakiegoś czasu grzebie się z jednym problemem i nie mogę sobie z nim poradzić.
Problem dotyczy zapamiętania w cache wartości jaką wprowadził użytkownik do pola input type text. W moim wypadku jest to pole, do którego wpisywane są liczby.

Mam w pętli wyświetlane pola o poniższym kodzie:

<input alt="ct_matrix_{$ctk}" name="qty" {if ($ct['combination']['quantity']<=0 && $allow_oosp==0) || $ctp_product->available_for_order==0}disabled{/if} class="qty" id="ct_matrix_{$ctk}_idQty"  value="{if $ctp_atcb!=1}1{else}0{/if}" type="text" style="{if $ctp_atcq!=1}display:none!important;{/if}" />

Chciałbym zrobić w ten sposób, że jeśli osoba opuści stronę (ewentualnie przejdzie na inną podstronę tej samej witryny) i wróci za jakiś czas .. to wartość, która została wprowadzona będzie automatycznie uzupełniała odpowiednie pole.

Np.

  • przechodzimy na stronę i mamy pole input type text, którego domyślna wartość to 0,
  • wprowadzamy w tym polu wartość 222 i przechodzimy na inną stronę,
  • gdy wracamy na stronę mamy widoczne ponownie wartość 0 a chciałbym żeby było 222.

Najczęściej spotykam się z takim rozwiązaniem ale nie wiem czy jest właściwe bądź nie potrafię go zastosować:

<?php 
session_start(); 

if (!empty($_POST['oursubmit'])){ 
//gdy wysłano formularz (kliknięto przycisk "oursubmit") 
//zapisz jego stan w sesji     

    $_SESSION['form'] = array( 
        'field1' => $_POST['field1'], 
        'field2' => $_POST['field2'] 
    ); 
} 

//niezależnie, czy wysłano formularz, czy nie,  
//pobierz jego stan z sesji 
$formData = array( 
    'field1' => !isset($_SESSION['form']) ? null : $_SESSION['form']['field1'],  
    'field2' => !isset($_SESSION['form']) ? null : $_SESSION['form']['field2'],  
); 
?>
<form method="post"> 
    <label>Jakies pole1</label><input name="field1" value="<?php echo $formData['field1'];?>"/><br /> 
    <label>Jakies pole2</label><input name="field2" value="<?php echo$formData['field2'];?>"/><br /> 
    <input type="submit" name="oursubmit" value="Szukaj" /> 
</form>
<?php 
//a tu możemy korzystać z danych formularza zapisanych w $formData 
?>

Prosiłbym o pomoc doświadczonych użytkowników.

0

Tobie chodzi o to, że user coś wpisze, NIE NACIŚNIE przycisku submitowania tylko zamknie stronę/przejdzie gdzieś indziej, i jak wróci to znowu ma dane?

0

Jeśli tak jak mówi @dzek69 to w pehapie (ani żadnej innej backendowej technologii) tego nie osiągniesz. Aby wyłapytać zdarzenia w przegladarce musisz użyć js i zapisywać dane do cookies / web storage.

0

Dokładnie tak jak mówi @dzek69 . Ze dążeniem w js jeszcze sobie poradzę.. ale jak to połączyć / ubrać w całość? :/

1

Łap. Kod napisany na prędce i ojQuerowany, ale wszystko spokojnie można zrobić w czystym jsie. Postarałem sie go jakoś sensownie okomentować, także powinieneś zrozumieć. Dobrze by było to również w jakieś sensowne funkcje opakować, a nie kod na twarz i masz.
http://jsfiddle.net/W4Km8/8633/

0

Dziękuję @Desu za podpowiedź / rozwiązanie. Postaram się w dniu dzisiejszym zastosować na moim przykładzie.

1

@Desu wszytko działa jak należy :) jesteś niemożliwy. Dziękuję Tobie.

0 użytkowników online, w tym zalogowanych: 0, gości: 0