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

Форум PHP

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

 

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

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

тема: Цикл не цикл
 
 автор: sata   (25.05.2005 в 22:50)   письмо автору
 
 

Назрела тут проблемка в принципе глупая а догнать я чё то немогу.
Суть такая скрипт состоит из 3 блоков:
1блок форма для ввода урла файла со списком урлов
2блок обработчик этого файла вытаскивание урлов и сохранение их в массив
3 блок обработчик урлов
Дык вот я чего то недогоняю как совместить это всё чтобы 3блок последовательно обработал все урлы занесённые в массив знаю что цикл надо зделать непонимаю как.

//*******************************************
//Форма куда урл файла для обработки вставляется
include "lib.php";
include "admin_head.tmp";
echo "<form method=post action=upd.php>";
echo "URL страницы&nbsp;";
echo "<input type=\"text\" name=\"url\"><br>";
echo "<input type=submit name=go value=Обработать>";
echo "</form>";
//*******************************************
//Обработка файла и вытаскивание списка урлов и сохранение всего в массив
$page = file_get_contents("$url"); 
preg_match_all('/stockno[^\w]+href="([^\"]+)/i', $page, $res); 
for($i = 0; $i < count($res[1]); $i++) 
//*******************************************

//А вот тут самое интересное нужно замутить чтобы
//этот блок скрипта последовательно обработал весь список урлов из прошлого блока
$ch = curl_init ("$res[1][$i]");
$fp = fopen ("catalog.txt", "w");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);

   
 
 автор: cheops   (26.05.2005 в 12:40)   письмо автору
 
   для: sata   (25.05.2005 в 22:50)
 

Хм... а чем вас не устраивает этот вариант, вроде ничего криминального не видно...

   
 
 автор: sata   (29.05.2005 в 11:55)   письмо автору
 
   для: cheops   (26.05.2005 в 12:40)
 

Дык блин я вот тоже непонимаю в чём ботва но факт в том что список урлов должен по идее обрабатываться, а он необрабатывается в мускул одни пустые поля записываются вот я нифига и неврубаюсь чё за ботва

   
 
 автор: cheops   (29.05.2005 в 13:05)   письмо автору
 
   для: sata   (29.05.2005 в 11:55)
 

После строки
<?php
  preg_match_all
('/stockno[^\w]+href="([^\"]+)/i'$page$res);
?>

выведите массив $res
<?php
  print_r
($res);
?>

В нём всё нормально?

   
 
 автор: sata   (29.05.2005 в 13:56)   письмо автору
 
   для: cheops   (29.05.2005 в 13:05)
 

Дык в том то и дело что нормально список урлов выводится. Я вот чего думаю может это каким то боком играет роль то что сперва идёт запись в файл а потом тока скрипт заносит в мускул потому что файл всегда нулевой получается или курл что то с массивами портачит

   
 
 автор: sata   (29.05.2005 в 14:27)   письмо автору
 
   для: cheops   (29.05.2005 в 13:05)
 

Что самое интересное если зделать без списка урлов напрямую из формы отпрвлять 1 урл то всё работает Дастиш фантастиш. Да кстати скрипт приведён не весь смысл таков курл открывет урл записывает исходник туда потом регами исходник чистим и записываем что надо в мускул.

   
 
 автор: cheops   (29.05.2005 в 22:41)   письмо автору
 
   для: sata   (29.05.2005 в 14:27)
 

Хм... а файл "catalog.txt" для чего нужен - не очень из кода понятна его функция?

   
 
 автор: sata   (30.05.2005 в 00:31)   письмо автору
 
   для: cheops   (29.05.2005 в 22:41)
 

А туда исходник страницы записывается для дальнейшей обработки. Я приложил весь скрипт в аттаче для полноты картины.

   
 
 автор: cheops   (30.05.2005 в 00:42)   письмо автору
 
   для: sata   (30.05.2005 в 00:31)
 

А вы поставьте проверку
<?php
if(!mysql_query("Очень длинный запрос"))
{
  exit(
"Ошибка - ".mysql_error());
}
?>

Чего-нибудь выводится?

   
 
 автор: sata   (30.05.2005 в 00:44)   письмо автору
 
   для: cheops   (30.05.2005 в 00:42)
 

Хм и как это дешифровать ?

   
 
 автор: cheops   (30.05.2005 в 00:46)   письмо автору
 
   для: sata   (30.05.2005 в 00:44)
 

Я просто вначале подумал, что $ отсутвует в переменных в SQL-запросе, потом увидел, что это имена столбцов и стёр сообщение :)))

   
 
 автор: sata   (30.05.2005 в 00:51)   письмо автору
 
   для: cheops   (30.05.2005 в 00:46)
 

Ага выводит
Ошибка - You have an error in your SQL syntax near 'Очень длинный запрос' at line 1

   
 
 автор: cheops   (30.05.2005 в 00:54)   письмо автору
 
   для: sata   (30.05.2005 в 00:51)
 

