Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с in_array
 
 автор: Deed   (26.08.2012 в 15:41)   письмо автору
 
 

Доброго дня!
Идея проверить ссылки в каждом новом посте на их наличие в базе:


<?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\...

Можно, конечно, проверять все ссылки из поста на наличие таких же в базе индивидуально, но не хотелось бы грузить сервер лишними запросами.

Как быть?
Спасибо.

  Ответить  
 
 автор: Jovidon   (26.08.2012 в 23:38)   письмо автору
 
   для: Deed   (26.08.2012 в 15:41)
 

1.Твой пустой массив до конца остаёнся пустым.
2.У вас ужасны почерк. http://softtime.ru/info/articlephp.php?id_article=28

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования