Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie tylko wybranych linii?
Forum PHP.pl > Forum > PHP
Patrykuss
Witam wszystkich na tym forum (dzisiaj się zarejestrowałem) i od razu przechodze do rzeczy. Mam sobie kod, który "powinien" pokazywać mi tylko linie o id podobnym do nazwy użytkownika ale tak nie jest. Oto kod:
  1. <?php
  2. $user = $_COOKIE['login'];
  3. $filemess = file("pw.txt");
  4. $filemesss = $filemess[$user];
  5. foreach ($filemesss as $file) {
  6. $wpis = explode("|", $file);
  7. $odbiorca = $wpis[0];
  8. $nadawca = $wpis[1];
  9. $title = $wpis[2];
  10. $message = $wpis[3];
  11.  
  12. print("<TABLE style='border: 1px solid #FFCC00; padding: 3px; margin: 2px; font: 10px verdana, arial;
     color: white; width: 98%;'><TR><TD width='150px' style='text-align: left;'>Nadawca: $nadawca</TD><TD style='text-align: left;'>Tytuł: $title</TD><TD width='450px' style='text-align: left;'>$message</TD></TD></TABLE><br/>"
    );
  13. }
  14.  
  15. ?>
a błąd jaki mi wywala to:

Warning: Invalid argument supplied for foreach() in /home/haessquad/domains/haes.pliki.pl/public_html/private.php on line 58


I nie mam już pomysłu na to. Proszę o pomoc i z góry dziękuję.
Ludvik
  1. <?php
  2. var_dump($user);
  3. var_dump($filemess);
  4. ?>

Powinno Ci coś rozjaśnić... Linie są numerowane od zera i wszystkie indeksy są liczbami... Nie wiem co jest w zmiennej $user, ale nie wydaje mi się, żeby to liczba była. Dalej kompletnie nie rozumiem... Pobierasz linię (string) i chcesz ją iterować... Tego nie da się zrobić. Znów z pomocą przyjdzie var_dump...
Patrykuss
Tzn. chodzi mi o to że np. mam cookie login o wartości Patrykuss to żeby skrypt pokaywał mi linie z id Patrykuss.
Ludvik
A gdzie w tej linii masz to zapisane? Bo nie widzę nigdzie takich informacji. Linie mają numery a nie identyfikatory, jeżeli potrzebujesz identyfikatorów, to zapisz sobie w tablicy (id => nr linii), a następnie zserializuj ją i zapisz do innego pliku.
Patrykuss
Jedna linia w pliku przedstawia się mniej więcej tak:
Patrykuss|Patrykuss|sprawdzam|testing
Pierwsze to odbiorca (id) potem jest nadawca, tytuł i treść właściwa.
Ludvik
  1. <?php
  2. $user = $_COOKIE['login'];
  3. $data = file("pw.txt");
  4. $lines = count($data);
  5. $line = 0;
  6. $row = null;
  7. while ($line < $lines || $row) {
  8. $tempRow = explode($data[$line]);
  9. if ($user == $tempRow[0]) {
  10. $row = $tempRow;
  11. }
  12. $line++;
  13. }
  14. if ($row === null) {
  15. // Nie ma takiego wpisu.
  16. }
  17. ?>

Nie testowałem i nie jest to najlepszy sposób na wykonanie tego... Lepszy pomysł opisałem w poprzednim poście, pokombinuj...

Poza tym umieszczasz niezakodowany plik .txt w katalogu dostępnym z zewnątrz. Do tego ma ładną nazwę pw.txt. Tak się nie robi... Ten błąd był opisywany tysiące razy na forum...
Patrykuss
Cytat
Poza tym umieszczasz niezakodowany plik .txt w katalogu dostępnym z zewnątrz. Do tego ma ładną nazwę pw.txt. Tak się nie robi... Ten błąd był opisywany tysiące razy na forum...
Bo to jest na razie wersja testowa. Jak wszystko będzie działać to zrobie funkcję szyfrującą i odszyfrowującą ale kodować będę chyba tylko treść i tytuł. A co do kodu to dzięki. Zaraz go sprawdzę.

Twój kod jakoś mi nie podchodził i sobie przypomniałem że kiedyś pisałem skrypt wyświetlania samochodów dla komisu i skorzystałem z niego. Oczywiście musiałem go trochę zmodyfikować i wyszło mi coś takiego:
  1. <?php 
  2. define("PW", "pw.txt"); 
  3. $cookie = $_COOKIE['login'];
  4. $pw = file(PW); 
  5. $cale = array_reverse($pw);
  6. foreach ($cale as $i) { 
  7. $sam = explode("|", $i); 
  8. $odbiorca = $sam[0]; 
  9. $nadawca = $sam[1]; 
  10. $title = $sam[2];
  11. $wiadomosc = $sam[3];
  12.  
  13. if (!isset($_GET['user'])) { 
  14.  echo "Nie masz prawa oglądania tej części strony!"; 
  15. } elseif($odbiorca == $_GET['user'] && $odbiorca == $cookie) { 
  16.  echo("<TABLE style='border: 1px solid #FFCC00; padding: 3px; margin: 2px; font: 10px verdana, arial;
     color: white; width: 98%;'><TR><TD width='150px' style='text-align: left;'>Nadawca: $nadawca</TD><TD style='text-align: left;'>Tytuł: $title</TD><TD width='450px' style='text-align: left;'>$wiadomosc</TD></TR></TABLE><br/>"
    ); 
  17.  
  18. } 
  19. } 
  20.  
  21. ?>
I działa biggrin.gif biggrin.gif Ale i tak wielkie thx.
Ludvik
Szkoda tylko obrabiać 1000 wierszy, skoro dane nam potrzebne są w pierwszej linijce. Wypadało by wyskoczyć z pętli w momencie, gdy dane zostały znalezione.
Patrykuss
Myślisz o break; ?
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.