Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Первый парсер на PHP, нужна помощь [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 2 [3]   

> Без описания
LIME
Отправлено: 19 Апреля, 2020 - 22:53:42
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




означает
PHP:
скопировать код в буфер обмена
  1. db::getInstance()->real_escape_string();

а еще можно вот так избежать инъекций(предпочтительно) https://www.php.net/manual/ru/mysqli.prepare.php
а еще почему не обработал $_POST['cat'] ?
в процедурном стиле
(Добавление)
https://refactoring[dot]guru/ru/desi[dot][dot][dot]tterns/singleton хотя врядли асилишь, но там о ::getInstance()
 
 Top
Строитель Модератор
Отправлено: 19 Апреля, 2020 - 23:09:45
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




rasl89 пишет:
mysqli
PDO много удобнее, и проще. В mysqli вы ещё долго будете топтаться на месте, и в итоге всё равно придёте к PDO. Дак зачем терять время?
 
 Top
LIME
Отправлено: 20 Апреля, 2020 - 10:25:48
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель пишет:
PDO много удобнее, и проще.
чем?
я знаю об одном его плюсе(кроме поддержки нескольких субд) - его все используют и значит лучше его знать
но ничего не знаю о простоте и/или удобстве
 
 Top
rasl89
Отправлено: 20 Апреля, 2020 - 18:47:20
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




LIME пишет:означает
PHP:
скопировать код в буфер обмена
  1. db::getInstance()->real_escape_string();

а еще можно вот так избежать инъекций(предпочтительно) https://www.php.net/manual/ru/mysqli.prepare.php
а еще почему не обработал $_POST['cat'] ?
в процедурном стиле

(Добавление)
https://refactoring[dot]guru/ru/desi[dot][dot][dot]tterns/singleton хотя врядли асилишь, но там о ::getInstance()

Я читал про PDO но пока не готов на нем что-либо делать.
Спасибо за совет, но этот проект добью методом что я начал делать. Позже обязательно изучу PDO, вокруг него много слов как на деле не знаю Закатив глазки

Lime

PHP:
скопировать код в буфер обмена
  1. db::getInstance()->real_escape_string();

круто вывернул, помогло спасибо

Цитата:
https://refactoring[dot]guru/ru/desi[dot][dot][dot]tterns/singleton хотя врядли асилишь, но там о ::getInstance()


изучил, как-то вроде понял, пока абстрактно, изучу этот вопрос.

Цитата:
а еще почему не обработал $_POST['cat'] ?

тут не понял что еще нужно сделать?

теперь ошибка:
Fatal error: Uncaught Error: Maximum function nesting level of '256' reached, aborting! in C:\Webserver\OSPanel\domains\chinafilms1\prs4\db.php on line 415

хотя дебаггер настроен:
xdebug.max_nesting_level = 256

я неправильно из рекурсии вышел? У меня уже каша в голове Радость
показывает что тут не верно что-то:
PHP:
скопировать код в буфер обмена
  1. public static function getInstance() {
  2.  
  3.         if (null === self::$_instance) {
  4.  
  5.         self::$_instance = new self();
  6.  
  7.         }
  8.  
  9.         return self::$_instance;
  10.  
  11.          }
 
 Top
LIME
Отправлено: 20 Апреля, 2020 - 21:39:14
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




rasl89 пишет:
тут не понял что еще нужно сделать?
а зачем ты вообще используешь real_escape_string ?
rasl89 пишет:
я неправильно из рекурсии вышел?
какой рекурсии? наверное
rasl89 пишет:
показывает что тут не верно что-то
скорее всего случайно 256ой вложенный вызов попал на getInstance
в самом начале сохрани в переменную и замени все вызовы getInstance на эту переменную
PHP:
скопировать код в буфер обмена
  1. $db = db::getInstance();
  2. $post_id = $db->insert('dle_post', $save);
 
 Top
rasl89
Отправлено: 21 Апреля, 2020 - 21:33:40
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Цитата:
в самом начале сохрани в переменную и замени все вызовы getInstance на эту переменную

Цитата:
PHP:
скопировать код в буфер обмена
  1.    
  2. $db = db::getInstance();
  3.     $post_id = $db->insert('dle_post', $save);


я не смог этого сделать(( не смог интегрировать ни одну из строк

у меня затык в следующем:

PHP:
скопировать код в буфер обмена
  1.  
  2. class db {
  3.  
  4.         public $debug = false;
  5.  
  6.     public $count = 0;
  7.  
  8.  
  9.  
  10.     protected static $_instance;
  11.  
  12.         /*
  13.  
  14.          * Connect to data base
  15.  
  16.          */
  17.  
  18.         private function __construct(){
  19.  
  20.         $this->connect();
  21.  
  22.         }
  23.  
  24.  
  25.  
  26.     public function connect(){
  27.  
  28.  
  29.         $cfg['host'] = 'localhost';
  30.  
  31.         $cfg['user'] = 'newnew';
  32.  
  33.         $cfg['db'] = 'newnew';
  34.  
  35.         $cfg['pwd'] = 'newnew';
  36.  
  37.         if (!mysqli_connect($cfg['host'], $cfg['user'], $cfg['pwd'])) die("Can't connect to mysql server") ; //For local
  38.  
  39.         if (!@mysqli_select_db($cfg['db'])) die("Can't found data base");


в данном случае mysqli_connect не отрабатывает и я использую: db::getInstance()->

но тогда у меня и происходит конфликт с getInstance, т.к. в конце скрипта происходит следующее:

PHP:
скопировать код в буфер обмена
  1.     public static function getInstance() {
  2.  
  3.         if (null === self::$_instance) {
  4.  
  5.         self::$_instance = new self();
  6.  
  7.         }
  8.  
  9.         return self::$_instance;
  10.  
  11.          }
  12.  


либо я в конец запутался с этим классом, вложил скрипт
 
 Top
rasl89
Отправлено: 24 Апреля, 2020 - 19:47:43
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Коллеги, вроде с конфликтом getInstance разобрался.
Обьявил где нужно
$db = db::getInstance();

теперь просто напросто не находит класс db:
Fatal error: Uncaught Error: Class 'db' not found in C:\Webserver\OSPanel\domains\chinafilms1\prs4\prs4.php on line 216

указывает на строку $db = db::getInstance();

Тогда я попробовал обьявить в конце db.php:
$db = new db();
не помогло

в итоге подключения к БД так и осуществлено
 
 Top
LIME
Отправлено: 24 Апреля, 2020 - 23:28:22
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




rasl89 мне надоело "это" наблюдать
дай возможность писать код вместо тебя
дай мне удаленный рабочий рабочий стол и я напишу код
дай мне свой рабочий стол
(Добавление)
rasl89 короче
просто дай мне 100 долларов и я тебе все сделаю
 
 Top
LIME
Отправлено: 25 Апреля, 2020 - 03:21:02
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




rasl89 шутка
просто дай мне посмотреть
и я сделаю
(Добавление)

кто мне плюсует? я ничего не сделал
просьба плюсовать только по делу

(Добавление)
[brasl89 пиши мне в личку
просто надо тебе пояснить как подключаются файлы(да простят меня спецы)
для тебя это пока файлы
пиши в лс
научим
наставим
не бросим
 
 Top
Vladimir Kheifets
Отправлено: 25 Апреля, 2020 - 17:19:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




rasl89 пишет:
Коллеги, вроде с конфликтом getInstance разобрался.
Обьявил где нужно
$db = db::getInstance();

теперь просто напросто не находит класс db:
Fatal error: Uncaught Error: Class 'db' not found in C:\Webserver\OSPanel\domains\chinafilms1\prs4\prs4.php on line 216

указывает на строку $db = db::getInstance();

Тогда я попробовал обьявить в конце db.php:
$db = new db();
не помогло
в итоге подключения к БД так и осуществлено

Цитата:
Цитата:
добавте в в конце db.php
$db = new db();

это не помогает, что-то подобное я делал
отладка тоже не показывает где косяк(

Добрый день!
Ваш db.php не рабочий.
Вместо него поставьте этот:
Спойлер (Отобразить)

для тестирования сделал таблицу
Спойлер (Отобразить)

так нудно изменить ps4.php
Спойлер (Отобразить)
Удачи!

(Отредактировано автором: 25 Апреля, 2020 - 17:21:36)

 
 Top
rasl89
Отправлено: 25 Апреля, 2020 - 20:44:45
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




LIME
Цитата:
rasl89 мне надоело "это" наблюдать
дай возможность писать код вместо тебя
дай мне удаленный рабочий рабочий стол и я напишу код
дай мне свой рабочий стол
(Добавление)
rasl89 короче
просто дай мне 100 долларов и я тебе все сделаю

Ага! Ага! Ага!


Цитата:
brasl89 пиши мне в личку
просто надо тебе пояснить как подключаются файлы(да простят меня спецы)
для тебя это пока файлы
пиши в лс
научим
наставим
не бросим


Спасибо!

Цитата:
Удачи!

Vladimir Kheifets
Спасибо!
После небольших корректировок все работает!
Остались вопросы, написал в ЛС.

Идем дальше! теперь буду учить парсер парсить целым разделом.
Схема предполагается такая:
код парсит в разделе ссылки по которым нужно перейти (массив), далее подключается этот, уже готовый парсер, проходит по каждой ссылке и заносит в бд.

В некоторых разделах новости могут повторяться.
Коллеги, как проверить таблицу (мускул) с названиями новостей на наличие совпадения?
Не будет ли это чрезмерной нагрузкой, если в системе уже 15к новостей?
Какой есть выход в данной ситуации?

(Отредактировано автором: 25 Апреля, 2020 - 20:45:36)

 
 Top
rasl89
Отправлено: 27 Апреля, 2020 - 14:49:24
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




В некоторых разделах новости могут повторяться.
Коллеги, как проверить таблицу (мускул) с названиями новостей на наличие совпадения?
Не будет ли это чрезмерной нагрузкой, если в системе уже 15к новостей?
Какой есть выход в данной ситуации?
Кто подскажет?
 
 Top
Страниц (3): « 1 2 [3]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB