Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Błąd Notice: Undefined offset
Forum PHP.pl > Forum > Przedszkole
kubax33
Mam taki kod:

  1. $szukane = (isset($_GET['zamowienie']) ? $_GET['zamowienie'] : NULL);
  2.  
  3. if ($szukane !== NULL)
  4. {
  5. $plik = 'db.txt';
  6. $dane = file($plik);
  7.  
  8. if (trim($szukane) != '')
  9. {
  10. foreach($dane as $linia => $text)
  11. {
  12. list($nr[$linia], $nick[$linia], $ilosc[$linia]) = explode('|', $text);
  13. }
  14.  
  15. $zwrot = '';
  16.  
  17. for($i=0; $i<count($nr); $i++)
  18. {
  19. if (strpos($nick[$i],$szukane) !== false && $szukane == $nick[$i])
  20. {
  21. $zwrot .= $nr[$i].', '.$nick[$i].', '.$ilosc[$i].'<br />';
  22. }
  23.  
  24. }
  25.  
  26. if($zwrot != '')
  27. {
  28. echo $zwrot;
  29. }
  30. else
  31. {
  32. echo '!!!';
  33. }
  34. }
  35. }


i w firefoxie wszystko ładnie smiga, ale w IE wyskakuje bład:
Notice: Undefined offset: .... in /homez.506/pracowni/www/panel/status.php on line 12

dotyczy linijki:
  1. list($nr[$linia], $nick[$linia], $ilosc[$linia]) = explode('|', $text);


nie wiem co moze byc przyczyną proszę o pomoc nie mam pomysłu na rozwiązanie
strife
Błąd jest po stronie PHP, więc nie ma możliwości jako takiej, aby tylko to się wyświetlało pod IE (no chyba, że w kodzie gdzieś jest warunek if browser == IE then notice), w każdym razie proponuje wyczyścić cache w IE, a także upewnić się czy rzeczywiście w firefoxi'e tego błędu nie ma przeszukując źródło strony w nim pod kątem występowania błędów tego typu.
mortus
Przyczyną błędu może być np. pusta lub niepełna linia (tzn. taka, która nie zawiera trzech wymaganych informacji) w pliku db.txt. Możesz pominąć puste linie dodając odpowiedni drugi argument do funkcji file(). Jeśli natomiast linie nie są jednakowe, to trzeba zliczać liczbę elementów tablicy, którą tworzy explode() i w zależności od tej liczby odpowiednio przepisywać wartości do tablic. No i właśnie, może lepiej byłoby zamiast trzech tablic użyć jednej, asocjacyjnej.
  1. foreach($dane as $linia => $text) {
  2. $temp = explode('|', $text);
  3. if(count($temp) == 3) {
  4. $zamowienia[$linia]['nr'] = $temp[0];
  5. $zamowienia[$linia]['nick'] = $temp[1];
  6. $zamowienia[$linia]['ilosc'] = $temp[2];
  7. }
  8. }
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.