Вземане на футболни мачове и добавяне в БД

bganonymous

Registered
Здравейте! :) Представа си нямам дали това е възможно, но все пак ще се опитам да ви обясня за какво става въпрос.

Има ли начин, всеки ден, да се вземат от RSS или някакъв XML файл, футболните мачове за деня, и да се добавят в БД? Вместо аз ръчно да добавям мачовете, те сами да се добавят в БД (първенство, домакин, гост, дата, час)? Например, в сайта http://tipster.bg/ (не е реклама) е невъзможно всеки ден някой ръчно да добавя мачовете. Вземат се от някъде автоматично.
 
Ето ти един базисен код:
PHP:
$html = file_get_contents('http://tipster.bg/');
preg_match_all('/\>(.*?)\<\/a\>/u',$html,$matches);
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>';
foreach($matches[0] as $futbol){
	echo $futbol.'<br>';
}

http://bg2.php.net/manual/bg/function.file-get-contents.php
 
bganonymous каза:
Пробвах го! Не ми помогна особено. Не изкарва мачовете добре.
Е това е просто пример. Настрой си регулярният израз. Обработи си стринга както желаеш да ти се показва. Това е най-базовото взимане на информацията. :)
 
bganonymous каза:
Не мога да се оправя сам. Помощ!
Горе долу стана. :)
PHP:
$html = file_get_contents('http://tipster.bg/');
preg_match_all('/\<a href\="\/mach\/(.*?)"\>(.*?)\<\/a\>/u',$html,$matches);
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>';

foreach($matches[2] as $futbol){
    echo $futbol.'<br>';
}
 
Да, а как да направя да изкарва за всеки мач първенство, дата, час, коефициентите? И да добавя в БД всеки мач?
 
PHP:
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>';
$html = file_get_contents('http://tipster.bg/');
preg_match_all('/\<tr class=\"tr0\"\>([\d\D]*?)\<\/tr\>/u',$html,$matches);
foreach($matches[0] as $futbol){
    preg_match('/time\"\>(.*?)\<\/td\>/u',$futbol,$time);
	preg_match('/\"\>(.*?)\<\/a\>/u',$futbol,$match);
    preg_match('/result\"\>(.*?)\<\/td\>/u',$futbol,$result);
    preg_match_all('/odd\"\>(.*?)\<\/td\>/u',$futbol,$odd);
	echo $match[1].'<br>';
	echo $time[1].'<br>';
	echo $result[1].'<br>';
	print_r($odd[1]);
	echo '<br>';
	$seriliaze = serialize($odd[1]);
	//INSERT INTO table (match,time,result,odd) VALUES ($match[1],$time[1],$result[1],$serialize);
}
// При извеждане от базата само се unserialize(odd) полето и отново имаш масив
 
bganonymous каза:
Нещо не се получава както трябва... :o :(
Кое не се получава? При мен си работи нормално. Дебъгни така само за визуализацията:

PHP:
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>';
echo '<pre>';
$html = file_get_contents('http://tipster.bg/');
preg_match_all('/\<tr class="tr0"\>([\d\D]*?)\<\/tr\>/u',$html,$matches);
foreach($matches[0] as $futbol){
    preg_match('/time"\>(.*?)\<\/td\>/u',$futbol,$time);
	preg_match('/"\>(.*?)\<\/a\>/u',$futbol,$match);
    preg_match('/result"\>(.*?)\<\/td\>/u',$futbol,$result);
    preg_match_all('/odd"\>(.*?)\<\/td\>/u',$futbol,$odd);
	echo $match[1].'<br>';
	echo $time[1].'<br>';
	echo $result[1].'<br>';
	print_r($odd[1]);
	echo '<br>';
	$seriliaze = serialize($odd[1]);
	//INSERT INTO table (match,time,result,odd) VALUES ($match[1],$time[1],$result[1],$serialize);
}
// При извеждане от базата само се unserialize(odd) полето и отново имаш масив
echo '</pre>';
 
PHP:
$html = file_get_contents('http://tipster.bg/');
preg_match_all('/\<tr class=\"tr0\"\>([\d\D]*?)\<\/tr\>/u',$html,$matches);
foreach($matches[0] as $futbol){
    preg_match('/time\"\>(.*?)\<\/td\>/u',$futbol,$time);
	preg_match('/\"\>(.*?)\<\/a\>/u',$futbol,$match);
    preg_match('/result\"\>(.*?)\<\/td\>/u',$futbol,$result);
    preg_match_all('/odd\"\>(.*?)\<\/td\>/u',$futbol,$odd);
	$json = json_encode($odd[1]);
	//INSERT INTO table (match,time,result,odd) VALUES ($match[1],$time[1],$result[1],$json);
}
// При извеждане от базата само се json_decode(odd) полето и отново имаш масив

http://bg2.php.net/manual/bg/function.json-encode.php
http://bg2.php.net/manual/bg/function.json-decode.php

Вместо сериализе и премахнах echo-тата те са просто за дебъг. Базата ти трябва да е с чарсет UTF-8.
 
bganonymous каза:
Няма да стане така!!! Ще трябва да си платя на някого. :) Иначе ти благодаря!
Защо? При положение, че кода ти е готов основният просто си добавяш в базата и вадиш. :) Вече може да търпи милион подобрения но като груб код даже е бързичак.
 
Ето темата: http://web-tourist.net/forum/viewtopic.php?t=127441.

Ако искаш ми пиши ЛС - да се разберем, ако можеш да ми направиш нещата перфектни. :)
 
bganonymous каза:
Ето темата: http://web-tourist.net/forum/viewtopic.php?t=127441.

Ако искаш ми пиши ЛС - да се разберем, ако можеш да ми направиш нещата перфектни. :)
PHP:
$html = file_get_contents('http://tipster.bg/klasirane/anglia');
preg_match_all('/\<table class="standing"\>([\d\D]*?)\<\/table\>/u',$html,$matches);
echo '<table>';
foreach($matches[1] as $string){
	echo $string;
}
echo '</table>';
Защо искаш да ги запазваш в базата? Просто поставяш кода на страницата и при рефреш то си взима нещата. Другият сайт ти изчислява всичко :D При промяна в него променят се нещата при рефреш и при теб.
 
За класирането - добре. Няма нужда да ги записва в БД.

Но за мачовете за деня, искам да ги записва в БД. За да може всеки мач да да бъде отворен в отделна страница (например: view.php?id=...).
 

Back
Горе