Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> parsowanie tekstu
Aklim...
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.07.2005

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


Witam,

mam plik tekstowy uzytkownicy.txt w postaci:
Kod
ip|10_cyfr|nazwa_usera1
ip|10_cyfr|niezalogowany
ip|10_cyfr|nazwa_usera2


chcialbym parsowac ten tekst tak by w zmiennej $zalogowanych znalazla sie ilosc userow zalogowanych (to są Ci, którzy _nie_ mają _niezalogowany_ w pliku tekstowym)
Sądzę, że trzeba to zrobić wykorzystując funkcję expolde() oraz robiąc pętle.
Nie wiem jednak jak to w sumie napisać, a niestać mnie na programistę php co zrobi stronę naszego klubu, więc sam się za to biorę.
Liczę na Waszą pomoc w tym poszczególnym elemencie już całkiem dobrze trzymającej się całości, którą z trudem i nieocenioną pomocą innych jakoś tworzę [o ile można to tak nazwać (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) ] (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam i proszę o odpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


  1. <?php
  2.  
  3. $arrFile = file( 'uzytkownicy.txt' );
  4.  
  5. $intCounter = 0;
  6.  
  7. if( count( $arrFile ) > 0 )
  8. {
  9. foreach( $arrFile as $arrValue )
  10. {
  11. if( $arrValue[ 2 ] == 'niezalogowany' )
  12. {
  13. $intCounter += (integer)$arrValue[ 1 ];
  14. }
  15. }
  16. }
  17.  
  18. echo $intCounter;
  19.  
  20. ?>


Coś takiego :?:

P.S.
Pisane z palca, mógł się wkraść jakis błąd.
Go to the top of the page
+Quote Post
Aklim...
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.07.2005

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


Zwraca zero niezależnie czy w uzytkownicy.txt są wpisani użytkownicy niezalogowani ( wpis w postaci
ip|10_cyfr|niezalogowany ) czy teź są zalogowani ( wtedy wpis ma postać ip_usera|10_cyfr|nazwa_usera ).

Co jest źle?
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Co to jest 10_cyfr ?
Licza 10-cio cyfrowa?

Podaj fragmanet przykładowego pliku.
Go to the top of the page
+Quote Post
Aklim...
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.07.2005

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


Kod
83.26.245.87|1136850178|gosc
127.0.0.1|1136850296|aklim


ta liczba to wcześniej zapisany time(), służy mi do czegoś innego.

Ten post edytował Aklim... 10.01.2006, 00:44:56
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


1. Ale ze mnie glupek (może to ta pora "dnia"). Mój pierwszy kod działa odwrotnie jak chciałeś. Sprawdza na oklicznośc niezalogowania. I to jeszcze źle działa bo zapomniałem całkowicie o explode() (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
2. To powinno być OK:
  1. <?php
  2.  
  3. $arrFile = file( 'uzytkownicy.txt' );
  4.  
  5. $intCounter = 0;
  6.  
  7. if( count( $arrFile ) > 0 )
  8. {
  9. foreach( $arrFile as $arrRow )
  10. {
  11. $arrValue = explode( '|', $arrRow );
  12. if( $arrValue[ 2 ] != 'niezalogowany' )
  13. {
  14. $intCounter++;
  15. }
  16. }
  17. }
  18.  
  19. echo $intCounter;
  20.  
  21. ?>


BTW: Przenoszę na php Pocz.
Go to the top of the page
+Quote Post
Aklim...
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.07.2005

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


To działa już prawie jak ma działać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Teraz zwracana wartość jest sumą wszystkich użytkowników - zalogowanych i niezalogowanych. Ja chcę sumę użytkowników, którzy są zalogowani (czyli bez niezalogowany w wpisie). Da się takie coś zrobić w php w ogóle? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Echhh, szkolny błąd. To znak że już czas iść spać :/

  1. <?php
  2.  
  3. $arrFile = file( 'uzytkownicy.txt' );
  4.  
  5. $intCounter = 0;
  6.  
  7. if( count( $arrFile ) > 0 )
  8. {
  9. foreach( $arrFile as $arrRow )
  10. {
  11. $arrValue = explode( '|', $arrRow );
  12. if( trim( $arrValue[ 2 ] ) !== 'niezalogowany' )
  13. {
  14. $intCounter++;
  15. }
  16. }
  17. }
  18.  
  19. echo $intCounter;
  20.  
  21. ?>


Za pomocą trim() trzeba się pozbyć znaków niewidocznych, takich jak enter na końcu linii, bo zaburza on sprawdzanie warunku.
Go to the top of the page
+Quote Post
Aklim...
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.07.2005

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


Ekstra :]
Jesteś super pomocny człowiek (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Bo działa!
Teraz tylko... mam już wszystkich uzytkownikow, zalogowanych, niezalogowanych, najnowszego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Teraz pozostalo mi wyswietlac nazwy uzytkownikow, ktorzy są zalogowani. Ale nad tym to już sam pomyślę, a jak będę miał problem to napiszę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam.
Go to the top of the page
+Quote Post
mike
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Aklim... @ 2006-01-10 01:04:56)
Teraz pozostalo mi wyswietlac nazwy uzytkownikow, ktorzy są zalogowani.

  1. <?php
  2.  
  3. $arrFile = file( 'uzytkownicy.txt' );
  4.  
  5. $arrOnLineUsers = array();
  6.  
  7. if( count( $arrFile ) > 0 )
  8. {
  9.  
  10. foreach( $arrFile as $arrRow )
  11. {
  12. $arrValue = explode( '|', $arrRow );
  13. if( trim( $arrValue[ 2 ] ) !== 'niezalogowany' )
  14. {
  15. $arrOnLineUsers[] = $arrValue[ 2 ];
  16. }
  17. }
  18.  
  19. $intOnLineUsers = count( $arrOnLineUsers );
  20. if( $intOnLineUsers > 0 )
  21. {
  22. echo 'Zalogowanych: ' . $intOnLineUsers . "<br/>n";
  23. echo 'Są to: ' . implode( ', ', $arrOnLineUsers );
  24. }
  25. }
  26.  
  27. ?>
Go to the top of the page
+Quote Post
Aklim...
post
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.07.2005

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


Wielkie dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mam jeszcze jedno pytanie.
Chciałbym, aby po kliknięciu na nazwę użytkownika włączał się jego profil.
Link do profilu ma postać:
Kod
index.php?miejsce=profil&id_uzytkownika=X

gdzie X jest id_uzytkownika, ktore pobieram z bazy na podstawie nazwy uzytkownika takim zapytaniem:
  1. SELECT `nazwa_uzytkownika`, `id_uzytkownika`
  2. FROM `uzytkownicy` WHERE `nazwa_uzytkownika` = \'' . $nazwa_uzytkownika_z_pliku_tekstowego . ''

Jak to można w miarę wydajnie wpleść w ten kod, tak by nazwa zalogowanego użytkownika była linkiem z odpowiednim ID do jego profilu? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Aklim... 10.01.2006, 19:43:39
Go to the top of the page
+Quote Post
mike
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


  1. <?php
  2.  
  3. $strNick = 'mike_mech'; //  ;-)
  4.  
  5. $strQuery = 'SELECT nazwa_uzytkownika, id_uzytkownika FROM uzytkownicy WHERE nazwa_uzytkownik
    a = "'
    .$strNick.'"';
  6. $resQueryResult = mysql_query( $strQuery );
  7.  
  8. if( mysql_num_rows( $resQueryResult ) > 0 )
  9. {
  10. $arrRow = mysql_fetch_array( $resQueryResult );
  11.  
  12. echo '<a href="index.php?miejsce=profil&amp;id_uzytkownika='.$arrRow[ 'id_uzytkownika' ].'">'.$arrRow[ 'nazwa_uzytkownika' ].'</a>';
  13. }
  14.  
  15. ?>
Go to the top of the page
+Quote Post
Balas
post
Post #13





Grupa: Zarejestrowani
Postów: 347
Pomógł: 0
Dołączył: 27.08.2005
Skąd: Inowrocław

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


Mam takie pytanie:
Jezeli uzywasz MYSQL'a to czemu uzywasz jeszcze pliku uzytkownicy.txt (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) latwiej by to bylo zrobic tylko na MYSQL'u, chyba ze na prawde zalezy ci na pliku txt (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Aklim...
post
Post #14





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.07.2005

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


Cytat(mike_mech @ 2006-01-10 19:10:27)
  1. <?php
  2.  
  3. $strNick = 'mike_mech'; //  ;-)
  4.  
  5. $strQuery = 'SELECT nazwa_uzytkownika, id_uzytkownika FROM uzytkownicy WHERE nazwa_uzytkownik
    a = "'
    .$strNick.'"';
  6. $resQueryResult = mysql_query( $strQuery );
  7.  
  8. if( mysql_num_rows( $resQueryResult ) > 0 )
  9. {
  10. $arrRow = mysql_fetch_array( $resQueryResult );
  11.  
  12. echo '<a href="index.php?miejsce=profil&amp;id_uzytkownika='.$arrRow[ 'id_uzytkownika' ].'">'.$arrRow[ 'nazwa_uzytkownika' ].'</a>';
  13. }
  14.  
  15. ?>

no nie do końca o to chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
tzn. takie zapytanie skonstruwać umiem, ale ja nie wiem jak to wpleść do kodu, który wcześniej podałeś tak by np. wynikiem było:
Kod
Zalogowanych: 3<br/>
Są to:
<a href="index.php?miejsce=profil&amp;id_uzytkownika=1" title="Aklim">Aklim</a>,
<a href="index.php?miejsce=profil&amp;id_uzytkownika=5" title="Zenek">Zenek</a>,
<a href="index.php?miejsce=profil&amp;id_uzytkownika=7" title="Stefan">Stefan</a>


teraz rozumiesz o co mi chodzi? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) te nazwy userów z pliku uzytkownicy.txt poza tym, że są wyświetlane mają posłużyć do odnalezienia swoich, odpowiednich ID w bazie. Da się tak? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-Guest-
post
Post #15





Goście







ok. Problem rozwiązany.
wystarczyło dać trim() dla $strUser, żeby ta zmienna wreszcie zaczęła funkcjonować w zapytaniu SQL tam gdzie dawałem where nazwa_uzytkownika = $strUser (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam i dzięki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 17:34