Нет :))) за место "Очень длинный запрос" нужно поместить тот, который в файле - я просто не стал его приводить, чтобы не перегружать тему кодом... Это демонстрация того, как следует обработать вашу функцию mysql_query.

   
 
 автор: sata   (30.05.2005 в 00:59)   письмо автору
 
   для: cheops   (30.05.2005 в 00:54)
 

Теперь понятно откуда у меня чуство что я ступил =). Не в этом плане всё нормально ничё невыводит

   
 
 автор: cheops   (30.05.2005 в 01:06)   письмо автору
 
   для: sata   (30.05.2005 в 00:59)
 

Хм... я в таких случаях делаю таким образом, беру содержимое, которое передаётся функции mysql_query и вывожу его в окно браузера, беру его от туда и выполняю в каком-нибудь другом клиенте, в том же phpMyAdmin - сравниваю ощущения - деваться ошибке будет некуда, либо в окно браузера не всё выведется, либо phpMyAdmin ругнётся, либо добавится новая запись...

   
 
 автор: sata   (30.05.2005 в 19:54)   письмо автору
 
   для: cheops   (30.05.2005 в 01:06)
 

Дык дело в том что записи в мускул добавляются всё как надо скока урлов стока записей, тока записи пустые необработанные. Вывод фигня какая то на стыке когдакогда курл открывает страницу копирует результат в файл и обрабатывается регами.
Ну дык вот последний результат в файле должен сохраниться а он пустой. Дык вот что то с открыванием файла и записью, но блин казус какой просто то без массива с одним урлом всё работает.

   
 
 автор: cheops   (30.05.2005 в 21:17)   письмо автору
 
   для: sata   (30.05.2005 в 19:54)
 

А... я кажется понял, поробуйте заменить
<?php
$ch 
curl_init ("$res[1][$i]");
?>

на
<?php
$ch 
curl_init ("$res[$i][1]");
?>

И вообще вам помоему следует изменить порядок формирования массива в регулярных выражениях при помощи константы PREG_SET_ORDER, которая передаётся в качестве четвёртого параметра функции preg_match_all().

   
 
 автор: sata   (03.06.2005 в 21:57)   письмо автору
 
   для: cheops   (30.05.2005 в 21:17)
 

Всё разобрался я с этим Г на самом деле всё оказалось банально почему то кавычки всё портили =)

$ch = curl_init ($res[1][$i]); 

   
 
 автор: sata   (03.06.2005 в 23:49)   письмо автору
 
   для: cheops   (30.05.2005 в 21:17)
 

=) Я с ума сойду. Я в шоке. Я просто в ауте.
Тема такая для теста сохранил страницу характеристик машин и зделал файл в котором 2 урла на локальный и на сайт. Ну дык вот скрипт локальный файл обрабатывает как надо, а страницу с инета нихрена необрабатывает правда прогресс есть он что то читает но помоему error страницу. А одиночные урлы обрабатывает как надо. Опять хрень с массивом или ещё что.
Уважаемые кому не впадлу поможите кто чем сможет потому что я в полном Г нифига непонимаю в чём бага
В файле
upd.php - файл со скриптом
test.htm - страница с хар-ми машин локальная
6.htm - список урлов на машины в инете

   
 
 автор: cheops   (04.06.2005 в 12:44)   письмо автору
 
   для: sata   (03.06.2005 в 23:49)
 

Если URL такого вида getimage.aspx то он не даст вам загружать страницы - это ASP.NET - там сессия на сессии, пока к нему Internet Explorer не обратится он даже страницу нормально отображать не будет, а если к нему обращается скрипт, который не может создать сессионную куку - он ничего не даст скачать. В ASP.NET почти каждая страница сессией прошита.

   
 
 автор: sata   (04.06.2005 в 13:46)   письмо автору
 
   для: cheops   (04.06.2005 в 12:44)
 

Но тогда парадокс полусается одиночный урл обрабатывает этого вида а массив урлов нет это как понимать. У меня на сайте пока рабочий запущен урл в поле вставил обработал машин тысячи штук 10 в день пихнул для разнообразия и номана а вот со списком урлов беда. На сайте аукциона страницу открыл со ссылками на машины страницу сохранил локально скрипт запустил регами обрабатывает все ссылки в массив пихает дальше циклом обработаться должно но хрень какая то что курл чё то с массивом работать неочень то и хочет

   
 
 автор: sata   (04.06.2005 в 20:35)   письмо автору
 
   для: sata   (04.06.2005 в 13:46)
 

Мда помоему этот парадокс так и останется неразрешёным потому что идей у меня нет =)

   
 
 автор: cheops   (04.06.2005 в 21:28)   письмо автору
 
   для: sata   (04.06.2005 в 20:35)
 

У меня идей тоже нет... отладить на живом примере у меня не получилось так как в архиве не все файлы, которые нужны для запуска Web-приложения.

   
 
 автор: sata   (04.06.2005 в 21:46)   письмо автору
 
   для: cheops   (04.06.2005 в 21:28)
 

Да я вроде всё пихнул что нужно а чего нехватает ?

   
Rambler's Top100
вверх

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