Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kłopoty z danymi w sesji
Forum PHP.pl > Forum > Przedszkole
-slawek-
mam skrypt który gubi zmienną $miesiac w sesji. Poniżej przedstawiam szkielet pliku. Zmienną $miesiac otrzymuję z pliku w sesji.Sesja jest zainicjowana i początkowo wyświetla wartość zmiennej jednak po naciśnięciu przycisku "dodaj" zmienna ta nie jest wyświeltana. Nie wiem gdzie jest błąd proszę o pomoc.


<?php
session_start();
?>
<html>
<head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-2">
<title></title>
</head>
<body
<center>
<?php
$miesiac = $_POST['miesiac'];
$id = session_id();
echo"<form method=\"post\" action=\"plik2.php\">";

echo"<hr>";

if(isset($_REQUEST['Dodaj']) and !empty($miesiac))
{
for($nr=1;$nr<25;$nr++)
{
echo $miesiac;
}
echo $id;
echo"<font size=\"5\" face=\"Verdana\" color=\"#FF6600\"><b><I><center>Dane dodane</center></I></b></font>";
echo"</form>";
session_destroy();
}
elseif(!empty($miesiac))
{
echo $miesiac;
echo"
<tr><td width=\"100%\" colspan=\"16\"><p align=\"center\"><font size=\"2\" face=\"Verdana\">
<input type=\"submit\" name=\"Dodaj\" value=\"Dodaj\" size=\"30\"</font></td></table>";
echo $id;
}
?>
</center>
</div>
</html>
nospor
Oświeć mnie proszę w którym to niby miejscu dodajesz miesiąc do sesji oraz w którym to niby miejscu wyświetlasz coś z tej sesji?
Ilware
do sesji odnosisz się przez
  1. $_SESSION['miesiac']

a nie
  1. $_POST['miesiac'];
Sephirus
@up - fakt też tego nie kumam - widzę jednak że używasz session_destroy() - po co?
Gość
wartość zmiennej $miesiąc dodawana jest do sesji z formularza w pliku1 (którego listingu tutaj nie ma) i jest wyświetlana już w drugim pliku gdy przycisk "dodaj" nie jest naciśnięty (elseif) a po nacisnięciu "dodaj" (if) powinna zmienna być wyświetlana w pętli for a nie jest
nospor
Cytat
i jest wyświetlana już w drugim pliku gdy przycisk "dodaj" nie jest naciśnięty (elseif) a po nacisnięciu "dodaj" (if) powinna zmienna być wyświetlana w pętli for a nie jest
Powtórzę jeszcze raz: nigdzie w tym kodzie nie wyświetlasz zmiennej miesiac z sesji.

Być może chodzi o błąd, jaki zasugerował Ilware. Przeczytaj jego post
Gość
gdy korzystam z $miesiac = $_SESSION['miesiac'] to miesiąc nie jest wyświetlany i mam komunikat że jest niezdefiniowany index miesiac
Ilware
wrzuć gdzieś cały kod,

bo albo źle przypisujesz wartość, ją gdzieś nadpisujesz nullem, albo brakuje Ci session_start();, albo masz literówkę gdzieś,i tak można zgadywać.Bez wglądu w całość ciężko pomóc.
Gość
to jest plik1.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<html>

<?php
session_start();


if(isset($_REQUEST["Wstaw"]) and !empty($miesiac))
{
echo"</div></form>";
}
else
{
echo"<form method=\"post\" action=\"plik2.php\">
<div align=\"left\">
<td width=\"40%\"><font size=\"1\" face=\"Verdana\"><b>Wybierz miesiąc</b></font></td>
<td width=\"60%\" align=\"left\"><font size=\"2\" face=\"Verdana\"><select name=\"miesiac\" size=\"1\">
<option value=\"&nbsp\">&nbsp</option>
<option value=\"styczeń\">Styczeń</option>
<option value=\"luty\">Luty</option>
<option value=\"marzec\">Marzec</option>
<option value=\"kwiecień\">Kwiecień</option>
<option value=\"maj\">Maj</option>
<option value=\"czerwiec\">Czerwiec</option>
<option value=\"lipiec\">Lipiec</option>
<option value=\"sierpień\">Sierpień</option>
<option value=\"wrzesień\">Wrzesień</option>
<option value=\"październik\">Październik</option>
<option value=\"listopad\">Listopad</option>
<option value=\"grudzień\">Grudzień</option>
</td></font>
</tr></div>";

echo"
<p align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"submit\" value=\"Wstaw\" name=\"Wstaw\"></font></td>
</tr>
</center>";
}

?>

</body>
</html>


a to jest plik2:

<?php
session_start();
?>
<html>
<head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-2">
<title></title>
</head>
<body>
<center>
<?php
$miesiac = $_POST['miesiac'];
$id = session_id();
echo"<form method=\"post\" action=\"plik2.php\">";

echo"<hr>";

if(isset($_REQUEST['Dodaj']))
{
for($nr=1;$nr<25;$nr++)
{
echo $miesiac;
}
echo $id;
echo"<font size=\"5\" face=\"Verdana\" color=\"#FF6600\"><b><I><center>Dane dodane</center></I></b></font>";
echo"</form>";
session_destroy();
}
elseif(!empty($miesiac))
{
echo $miesiac;
echo"
<tr><td width=\"100%\" colspan=\"16\"><p align=\"center\"><font size=\"2\" face=\"Verdana\">
<input type=\"submit\" name=\"Dodaj\" value=\"Dodaj\" size=\"30\"</font></td></table>";
echo $id;
}
?>
</center>
</div>
</html>

nospor
Po pierwsze: zacznij używać BBCODE!
Po drugie: weź się zapoznaj wpierw z podstawami obsługi sesji, bo pisałeś ze w pliku pierwszym zapisujesz do sesji a nic takiego nie robisz.
Po trzecie: przed session_start nie moze nic byc wyświetlane a u ciebie leci masa wyświetlania
Ilware
Okej a gdzie masz linie

  1. $_SESSION['miesiac'] = $miesiac;


pozatym wywołałem ten skrypt działa on prawidłowo,

chodzi Ci o wywołanie

  1. for($nr=1;$nr<25;$nr++)
  2. {
  3. echo $miesiac;
  4. }


że nie ma zmiennej?

Wcześniej przypisujesz do tego $_POST['miesiac'] w którym nic nie ma, bo nie przekazujesz tego, więc albo w <input type="hidden" name="miesiac" value="$miesiac"> ,albo przypisz sobie miesiąc do zmiennej $_SESSION wartość miesiąca.
Gość
dziekuję działa
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.