|
|
|
| Доброго дня!
Идея проверить ссылки в каждом новом посте на их наличие в базе:
<?php
$result=mysql_query("SELECT * FROM `all_links` WHERE `link`='$1' OR `link`='$2' ... ORDER BY id DESC",$bd) or die(mysql_error());
$num_h = mysql_num_rows($result);
if($num_h>0){ //Если записи есть
$arr_hlssss=array(); //Создаем пустой массив
$h_l=mysql_fetch_array($result);
do{
$arr_hlssss[$h_l['id_post']]=$h_l['link']; //Заполняем созданный пустой массив значениями, где $h_l['id_post']] - ключ массива, (id поста с этой ссылкой)
// а $h_l['link'] - его значение
}
while($h_l=mysql_fetch_array($result));
$arr_hls = array_unique($arr_hlssss); //Убираем из массива элементы с одинаковым значением
}
//$match - это массив адресов ссылок из проверяемого поста
$check_links=''; //пустая (пока) переменная для вывода результата
$count=count($match); // количество найденных в проверяемом посте ссылок
for($i=0;$i<$count;$i++){
if(in_array($match[$i],$arr_hls)){ //проверяем, совпадает ли значение очередной ссылки из поста со значением ссылки из массива найденных в базе
$id_post=array_search($match[$i],$arr_hls); //если да, то вытягиваем ключ элемента (это id поста, в котором данная ссылка уже есть).
$check_links.="<p style=\"color: red;\">Ссылка <a href=\"$match[$i]\" target=\"_blank\">$match[$i]</a> уже была в этом <a href=\"$mainlink/news/".intval($id_post)."\" target=\"_blank\">посте</a>.</p>";
}
else{
$check_links.="<p>Ссылки <a href=\"$match[$i]\" target=\"_blank\">$match[$i]</a> еще не было.</p>";
}
}
echo $check_links;
?>
|
Код, в принципе, работает, но вот выводит каждый раз ошибку: Warning: in_array() expects parameter 2 to be array, null given in Z:\home\...
Можно, конечно, проверять все ссылки из поста на наличие таких же в базе индивидуально, но не хотелось бы грузить сервер лишними запросами.
Как быть?
Спасибо. | |
|
|