Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Segregacja według dat wyników z kodu źródłowego innej strony
honytowk
post
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


Witajcie mam pewien problem, otóż od pewnego czasu próbuje wyciągnąć dane (o wygranych turniejach) z portalu kurnik do swojego panelu administracyjnego (chce zrobić pewien system oceniania)

Ma to działać na zasadzie takiej że ludzie którzy będą się rejestrować na moim portalu [takimi samymi nickami jak na kurniku] zostaną wyświetleni w Panelu administracyjnym i ich turnieje które ostatnio wygrali

http://www.kurnik.pl/stat.phtml?uid=volt00...gid=ld&sk=5 <- tutaj pokazuje link ze statystykami przykładowego użytkownika i teraz z tego linku wyciągnąłem dane klasą " cutter " jest to klasa która wyciąga z podanej strony kod źródłowy a następnie ucina do pożądanych wyników.

w taki sposób wywołuje wyniki pożądanego usera:
  1. $w = new cutter('http://www.kurnik.pl/stat.phtml?uid='.$data["user_name"].'&gid=ld&sk=5', true);
  2. $w -> start('<table width="100%" cellspacing="2" cellpadding="2" border="0" class="ktb">', false, 1);
  3. $w -> end('</table>', false, -1);
  4. $w -> replace('</i>','<i>');
  5. $w -> replace('</b>','</i>');
  6. $w -> delete('<hr>');
  7. $w -> delete
  8. $datownik = $w->cut();
  9. echo"".$datownik."";


wynikiem jest:
Cytat
5299583 2010-12-28 (wto.) 00:30 volt00loca 3r, 2m 6 6 5299280 2010-12-27 (pon.) 22:40 nastka17 6r, 2m 16 12


Mogę oczywiście to pociąć na poszczególne elementy czyli zrobić oddzielnie zmienne do: id, daty, nicka założyciela konkursu

ale problem mam tego typu, że potrzebuje to posegregować według dat wyniki które są wyświetlane a zapisywać je do bazy nie mam za bardzo jak, ponieważ jeden user moze grać po kilka razy w tygodniu i wyświetli tak jak teraz 2 wyniki do jednego użytkownika.

Ma ktoś jakiś pomysł jak to posegregować nie zapisując do bazy ?

nie chce się narzucać, ale byłbym bardzo wdzięczny jeżeli ktoś z was zechciałby mi pomóc jeżeli tylko potrafi (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


a możesz mi pokazać gdzie ja zrobiłem, że ucina po konkretnej liczbie znaków? czytałeś w ogóle tamten skrypt co Ci dałem?

//ale co nie możesz średnika postawić? przecież w jakiś sposób tą swoją klasą wyciągasz dane z każdego rzędu tabeli, no to czy po tym rzędzie nie możesz w wyniku postawić separatora?


w ogóle to widzę, że źle się do tego zabrałeś a wystarczyło chwilo poguglować aby znaleźć prosty sposób na parsowanie tabeli -> http://stackoverflow.com/questions/4057574...atch-all-in-php

korzystając z tego sposobu i dorzucając proste przepisanie tablicy:

  1. $htmlContent = '
  2. <table width="100%" cellspacing="2" cellpadding="2" border="0" class="ktb">
  3. <tr class="kbl">
  4. <th width="9%">id</th>
  5. <th width="26%">termin</th>
  6. <th width="24%">organizator</th>
  7. <th width="20%">parametry</th>
  8. <th class="tar" width="8%">ucz.</th>
  9. <th class="tar" width="8%">m-ce</th>
  10. </tr>
  11.  
  12. <tr>
  13. <td><a href="/turn.phtml?tid=5299583">5299583</a></td>
  14. <td>2010-12-28 (<tt>wto.</tt>) 00:30</td>
  15. <td><a href="/stat.phtml?gid=ld&amp;uid=volt00loca">volt00loca</a></td>
  16. <td>3r, 2m</td>
  17. <td class="tar">6</td>
  18. <td class="tar">6</td>
  19. </tr>
  20. <tr>
  21.  
  22. <td><a href="/turn.phtml?tid=5299280">5299280</a></td>
  23. <td>2010-12-27 (<tt>pon.</tt>) 22:40</td>
  24. <td><a href="/stat.phtml?gid=ld&amp;uid=nastka17">nastka17</a></td>
  25. <td>6r, 2m</td>
  26. <td class="tar">16</td>
  27. <td class="tar">12</td>
  28. </tr>
  29. </table>
  30.  
  31. ';
  32.  
  33. $dom = new DOMDocument;
  34. $dom->loadHTML( $htmlContent );
  35. $rows = array();
  36. foreach( $dom->getElementsByTagName( 'tr' ) as $tr ) {
  37. $cells = array();
  38. foreach( $tr->getElementsByTagName( 'td' ) as $td ) {
  39. $cells[] = $td->nodeValue;
  40. }
  41. if(count($cells)) $rows[] = $cells;
  42.  
  43. }
  44. print_r($rows);
  45.  
  46. $new_data_set = array();
  47. //do tego punktu przerobiliśmy tabelę na praktyczną tablicę w php
  48. if(count($rows))
  49. {
  50. foreach($rows as $value)
  51. {
  52. $date_set = explode(' ', $value[1]);
  53. if(!array_key_exists($date_set[0], $new_data_set)) $new_data_set[$date_set[0]] = array();
  54. $new_data_set[$date_set[0]][] = array
  55. (
  56. 'id'=>$value[0],
  57. 'date'=>$date_set[0],
  58. 'day'=>$date_set[1],
  59. 'time'=>$date_set[2],
  60. 'params'=>$value[3],
  61. 'players'=>$value[4],
  62. 'result'=>$value[5]
  63. );
  64. }
  65. }
  66. asort($new_data_set);
  67. print_r($new_data_set);


otrzymujesz tablicę z ładnie porozdzielanymi parametrami, posortowanymi datą:
  1. Array
  2. (
  3. [2010-12-27] => Array
  4. (
  5. [0] => Array
  6. (
  7. [id] => 5299280
  8. [date] => 2010-12-27
  9. [day] => (pon.)
  10. [time] => 22:40
  11. [params] => 6r, 2m
  12. [players] => 16
  13. [result] => 12
  14. )
  15.  
  16. )
  17.  
  18. [2010-12-28] => Array
  19. (
  20. [0] => Array
  21. (
  22. [id] => 5299583
  23. [date] => 2010-12-28
  24. [day] => (wto.)
  25. [time] => 00:30
  26. [params] => 3r, 2m
  27. [players] => 6
  28. [result] => 6
  29. )
  30.  
  31. )
  32.  
  33. )
  34.  


Ten post edytował tehaha 2.01.2011, 14:25:11
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 22:21