Тогда попробуй так PHP: <?php $file = "http://www.photoshop-master.ru/rss_les2.php"; $XML = file_get_contents($file); if(!$XML) continue; $ITEMS = GetXMLAllVal($XML, 'item'); foreach($ITEMS as $item){ $title = GetXMLFirstVal($item, 'title'); $link = GetXMLFirstVal($item, 'link'); $text = GetXMLFirstVal($item, 'description'); $date = GetXMLFirstVal($item, 'pubDate'); $title = html_entity_decode($title, ENT_QUOTES); $text = html_entity_decode($text, ENT_QUOTES); $query = "INSERT INTO tbl (title, link, date, text) VALUES ('$title', '$link', '$date', '$text')"; $res = mysql_query($query) or die($res); print("<em><a href=\"$link\" style=\"text-decoration: none\" >".$title."</a></em> <i>".$date."<br /><hr color=\"#CCCCCC\" />".$text."<br /><hr color=\"#CCCCCC\" /><br /><br />"); } function GetXMLFirstVal($r,$t) { if(preg_match_all('/<('.$t.')[^>]{0,}>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0]; return ''; } function GetXMLAllVal($r,$t) { if(preg_match_all('/<('.$t.')[^>]{0,}?>(.*)<\/\\1>/Usi',$r,$o)) return $o[2]; return array(); }
Вообшем из данного кода : PHP: $file = "http://www.photoshop-master.ru/rss_les2.php"; $XML = file_get_contents($file); if(!$XML) continue; $ITEMS = GetXMLAllVal($XML, 'item'); foreach($ITEMS as $item){ $title = GetXMLFirstVal($item, 'title'); $link = GetXMLFirstVal($item, 'link'); $text = GetXMLFirstVal($item, 'description'); $date = GetXMLFirstVal($item, 'pubDate'); $title = html_entity_decode($title, ENT_QUOTES); $text = html_entity_decode($text, ENT_QUOTES); print("<em><a href=\"$link\" style=\"text-decoration: none\" >".$title."</a></em> <i>".$date."<br /><hr color=\"#CCCCCC\" />".$text."<br /><hr color=\"#CCCCCC\" /><br /><br />"); } function GetXMLFirstVal($r,$t) { if(preg_match_all('/<('.$t.')[^>]{0,}>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0]; return ''; } function GetXMLAllVal($r,$t) { if(preg_match_all('/<('.$t.')[^>]{0,}?>(.*)<\/\\1>/Usi',$r,$o)) return $o[2]; return array(); } Мне нужно все данные в переменных занести в таблицу построчно! Очень жду вашей помоши!
Ну значит переменные пустые, потому что ниже идет их вывод на экран(print). Провер еще массив print_r($ITEMS);
PHP: <?php $ar = array_map('addslashes', $link); echo $sql = 'INSERT INTO table (`field`) values '.'("'.join('"),("',$ar).'")'; mysql_query($sql) or die(mysql_error()); ?>
Хм... воть на ваш код что выводиться : Warning: array_map() [function.array-map]: Argument #2 should be an array in W:\home\localhost\www\1.php on line 36 Warning: join() [function.join]: Bad arguments. in W:\home\localhost\www\1.php on line 37 INSERT INTO 1 (`links`) values ("")You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 (`links`) values ("")' at line 1
$a = mysql_query("INSERT INTO links (link) VALUES ('$link')"); вот данный записывает в базу только последнюю ссылку
function print_arr($str) { echo $str," \n"; $str.=" - done"; } $link=array("$link"); array_walk($link,'print_arr'); и этот код тоже выводи только последнюю ссылку....
Прально выводит потому, что $link энто не массив. Сделай чтоб она была массивом или лучше приспособь код предложенный Frozen под массив $ITEMS
а каким образом сделать $link массивом?? кака я понимаю в данный момент в пременную $lnik заносится только последняя строка.
Ну хотя бы так PHP: <? foreach ($ITEMS as $item) { $links[] = $item['link']; } Ну и соответственн поменял $link на $links в array_map
Эх..... вот это весь код: PHP: foreach ($ITEMS as $item) { $links[] = $item['link']; } $ar = array_map('addslashes', $ITEMS); echo $sql = 'INSERT INTO links (`link`) values '.'("'.join('"),("',$ar).'")'; mysql_query($sql) or die(mysql_error()); выводит полное содержимое массива $ITEMS
И соответственно записывает построчно ВСЮ инфу в таблицу вместе с тегами, вот надо как то убрать всё лишние, что бы остались одни ссылки
убейте меня ктонибудь... PHP: <?php foreach ($ITEMS as $item) { $links[] = $item['link']; } $ar = array_map('addslashes', $links); echo $sql = 'INSERT INTO links (`link`) values '.'("'.join('"),("',$ar).'")'; mysql_query($sql) or die(mysql_error()); ?> Если и ща не поможет, то print_r($ITEMS) и результат в студию
PHP: foreach ($ITEMS as $link) { $link = GetXMLFirstVal($item, 'link'); $links[] = $link; } $ar = array_map('addslashes', $links); echo $sql = 'INSERT INTO links (`link`) values '.'("'.join('"),("',$ar).'")'; mysql_query($sql) or die(mysql_error()); И снова вывод только последней ссылки...
Вот выкладываю полный код приложения, может так будет легче! PHP: <?php $db = mysql_connect ("localhost","root",""); mysql_select_db("1",$db); $file = "http://www.photoshop-master.ru/rss_les2.php"; $XML = file_get_contents($file); if(!$XML) continue; $ITEMS = GetXMLAllVal($XML, 'item'); $beg = true; foreach($ITEMS as $item) { $title = GetXMLFirstVal($item, 'title'); if (!$beg) $query .= ", "; $link = GetXMLFirstVal($item, 'link'); $query .= "('$link')"; $beg =false; $text = GetXMLFirstVal($item, 'description'); $date = GetXMLFirstVal($item, 'pubDate'); $title = html_entity_decode($title, ENT_QUOTES); $text = html_entity_decode($text, ENT_QUOTES); print("<em><a href=\"$link\" style=\"text-decoration: none\" >".$title."</a></em> <i>".$date."<br /><hr color=\"#CCCCCC\" />".$text."<br /><hr color=\"#CCCCCC\" /><br /><br />"); } function GetXMLFirstVal($r,$t) { if(preg_match_all('/<('.$t.')[^>]{0,}>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0]; return ''; } mysql_query($query); function GetXMLAllVal($r,$t) { if(preg_match_all('/<('.$t.')[^>]{0,}?>(.*)<\/\\1>/Usi',$r,$o)) return $o[2]; return array(); } print_r($ITEMS['0']); foreach ($ITEMS as $link) { $link = GetXMLFirstVal($item, 'link'); $links[] = $link = GetXMLFirstVal($item, 'link'); } $ar = array_map('addslashes', $links); echo $sql = 'INSERT INTO links (`link`) values '.'("'.join('"),("',$ar).'")'; mysql_query($sql) or die(mysql_error()); ?>
Все такие профи, просто ппц... Ну а насчет архитектуры таблицы даже никто не спросил, а нужно было бы начать с этого)) Spayn Опиши плиз архитектуру своей таблички для начала, если она есть, если нету, то начать надо именно с этого. А после посотрим чем тебе помочь.