Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak zapamietac wcisniecie przycisku po przeładowaniu strony
Forum PHP.pl > Forum > Przedszkole
sosenka
Witam...
Na stronie mam dwa formularze "lista" (Pierwsza to litera a druga to nazwa filmu )które ukazują się po wciśnięciu przycisku "submit"
Problem jest taki, że do pierwszej listy dałem zdarzenie onChange="this.form.submit() by automatycznie po wybraniu litery pokazały się filmy w drugiej liście na tą literę. Po wybraniu litery następuje przeładowanie strony i formularze znikają. "Co jest logiczne" ...

Jak mogę zapamiętać akcję wcisnięcia przycisku po przeładowaniu ale tylko na stronie na której aktualnie przebywam ? Jak wejdę na inną strone i wróce to chcę by formularze dalej były widoczne dopiero po wcisnięciu przycisku.

Potrzebuję tylko nakierowania czego powinienem uzyć : sesji , cookie czy coś innego ...
Wieviór
Zarzuć kodem, to może coś zaradzimy ;]
korkie
<?php
session_start();
$_SESSION['kliknieto'];

# Przykład na przycisk submit <inpu type="register" value="ok">

if ( isset($_POST['register']) && $_POST['register']="ok" )
{
$_SESSION['kliknieto=1'];
}

if ( $_SESSION['kliknieto'] == 1)
{
echo ' Już raz kliknięto opcję.';
}

?>

To tak przykładowo.
Ale sprubój też sobie, czy zadziała bez użycia sesji.
Nie mogę teraz sam sprawdzić, bo brak mi czasu.

pozdrawiam
sosenka
Załóżmy, że mamy prosty kod:

Kod
<?php
if(count($_GET['pokaz'])) {

print ("
<form action=\"index.php\" method=\"get\">
<select name=\"lista\" onChange=\"this.form.submit()\">
   <option value=\"aaa\">aaa</option>
   <option value=\"bbb\">bbb</option>
   <option value=\"ccc\">ccc</option>
   <option value=\"ddd\">ddd</option>
</select>
</form>
");
}
?>


<form action="index.php" method="get">
<input name="pokaz" type="submit" value="pokaz" />
</form>


Jeśli wybiorę coś z listy strona zostanie przeładowana z uwagi na onChange=\"this.form.submit()\" i lista znika.
Chciałbym aby po kliknięciu w przycisk pojawiła się lista i to zdarzenie zostało gdzieś zapisane np. w ciasteczku. Po każdym przeładowaniu strony lub wykonaniu innego skryptu na tej stronie sprawdzało by czy istnieje ciasteczko - jesli tak to wyświetli liste. Ale ciasteczko musiało by być niszczone po opuszczeniu strony by jak powrócić na stronę z listą to znów ma się pojawić dopiero po kliknięciu w przycisk. Wydaję mi się, że wyjście ze strony a przeładowanie jej to dla PHP to samo i nie potrafi tego rozróżnić

Czy jest na to rozwiązanie?
Wieviór
Nie jestem pewien czy dobrze rozumiem co chcesz osiągnąć, ale najlepiej to chyba zrobić dwoma selectami (jeden z literami, drugi z tytułami filmów) i za pomocą jquery/javascript zmieniać zawartość drugiego przy zmianie wyboru w pierwszym.

Jeśli chcesz to robić tak jak robisz, czyli przeładowywać to raczej zapisuj to w sesji. Dopóki sobie chodzisz po stronie to te dane masz, a po wyłączeniu przeglądarki sesja znika.
sosenka
Udało mi zrobić to co chciałem po prostu zmienna ($zmienna) ... sciana.gif
Kod
<?
     $zmienna = $_GET['lista2'];
         if((count($_GET['wyswietl'])) OR ($zmienna != NULL)) {

              print("
                         <form action=\"index.php\" method=\"GET\">
                      <select name=\"lista2\" size=\"5\" onChange=\"this.form.submit()\" style=\"width:100px;\">
        
                    ");
        $sql = 'SELECT id, rok FROM rok';    
        $wynik = mysql_query($sql);
             while($r = mysql_fetch_array($wynik)) {                
                
                 echo "<option value=".$r['id']." ";
                        if ($zmienna == $r['id']) {
                  echo 'selected="selected"';
                  }
                 echo ">".$r['rok']."</option>";
                 }                    
                                
             print ("    
                        </select>    
                      <select name=\"lista3\" size=\"5\" style=\"width:300px;\">
                    ");
                            
         $sql = "SELECT id, gra FROM gra WHERE id_rok='$zmienna'";
         $wynik = mysql_query($sql);
         while($a = mysql_fetch_array($wynik)) {    
        
         echo "<option>".$a['gra']."</option>";                                    
                        
         }
             print ("</select>
                     </form>
                   ");
         }
     ?>


gotowy kod na dwie listy zależne pobierające dane z bazy wraz z zapamiętywaniem wybranej pozycji w pierwszej liście po przeładowaniu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.