Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyświetlanie tylko wybranych linii?
Patrykuss
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.08.2006

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


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ę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Ludvik
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


  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...


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





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.08.2006

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


Tzn. chodzi mi o to że np. mam cookie login o wartości Patrykuss to żeby skrypt pokaywał mi linie z id Patrykuss.
Go to the top of the page
+Quote Post
Ludvik
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


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.


--------------------
Go to the top of the page
+Quote Post
Patrykuss
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.08.2006

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


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.
Go to the top of the page
+Quote Post
Ludvik
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


  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...

Ten post edytował Ludvik 21.08.2006, 20:45:33


--------------------
Go to the top of the page
+Quote Post
Patrykuss
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.08.2006

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


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.
Go to the top of the page
+Quote Post
Ludvik
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


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.


--------------------
Go to the top of the page
+Quote Post
Patrykuss
post
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 21.08.2006

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


Myślisz o break; ?
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: 20.08.2025 - 18:17