Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Błąd odczytu z simple_html_dom, PHP
majesgrudziadz
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Witam ... mam gdzieś błąd w kodzie mianowicie w //REZULTATY i nie mogę sobie poradzić ...

  1. <?php
  2.  
  3. include_once('simple_html_dom.php');
  4.  
  5.  
  6. //ŁĄCZENIE SIĘ ZE STRONĄ STATYSTYK
  7. $ch = curl_init("http://worldoftanks.eu/community/accounts/502674822-majes_pl/");
  8. curl_setopt($ch, CURLOPT_HEADER, 0);
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10. $output= curl_exec($ch);
  11.  
  12.  
  13. //KONWERSJA HTML DOM
  14. $html = str_get_html($output);
  15.  
  16.  
  17.  
  18. //DATA REJESTRACJI
  19. foreach( $html->find('div.b-data-create') as $b ) {
  20. $stamp = $b->find('span',0);
  21. $wotStats['register'] = $stamp->getAttribute('data-timestamp');
  22. }
  23.  
  24. //DATA AKTUALIZACJI
  25. foreach( $html->find('div.b-data-date') as $b) {
  26. $stamp = $b->find('span',0);
  27. $wotStats['update'] = $stamp->getAttribute('data-timestamp');
  28. }
  29.  
  30. //INFO KLANOWE
  31. foreach ($html->find('div.b-clan-list') as $b) {
  32.  
  33. $wotStats['clan_url'] = $b->find('a',0)->getAttribute('href');
  34. $wotStats['clan_img'] = $b->find('img',0)->getAttribute('src');
  35. $wotStats['clan_tag'] = $b->find('span.tag',0)->plaintext;
  36. $wotStats['clan_name'] = $b->find('span.name',0)->plaintext;
  37. $wotStats['clan_motto'] = $b->find('p.motto',0)->plaintext;
  38. $wotStats['clan_days'] = $b->find('td.first',0)->find('span',0)->plaintext;
  39. $wotStats['clan_enrolled'] = $b->find('td.first',0)->next_sibling()->find('span',0)->getAttribute('data-timestamp');
  40. }
  41.  
  42. //REZULTATY
  43. foreach($html->find('table.t-table-dotted') as $t) {
  44.  
  45. $table = $t->find('th',0)->plaintext;
  46.  
  47. if ($table == "Overall Results")
  48. {
  49. $wotStats['battles'] = fixStat($t->find('td.td-number-nowidth',0)->plaintext);
  50. $wotStats['victories'] = fixStat($t->find('td.td-number-nowidth',1)->plaintext);
  51. $wotStats['defeats'] = fixStat($t->find('td.td-number-nowidth',2)->plaintext);
  52. $wotStats['survived'] = fixStat($t->find('td.td-number-nowidth',3)->plaintext);
  53. }
  54. }
  55.  
  56.  
  57. echo 'Data rejestracji: '.$wotStats['register'].' - '.date("d.m.Y", $wotStats['register']).'<br>';
  58. echo 'Dane z: '.$wotStats['update'].' - '.date("d.m.Y", $wotStats['update']).'<br>';
  59.  
  60. echo 'Url klanu: '.$wotStats['clan_url'].'<br>';
  61. echo 'Img klanu: '.$wotStats['clan_img'].'<br>';
  62. echo 'Tag klanu: '.$wotStats['clan_tag'].'<br>';
  63. echo 'Nazwa klanu: '.$wotStats['clan_name'].'<br>';
  64. echo 'Motto klanu: '.$wotStats['clan_motto'].'<br>';
  65. echo 'Dni w klanie: '.$wotStats['clan_days'].'<br>';
  66. echo 'Data zaciągu: '.$wotStats['clan_enrolled'].' - '.date("d.m.Y", $wotStats['clan_enrolled']).'<br>';
  67. echo '<br><br>';
  68. echo 'Bitew: '.$wotStats['battles'].'<br>';
  69. echo 'Zwycięstw: '.$wotStats['victories'].'<br>';
  70. echo 'Przegranych: '.$wotStats['defeats'].'<br>';
  71. echo 'Przetrwanych: '.$wotStats['survived'].'<br>';
  72.  
  73. ?>


Do momentu daty zaciągu ... ściąga mi dane idealnie ... później zaczynają się schody i nie wiem co jest nie tak.... proszę o podpowiedzi

informację pobierane są ze strony http://worldoftanks.eu/community/accounts/...74822-majes_pl/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Witaj.

Problemem jest tutaj funkcja fixStat(), którą masz w liniach 49-52.
Gdy usuniesz jej wywołanie wszystko powinno być ok(u mnie jest).

Dwie dodatkowe uwagi.
Jak łączysz się za pomocą CURL to staraj się zamykać połączenie po pobraniu danych.
Dobrym zwyczajem jest inicjalizowanie tablic zanim zaczniesz wrzucać do nich dane.

Wyglądałoby to tak:
  1. <?php
  2.  
  3. include_once('simple_html_dom.php');
  4.  
  5. $wotStats = array();
  6.  
  7. //ŁĄCZENIE SIĘ ZE STRONĄ STATYSTYK
  8. $ch = curl_init("http://worldoftanks.eu/community/accounts/502674822-majes_pl/");
  9. curl_setopt($ch, CURLOPT_HEADER, 0);
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  11. $output= curl_exec($ch);
  12. curl_close($ch);
  13.  
  14. // dalsza część kodu...
  15.  


Pozdrawiam.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Ok działa lecz mam jeszcze jeden problem ... mój dalszy kod to:

  1. <?php
  2. $wotStats['global_rating_val'] = $t->find('td.value',0)->plaintext;
  3. $wotStats['global_rating_place'] = $t->find('td.value',1)->plaintext;
  4. ?>


Kod html jest taki:

  1. <td class="right value">82</td>
  2. <td class="right value"> 36&nbsp;414</td>


coś mi nie pasuje z tym value i right value ... nie wyświetla mi wyniku ... mogę prosić o podpowiedź, pomoc ?



Już mam gotowe smile.gif poradziłem sobie odwoływałem się nie do tej tabelki smile.gif

Ten post edytował majesgrudziadz 27.01.2013, 11:17:37
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: 21.08.2025 - 06:22