Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 1
Регистрация: 03.12.2010
Сообщений: 49

создание цикла с постоянно меняющимися условиями

11.10.2012, 21:13. Показов 909. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Помогите написать цикл который должен проходить такое количество раз сколько записей в базе, но с таким условием что количество записей постоянно возрастает до определенного количества. Короче говоря делаю систему проверки правильности ссылок на сайте и вот что получилось.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
//эти 2 парам получаемиз формы
$http = 'http://localhost/zlo.ru/';
$url_str = $http."index.php";
 
function func($url, $d){
$file = file_get_contents("$url");  //считываем код файла
$m =array();            //для хранения всех ссылок
preg_match_all('~<a [^<>]*href=[\'"]([^\'"]+)[\'"][^<>]*>~si',$file, $m);
 
// для разбития на внутренние и внешние ссылки
$vnut=array();
$vnech=array();
 
foreach ($m[1] as $val) {
if (!preg_match("~^[^=]+://~", $val) || preg_match("~^[^://]+://(www\.)?".$url."~i", $val) || preg_match("~$d~", $val)){ 
$vnut[]=$val; 
}
else $vnech[]=$val;     
}
 
$URL =array();
//удаляем ../ если есть и добавляем имя сервера
foreach ( $vnut as $k => $val) {
$URL[] = $d.preg_replace("(\.\./)","",$val );
}
// Удаляет дублирующие значения в массиве.
$result = array_unique($URL);
print_r($result);
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
 
 
 
 
$server = 'localhost';
$user = 'root'; 
$pass = '';
$db = 'parsing'; // БАЗА ДАННЫХ
 
 
$connect = mysql_connect ($server, $user, $pass);
if (!$connect) {
echo "Ошибка соединения";
exit; //mysli 
}
 
$select = mysql_select_db($db);
if (!$select) {
echo "Ошибка соединения";
exit;
}
 
 
$sql = "SELECT * FROM $db.url";
$r = mysql_query($sql);
 
while($row = mysql_fetch_assoc($r)){
print_r($row);
if( ($n = array_search($row['url_address'], $result) ) !== false)
unset($result[$n]);
}
 
echo "<hr>";
print_r($result);
 
//mysql_real_escape_string
foreach ($result as $key => $value) {
mysql_query("INSERT INTO `$db`.`url` (`id` ,`url_address` )VALUES ('', '{$result[$key]}')");
}
}
print_r(func($url_str, $http));
 
 
 
?>

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

Таблица базы состоит из 2х полей id и url_address где собственно хранятся ссылки. Я человек который еще учится если можно поподробней.

Функция работает не совсем правильно, если не будет в базе не одного значения выдаст ошибку, позже исправлю это не сложно, а также не экранирую символы. Если кто то найдет ошибки или знает как написать лучше буду благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2012, 21:13
Ответы с готовыми решениями:

Как из цикла постоянно возвращать переменную
$i это месяц , как сделать так , чтобы переменнаю $page ,постоянно возвращалась и я мог ее обрабатывать for ($i=1; $i &lt; 13; $i++) { ...

Создание запроса с условиями
Добрый день Нужно составить запрос или же вычисляемое поле, есть 11 условий находятся во вложении , был бы очень рад если кто нибудь...

Создание таблицы с условиями...
Здравствуйте! Пишу лабораторную: Бюро трудоустройства. Есть таблица с соискателями и таблица с вакансиями, нужно создать таблицу в которой...

3
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
12.10.2012, 11:53
уникальный ключь на поле url ставте и затем insert ignore делайте , не зачем так извращаться
1
1 / 1 / 1
Регистрация: 03.12.2010
Сообщений: 49
12.10.2012, 18:24  [ТС]
А как мне пробраться по всем ссылкам?
0
1 / 1 / 1
Регистрация: 03.12.2010
Сообщений: 49
17.10.2012, 23:34  [ТС]
Может кто знает как сделать это через рекурсию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.10.2012, 23:34
Помогаю со студенческими работами здесь

Создание сайта с определенными условиями
Добрый день! Прошу помощи знающих html людей. Нужно создать сайт о себе (в прикрепленном файле) средствами языка html. Данное задание было...

Создание запроса на выборку с условиями
Здраствуйте дорогие и суровые модераторы. родители вы подсказать. есть база там есть запрос Ф.И.О ; Гх1; ГХ2 и ГХ 3. значить по возможности...

Создание массива с несколькими условиями
Здравствуйте. Подскажите пожалуйста, как сделать двумерный массив с несколькими условиями. Надо, чтобы при вводе в одной таблицы 2-х...

Создание и запись в файл массива с условиями
Здравствуйте! Необходимо создать массив и записать его в файл (out.txt) по примеру файла (input.txt - 120 строк) при этом значения...

Создание отчета из нескольких таблиц и с суммой с условиями
Есть сделанная БД. Нужно сделать отчет, в котором выводилось бы суммарная стоимость каждого цвета и еще по городам как на рисунке(рисунок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru