Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sesje ze zmienną
Forum PHP.pl > Forum > Przedszkole
lukaszalbert
Mam problem ze zmiennymi

Gdy utworzę sesję na stronie a.php w ten sposób to spokojnie ją odczytam na stronie b.php, tzn że to działa
CODE
$_SESSION["kategoriax"] = jakis tekst;


Jeśli jednak spróbuję wstawić do sesji zamiast gołego tekstu zmienną z formularza to już się niechce ona wyświetlić na stronie b.php. Po prostu mam puste pole. Oto kod.

CODE
session_start();
echo'
<form enctype="multipart/form-data" action="dodaj.php" method="POST">
<input class="input" type="hidden" name="MAX_FILE_SIZE" value="1000000" />
Adres Obrazu <input class="input" type="text" name="rozdzielczosc"><br><br>
<select name="kategoria">';
echo '
Wybierz Kategorię: <br>
<option class="input" selected >Bez Kategorii</option>';
$sql = mysql_query("SELECT kategoria FROM kategoria ORDER BY kategoria ASC ") or die('Błąd Bazy MySQL'); // zapytanie mysql
while ($rekord = mysql_fetch_assoc ($sql)) {
$id = $rekord['id']; $kategoria=$rekord['kategoria'];
echo '<option name="'.$kategoria.'" class="input" >'.$kategoria.'</option>';
}
echo '</select><br>
<input class="submit" type="submit" value="Przejdź do kolejnego etapu">
</form>
';


$x = $_POST['kategoria'];
$_SESSION["kategoriax"] = $x;
SmokAnalog
To niestety nie działa w taki sposób, że zapiszesz sobie zmienną z $_POST w sesji i pole automatycznie się ustawi na odpowiednią wartość.

  1. Po pierwsze, do sesji zapisuj przed wyświetlaniem formularza, nie po.
  2. Po drugie, musisz odpowiednio potem użyć tej wartości z sesji, na tej zasadzie:
    1. <option value="smerf"<?php if(isset($_SESSION['kategoriax'] && $_SESSION['kategoriax'] === 'smerf'): echo ' selected="selected"' ?>>Lubię Smerfy</option>
lukaszalbert
Tego to już w ogóle nie ogarniam. skonstruujesz mi coś?
SmokAnalog
U Ciebie można np. tak:
  1. echo '<option name="'.$kategoria.'" class="input"' . ((isset($_SESSION['kategoriax']) && $_SESSION['kategoriax'] === $kategoria) ? ' selected="selected"' : '') . '>'.$kategoria.'</option>';

Tylko usuń jeszcze selected z opcji "Bez kategorii" i zrób to co napisałem w poprzednim poście.
lukaszalbert
Teraz mam coś takiego i działa bo widzę treść dodaną do bazy. I mam kolejny problem. Po otworzeniu tej drugiej strony automatycznie mi wtedy dodaje do bazy danych przesłaną treść. A ja chciałbym najpierw te dane wyświetlić jak to miałem pierwotnie. Nie rozumiem jak może z automatu się to dziać.

Próbuję jeszcze dodać do sesji kolejną zmienną z pola input "rozdzielczosc". Ale coś nie chodzi to.

CODE

<?php

session_start();
echo'
<form enctype="multipart/form-data" action="dodaj.php" method="POST">
<input class="input" type="hidden" name="MAX_FILE_SIZE" value="1000000" />
Adres Obrazu <input name="rozdzielczosc" class="input"' . ((isset($_SESSION['rozdzielczoscx']) && $_SESSION['rozdzielczoscx'] === 'rozdzielczosc') ? '' : '') . '><br><br>
<select name="kategoria">';
echo '
Wybierz Kategorię: <br>

<option class="input">Bez Kategorii</option>';
$sql = mysql_query("SELECT kategoria FROM kategoria ORDER BY kategoria ASC ") or die('Błąd Bazy MySQL'); // zapytanie mysql
while ($rekord = mysql_fetch_assoc ($sql)) {
$id = $rekord['id'];
$kategoria=$rekord['kategoria'];
echo '<option name="'.$kategoria.'" class="input"' . ((isset($_SESSION['kategoriax']) && $_SESSION['kategoriax'] === $kategoria) ? ' selected="selected"' : '') . '>'.$kategoria.'</option>';
}


echo '</select><br>
<input class="submit" type="submit" value="Przejdź do kolejnego etapu">
</form>
';

?>
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.