Reklama

Mój mały problem

  1. Mistrzu dragon
    Mistrzu dragon
    Skoro niesiecie pomocną stopę to zapytam.

    Na wstępie powiem że jestem samoukiem i z php/mysql nie miałem nigdy doczynienia poza hello world , ale jestem ciekawskim gościem i dla mnie liczy się rozwiązanie zagadki xd
    Zainspirowany tym tematem : http://torg.pl/showthread.php?429676...-Ranking-Torga
    Postanowiłem że napiszę sobie skrypt który będzie na bieżąco przeszukiwał profile wszystkich graczy na lolkingu i torgu po czym wyciągał różne dane , uploadował je do bazy mysql , sortował a potem wyświetlał. + robił gotowy kod do wklejenia na forum.
    Udało się , dla chcącego nic trudnego (zwłaszcza jak ma się internet) ale są też problemy których nie mogę rozwiązać bo nie znam php :P

    Po pierwsze pobieram funkcją preg_match tzw. Score na podstawie konkretnego diva i zapisuje do zmiennej, wygląda to tak :
    Kod :
    preg_match('#<div style="display: inline-block; vertical-align: middle; font: bold 20px/32px &quot;Trebuchet MS&quot;; margin-left: 0px;">(.*)</div>#iU', $strona, $wynik);
    $score = "$wynik[1]";
    I w większości przypadków jest to ok , gracze grają tylko Solo 5v5 , więc pobiera pierwszy napotkany wynik, niby git, niektórzy jednak grają jeszcze 3v3 wtedy w kodzie strony dochodzi drugi taki sam div i niestety leży on przed Solo 5v5 , więc pobiera błędny score.
    Pytanie brzmi : jak obić to w warunek że jeżeli są 2 takie same divy (lub więcej) to realizuje ten kod?
    Kod :
    preg_match_all('#<div style="display: inline-block; vertical-align: middle; font: bold 20px/32px &quot;Trebuchet MS&quot;; margin-left: 0px;">(.*)</div>#iU', $strona, $wynik);
    $score = $wynik[1][1];
    Jak ktoś mi z tym pomoże to wypłacze się z drugim problemem ;d
  2. Zeimer
    Zeimer
    Po pierwsze: nigdy nie używaj CSS w kodzie HTML lub PHP.

    Po drugie: jeżeli to 5v5 jest zawsze na końcu, to spróbuj liczyć od końca.
  3. Killavus
    Killavus
    Polecałbym zamiast z wyrażeń regularnych skorzystać z jakiegoś parsera HTMLa - w Rubim jest Nokogiri, bodajże alternatywa dla PHP to DOMDocument.

    Pozdrawiam
    Killavus
  4. Mistrzu dragon
    Mistrzu dragon
    Nie jest, są 3 różne rodzaje rankingów , w kolejności : Team 3v3 , Solo 5v5 , Team 5v5.
    Nie mam wpływu na to w które grają ludzie , a zawsze chcę pobierać środkowy.

    #edit
    dobra poczytam o tym DOMDocument i pokombinuję.

    Pozostaje jeszcze kwestia 2giego problemu czyli jak już wspomniałem tworzenia kodu na forum.
    Dane odświeżone , posortowane więc wyświetlam je z bazy i na tej podstawie tworze kod.
    Stałe są takie elementy jak podział na dywizję i tiery.
    Więc .. może lepiej przykład (ze względu na BBcode wrzucam na wklej.org)
    część kodu : http://wklej.org/id/1017934/
    co ma wyświetlać : http://wklej.org/id/1017938/
    co wyświetla : http://wklej.org/id/1017941/

    Zawsze poprawnie "segreguje" pierwszego gracza a resztę wywala na koniec listy. Czego nie wiem i co robię źle?
    Jak dałem echo $dywizja na końcu pętli to wszystkie dywizje z bazy wyświetliły się poprawnie więc powinno poprawnie przydzielić każdego według ifów a nie tylko pierwszego...
  5. Alex Fortune
    Alex Fortune
    najpierw wyciagnij diva okalajacego akurat ten ranking, np przez explode() czy preg_match
Pokazuje wyniki od 1 do 5 z 5
Bookmarks