Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Odczyt tablicy w sesji
-mtweeman-
post
Post #1





Goście







Witam,

w zadaniu które wykonuję przechodzę pomiędzy plikiem html, będącym formularzem, a plikiem php, w którym dane mają zostać zapisane do tablicy w sesji. Gdy zostaną wprowadzone wszsytkie dane program ma przechodzić z pliku php do innego pliku php i dokonywać na danych zapisanych w tablicy pewnych operacji.

  1. //pierwszy z plików php
  2.  
  3. $_SESSION['i']=0; //zmienna służąca zapamiętaniu ile rekordów w tabeli wprowadzono
  4.  
  5. $id_prz['i']=$id_p;
  6. $godz['i']=$godzina; //zmienne id_p oraz godzina zostają przypisane do odpowiednich pól tablicy id_prz i godz
  7.  
  8. $_SESSION['id_prz']=$id_prz;
  9. $_SESSION['godz']=$godz;
  10.  
  11. print $_SESSION['id_prz']['i']; //wypisanie na ekranie monitora danych z tabeli dla obecnej wartości i
  12. print $_SESSION['godz']['i'];

  1. drugi plik php
  2. for($j=0; $j<$_SESSION['i']; $j++)
  3. {
  4. print $_SESSION['id_p'][$j]; print ('<br>');
  5. print $_SESSION['godz'][$j]; print ('<br>');
  6. }


Tu pojawia się problem, bo nie zostają wydrukowane wartości id_p oraz godz na ekranie. Gdzie popełniam błąd?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




print $_SESSION['id_p'][$j]
Przecież ty nie masz w sesji takiego indeksu 'id_p'[0] ani 'id_p'[1] ani....

zrob sobie
print_r($_SESSION);
bo widzę nie ogarniasz tego co sam tam wkładasz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
iwosz
post
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Zakładając że łączysz się z bazą danych, wyciągasz z niej dane i je przeglądasz, robisz tak:
  1. //pierwszy z plików php
  2.  
  3. // dla bazy MySQL:
  4. // Connecting, selecting database
  5. $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
  6. or die('Could not connect: ' . mysql_error());
  7. mysql_select_db('my_database') or die('Could not select database');
  8.  
  9. // Performing SQL query
  10. $query = 'SELECT * FROM my_table';
  11. $result = mysql_query($query) or die('Query failed: ' . mysql_error());
  12.  
  13. // tutaj przegladamy pobrane rekordy z bazy:
  14. $_SESSION['dane']; $id = 0;
  15. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  16. $_SESSION['dane'][$id]['id_prz'] = $row['id_prz']; // zakladajac ze kolumna w tabeli nazywa sie 'id_prz'
  17. $_SESSION['dane'][$id]['godzina'] = $row['godzina']; // zakladajac ze kolumna w tabeli nazywa sie 'godzina'
  18. $id++;
  19. }
  20.  
  21. print $_SESSION['dane']; //wypisanie na ekranie monitora danych pobranych z tabeli

Przeglądanie pobranych danych w drugim pliku .php:
  1. drugi plik php
  2. for($j=0; $j<count($_SESSION['dane']); $j++)
  3. {
  4. print $_SESSION['dane'][$j]['id_prz']; print ('<br>');
  5. print $_SESSION['dane'][$j]['godzina']; print ('<br>');
  6. }


Na przyszłość podawaj więcej info, np. jak wygląda tabela w bazie.

Ten post edytował iwosz 10.11.2011, 10:34:40


--------------------
Pozdrawiam,

iwosz.
Go to the top of the page
+Quote Post
-mtweeman-
post
Post #4





Goście







@iwosz, nie łączę się z bazą danych, dopiero kiedy pobiorę od użytkownika wszystkie dane to wprowadzam je do bazy

@nospor, zatem jak odpowiednio zaindeksować te dane w sesji? grzebałem troche w internecie i to wszystko sensowne co znalazłem na ten temat. wiem co chce zrobić, ale brakuje mi znajomości phpa.
Go to the top of the page
+Quote Post
iwosz
post
Post #5





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Ok, no więc inaczej, mamy form:
  1. <form action="plik1.php" method="post">
  2. <input name="id_prz" type="text" />
  3. <input name="godzina" type="text" />
  4. <input value="Wyslij" type="submit" />
  5. </form>

W pliku plik1.php odbieramy dane z forma:
  1. $_SESSION['form']['id_prz'] = $_REQUEST['id_prz'];
  2. $_SESSION['form']['godzina'] = $_REQUEST['godzina'];
  3.  
  4. echo '<pre>';
  5. print_r($_SESSION['form']); // wyswietlamy dane odebrane z forma

W pliku plik2.php odczytujemy dane z sesji i robimy z nimi co chcemy:
  1. $id_prz = $_SESSION['form']['id_prz'];
  2. $godzina = $_SESSION['form']['godzina'];
  3.  
  4. // robimy z odczytanymi danymi co chcemy

i z bani thumbsupsmileyanim.gif


--------------------
Pozdrawiam,

iwosz.
Go to the top of the page
+Quote Post
-mtweeman-
post
Post #6





Goście







Niestety częściowo nie działa. Ta część na której najbardziej mi zależy, tzn. dostęp do danych w drugim pliku php jak w przypadku tablicy nie funkcjonuje. Otrzymuję wprawdzie ostatnie wprowadzone dane przez użytkownika, tj. id_prz oraz godz, ale nie ma wcześniejszych.
Go to the top of the page
+Quote Post
-mtweeman-
post
Post #7





Goście







Przy zapamietywaniu kolejnych rekordów w sesji powinien być jakiś licznik żeby indeksować koeljne wpisy gotyczące id_prz oraz godziny. W ten sposób będzie można odczytać w drugim pliku php id_prz oraz godziny jakie były kolejno wprowadzane przez użytkownika.
Go to the top of the page
+Quote Post
iwosz
post
Post #8





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Ehh, czemu tego od razu nie piszesz? Ok, więc zapisując do sesji trzeba dodać indeks:

plik1.php:
  1. $_SESSION['form'][count($_SESSION['form'])]['id_prz'] = $_REQUEST['id_prz'];
  2. $_SESSION['form'][count($_SESSION['form'])]['godzina'] = $_REQUEST['godzina'];
  3.  
  4. echo '<pre>';
  5. print_r($_SESSION['form']); // wyswietlamy dane odebrane z forma

count() zlicza elementy w tablicy, tablica jest indeksowana od 0 więc za każdym razem count() zwróci numer o 1 większy (dla tab[0] count() zwróci 1 itd.)

i dalej w plik2.php mamy już tablice wielowymiarową więc musimy ją przeglądać:
  1. foreach($_SESSION['form'] as $formVals) {
  2. $id_prz = $formVals['id_prz'];
  3. $godzina = $formVals['godzina'];
  4.  
  5. // robimy z odczytanymi danymi co chcemy
  6. }


Ten post edytował iwosz 10.11.2011, 21:11:47


--------------------
Pozdrawiam,

iwosz.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 13:33