Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] odczyt z tablicy
Forum PHP.pl > Forum > Przedszkole
Miko1
Witam. Czy mógłby mi ktoś pomóc. Mam problem próbuje wykonać odczyt danych studenta z tablicy i mam kłopot z przechodzeniem miedzy tymi danymi. Czyli po uruchomieniu wyświetla mi pierwszy element tablicy, po wciśnięciu "next" powinien czytać drugi element itd., a tego nie robi. Czego brakuje, albo co jest nie tak.

tak zdefiniowałem działanie klawiszy "next, last itd":

  1. <?php
  2. case "first":
  3. $_SESSION['pointer']=0;
  4. header("Location: display.php");
  5. break;
  6. case "next":
  7. if($_SESSION['pointer']<$_SESSION['lenght']-1)
  8. {$_SESSION['pointer']++;}
  9. else{$_SESSION['pointer']=0;}
  10. header("Location: display.php");
  11. break;
  12.  
  13. ?>



a tak zrobiłem diplay:

  1. <?php
  2. include_once('function.inc');
  3. displayStyles('Przeglądanie danych studenta');
  4. $label=array('imię','nazwisko','index','grupa','semestr');
  5. $data[0]=array('Marek','Nowakowski','300','b','1');
  6. $data[1]=array('Marek','Nowak','301','b','1');
  7. $data[2]=array('Andrzej','Kowalski','302','b','1');
  8.  
  9. $len=count($data);
  10. $len1=count($data[0]);
  11.  
  12. if (!isset($_SESSION['pointer']))
  13. {
  14. $edit=$_SESSION['pointer'];
  15. $_SESSION['pointer']=0;  
  16. $_SESSION['lenght']=$len1;    
  17. }
  18. $ptr=$_SESSION['pointer'];
  19. for($i=0;$i<$len1;$i++)    
  20. startForm('control.php');
  21. displayForm($label,$data[$ptr],false);
  22. buttonBarDisplay();
  23. endForm();
  24. ?>
AngelusPL
Witam

Nie wiem na czym dokładnie polega błąd bo nie napisałeś mogę tylko się domyślać.

Proponuję użyć przed "if" print_r($_SESSION) lub var_dump($_SESSION) w na początku display.php aby zobaczyć czy przekazujesz dobre wartości.

Widzę jeszcze że w pętli for przekazujesz tą samą pozycję z tablicy kilka razy:
Kod
  displayForm($label,$data[$ptr],false);


powinno chyba być:
Kod
displayForm($label,$data[$ptr][$i],false);


Pozdr
Miko1
Jak zapiszę tak :
Kod
displayForm($label,$data[$ptr][$i],false);


to wówczas wogóle nie wypełnia formularza, jest pusty
AngelusPL
Proponuję najpierw opisać , na czym polega błąd.
Brak danych, ciągle te same dane ?

Proponuję też użyć komend, które mogą wyświetlić tablicę celem sprawdzenia poprawnej zawartości zmiennych lub oczekiwanej wartości.
print_r i var_dump;
Miko1
Cytat
Brak danych, ciągle te same dane ?


Ciągle wyświetla dane z tablicy [0] i te dane nie zmieniają się, a chcę aby przechodziłu kolejno do [1], [2] itd.
po wciśnięciu "next" i z tym mam problem,
AngelusPL
Czyli błąd musi być ustawianiu zmiennej $_SESSION['pointer'] lub $_SESSION['lenght'];

Podejrzewam, że błąd jest tutaj:

Kod
$label=array('imię','nazwisko','index','grupa','semestr');
$data[0]=array('Marek','Nowakowski','300','b','1');
$data[1]=array('Marek','Nowak','301','b','1');
$data[2]=array('Andrzej','Kowalski','302','b','1');

$len=count($data);
$len1=count($data[0]);

if (!isset($_SESSION['pointer']))
{
$edit=$_SESSION['pointer'];
$_SESSION['pointer']=0;  
$_SESSION['lenght']=$len1;    
}


Po pierwsze $_SESSION['lenght'] = $len ( czyli liczba wierszy) a nie liczba elementów w wierszu.
Po drugie $_SESSION['pointer'] na początku ma zero czyli jest na starcie ustawione. Warunek z if'a jest zawsze niespełniony(fałszywy) czyli program nigdy tam nie wchodzi.

Kod
if ($_SESSION['pointer'] == 0)
{
$edit=$_SESSION['pointer'];
$_SESSION['pointer']=0;  
$_SESSION['lenght']=$len1;    
}


Mam nadzieję, że to pomoże.
Miko1
W sumie po tych zmianach nic się nie zmieniło, ale wydaje mi się że w tym drugim kodzie zmienna sesyjna jest ustawiona na 0 elemnt tablicy:
  1. <?php
  2. case "first":
  3. $_SESSION['pointer']=0;
  4. header("Location: display.php");
  5. break;
  6. ?>
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.