RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 327
от 30.04.2006, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 281, Экспертов: 31
В номере:Вопросов: 3, Ответов: 8


Вопрос № 41190: Здравствуйте уважаемые эксперты. Есть 2 таблицы mysql: 1) ИД | Имя | ... 2) ИД | Текст | ... Необходимо произвести поиск по полю "текст" в таблице №2, а инфу по найденным строкам надо вывести из таблицы №1.<br...
Вопрос № 41259: Добрый день, эксперты! У меня такая проблемка возникла. Я учусь программировать, ну и заодно облегчаю себе жизнь php. в общем, у меня форма есть для форматирования текста, а именно я поля формы вставляю в шаблон на html с помощью PHP.<br...
Вопрос № 41282: Добрый день! Есть следующая задача: имеется скрипт PHP, лежащий на сайте. Сервер, на котором расположен сайт, подключён к локалке. Надо, чтобы пользователь, зайдя на сайт, мог отослать файл на компьютер в локалке. Как это можно сделать? Заранее спаси...

Вопрос № 41.190
Здравствуйте уважаемые эксперты.

Есть 2 таблицы mysql:

1) ИД | Имя | ...
2) ИД | Текст | ...

Необходимо произвести поиск по полю "текст" в таблице №2, а инфу по найденным строкам надо вывести из таблицы №1.

Не получается придумать алгоритм. Помогите :)
Отправлен: 24.04.2006, 21:44
Вопрос задал: MaxQ (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Samum
Здравствуйте, MaxQ!
Можно использовать inner join. Пусть первая таблица называется tbl1, а вторая - tbl2.
Тогда запрос будет выглядеть примерно так:
SELECT tbl1.Name, tbl2.Text
FROM tbl2
INNER JOIN tbl1 on (tbl1.id = tbl2.id)
WHERE tbl2.text = 'Текст который надо найти'.

Или, что почти то же самое:
SELECT SELECT tbl1.Name, tbl2.Text
FROM tbl2
WHERE (tbl2.text = 'Текст который надо найти') AND (tbl1.ID = tbl2.ID).

---------
Если бы программистам за их ошибки отрывали части тела, то в конце концов им пришлось бы использовать голову!
Ответ отправил: Samum (статус: Специалист)
Ответ отправлен: 24.04.2006, 22:17

Отвечает: Madproger
Здравствуйте, MaxQ!

SELECT t1.name, t1.descr FROM table1 as t1, table2 as t2 WHERE t1.id=t2.id AND t2.text LIKE '%something%';

Вместо LIKE можно быть любая строковая функция.
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 5-ый класс)
Ответ отправлен: 24.04.2006, 22:52

Отвечает: Константин
Здравствуйте, MaxQ!
Проще простого:
$sql = "SELECT table1.*
FROM table1 INNER JOIN table2 ON table1.ID=table2.ID
WHERE table2.Text='Your_text' ";
mysql_query($sql);

Совет: Учите SQL
Ответ отправил: Константин (статус: 3-ий класс)
Ответ отправлен: 25.04.2006, 13:31


Вопрос № 41.259
Добрый день, эксперты!
У меня такая проблемка возникла.
Я учусь программировать, ну и заодно облегчаю себе жизнь php.
в общем, у меня форма есть для форматирования текста, а именно я поля формы вставляю в шаблон на html с помощью PHP.
Проблемка в форматировании. Вот у меня поле есть $text, я его беру и проставляю <br> - это без проблем.
Но мне надо найти в тексте все Главы (Глава 1, 2 и т.д.) и их заключить в тэги <b><u></u><b>.
Как это сделать. Как ни пробовала и с помощью регулярных выражений и с помощью строк, не получается.
строка в этом поле у меня $line
Пробовала так:
$str1 = "<b><u>";
$str2 = "</u></b>";
if ( ereg ( "([Глава])([0-9]+)", $line, $regs ) ){
$str0 = $str1.$regs.$str2;
str_replace($regs, $str0, $line);
}
не помогает, пробовала через
ereg_replace("([Глава])([0-9]+)", "<b><u>([Глава])([0-9]+)</b></u>", $line);
тоже не помогает, может ошибка где?
и еще такой вопрос, пробел может быть между Главой и номером, а может и не быть, правильно ли я указала условие вхождения?
Отправлен: 25.04.2006, 15:48
Вопрос задала: Katsurini (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Straight
Здравствуйте, Katsurini!
Это Вы совсем что-то не то делаете. В Вашем случае замену регулярным выражением надо делать так:

Приложение:

Ответ отправил: Straight (статус: Студент)
Ответ отправлен: 25.04.2006, 16:03

Отвечает: Madproger
Здравствуйте, Katsurini!

Для варианта с файлом (заменить на работу со строками формы это будет несложно)

<?php
$lines = file("t.txt");
$new_ff = fopen("t_new.txt", "w");

foreach($lines as $line)
{
unset($matches);
preg_match_all("/(Glava){1}( )*([0-9])+/", $line,$matches);
if(is_array($matches[0]))
foreach($matches[0] as $curr)
{
$curr = trim($curr);
$new_curr = sprintf("<b><i>%s</i></b>", $curr);
$line = str_replace($curr, $new_curr, $line);
fwrite($new_ff, $line." ");
}
}

fclose($new_ff);

?>

Приложение:

---------
И будет вам счАстиЕ!

Ответ отправил: Madproger (статус: 5-ый класс)
Ответ отправлен: 25.04.2006, 16:29

Отвечает: Stamm
Здравствуйте, Katsurini!
Нужно заменить квантификатор повторения + на * у пробельного символа.
У меня получилось даже немного короче:

Приложение:

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.31 от 28.04.2006
Яндекс Rambler's Top100

В избранное