Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] - sesje; jednoplikowy skrypt
Forum PHP.pl > Forum > Przedszkole
Gość
Witam, mecze sie wlasnie z praca magisterska i jednym z jej elementow musze zachaczyc o uzycie php.. Nie da rady poznawac od podstaw jezyka, dlatego w calej swojej zielonosci splodzilem kod:

  1. <?
  2. ?>
  3. <FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  4. <TABLE>
  5. <TR>
  6. <TD>Pierwsza liczba:</TD>
  7. <TD><INPUT name="liczba1"></TD>
  8. </TR>
  9. <TR>
  10. <TD>Druga liczba:</TD>
  11. <TD><INPUT name="liczba2"></TD>
  12. </TR>
  13. <TR>
  14. <TD>Trzecia liczba:</TD>
  15. <TD><INPUT name="liczba3"></TD>
  16. </TR>
  17. <TR>
  18. <TD> </TD>
  19. <TD><INPUT type="submit" value="Wyślij"></TD>
  20. </TR>
  21. </TABLE>
  22. </FORM>
  23.  
  24. <html>
  25. <head>
  26. <title>sesje?</title>
  27. </head>
  28. <body>
  29. <?php
  30. if (is_numeric($_POST['liczba1']) && is_numeric($_POST['liczba2']))
  31.  
  32. {
  33.  
  34. if (!isset($_SESSION[iks])) { // jeśli zmienna nie jest zarejestrowana
  35. $_SESSION[iks] = 0; // przypisz jej początkową wartość
  36.  
  37. $_SESSION[$_SESSION[iks]]['sin'] = $_POST['liczba1'] ;
  38. $_SESSION[$_SESSION[iks]]['cos']= $_POST['liczba2'];
  39. $_SESSION[$_SESSION[iks]]['hkl'] = $_POST['liczba3'];
  40.  
  41.  
  42. } else { // jeśli jest zarejestrowana
  43. $_SESSION[iks]++; // zwiększ jej wartość
  44.  
  45. $_SESSION[$_SESSION[iks]]['sin'] = $_POST['liczba1'] ;
  46. $_SESSION[$_SESSION[iks]]['cos']= $_POST['liczba2'];
  47. $_SESSION[$_SESSION[iks]]['hkl'] = $_POST['liczba3'];
  48. }
  49. //to ponizej sprawdza co dzieje sie w tablicy
  50.  
  51. echo "W formularzu podano liczby z sesji 1:<br>";
  52. print( $_SESSION[0]['sin']."<br>" );
  53. print( $_SESSION[0]['cos']."<br>" );
  54. print( $_SESSION[0]['hkl']."<br>" );
  55.  
  56. echo "W formularzu podano liczby z sesji 2:<br>";
  57. print( $_SESSION[1]['sin']."<br>" );
  58. print( $_SESSION[1]['cos']."<br>" );
  59. print( $_SESSION[1]['hkl']."<br>" );
  60. echo "W tej chwili zmienna x ma wartosc".$_SESSION[iks];
  61.  
  62. }
  63.  
  64. ?>
  65. <br><br>
  66.  <a href="sesja2.php?<?=SID?>">Przejście do strony 2</a>
  67. <? echo $PHPSESSID; ?>
  68. </BODY>
  69. </HTML>


Istota skryptu miala byc taka, zeby przechowywal 'serie danych' pochodzace z formularza i budowal z nich tablice (wielowymiarowa), z ktorej to dane moglbym pozniej uzyc w dalszej czesci skryptu. Doszedlem do wniosku ze aby dane pomiedzy uzyciem SUBMIT mogly byc pamietane, bede je kierowal do tablicy $_session[x][dane z form1,2,3] , x=1,2,3..(ilosc wyslan formularza). Poniekad to dziala.. jednak przy kolejnych zmianach indexu x, dane pod adresem (x-1) ze tak powiem znikaja.. zreszta, uruchomienie TEGO SKRYPTU mowi wszystko o moim problemie smile.gif

Wielkie dzieki za wskazanie bledu (w kodzie, a moze wogole w podejsciu ?)!
Kicok
1. Umieść sobie na samej górze skryptu:
  1. <?php
  2.  
  3. error_reporting( E_ALL | E_NOTICE );
  4.  
  5. ?>

i postaraj się oczyścić kod z błędów ;]


2. Ciekawą rzecz zauważyłem w tym kodzie. Tablica $_SESSION nie lubi kluczy liczbowych. Wyrzuca błąd:
Cytat
Notice: Unknown: Skipping numeric key XXX. in Unknown on line 0

Po zamianie $_SESSION[0], $_SESSION[1], $_SESSION[2] na: $_SESSION['klucz_0'], $_SESSION['klucz_1'], $_SESSION['klucz_2'] wszystko działało prawidłowo :|
Podejrzewam, że między $_SESSION[0] a $_SESSION['0'] też będzie taka różnica.
Gość
dzieki za funkcje error repoting, od razu skladani sie mozna nauczyc winksmiley.jpg

coz, faktycznie moja tablica wariowala przy ukladzie:
$_session[x][dane z form1,2,3] , x=1,2,3..(ilosc wyslan formularza);
zamienilem ja na:
$_session[dane][x..] no i kiedy pierwszymi wezlami ze tak powiem zostaly wyrazenia a nie liczby, wszystko sie juz ladnie dopisuje smile.gif

dzieki za zwrocenie uwagi!

pzdr, Irq
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.