Вопрос № 33163: Здравствуйте.
Спасибо за ответы на предыдущий вопрос.
У меня вопрос по SQL:
Есть две таблицы
mail с колоноками:
-mail
-name
-id_member
-date
и т.д.
и таблица
tmp_export с двумя колонками:
-mail<br...Вопрос № 33179: Есть SQL запрос: "SELECT name FROM tbl1 WHERE id='1'", который всегда выдает только одно значение (крайне редко возможно что результат будет пустой).
Как правильнее и быстрее всего получить результат в переменную?...Вопрос № 33180: Здравствуйте.
Спасибо за ответы на предыдущий вопрос по sql.
У меня еще вопрос по sql, более сложный:
Есть две таблицы mail и link.
mail содержит следующие столбцы:
-mail
-id_mail
link содержит столбцы:
-id_mail #...Вопрос № 33194: Вопрос:
В Php есть функция Mail. Можно ли через неё посылать (и соответственно как :)) HTML документы с прикрепленными картинками и прочей ерундой?...Вопрос № 33198: Здраствуйте!
Подскажите где можно скачать нормальный бесплатный каталог.
Для использования в каталоге программ.
Большое спасибо!...
Вопрос № 33.163
Здравствуйте.
Спасибо за ответы на предыдущий вопрос.
У меня вопрос по SQL:
Есть две таблицы
mail с колоноками:
-mail
-name
-id_member
-date
и т.д.
и таблица
tmp_export с двумя колонками:
-mail
-name.
===
Как максимально быстро из таблицы mail скопировать в таблицу tmp_export два столбца mail и name.
Условия выборки из mail: id_member = $id_member;
Таблица mail может содержать до 50 тыс. строк и больше!
С простой выборкой и последующим циклом долго.
Отвечает: Whisper
Здравствуйте, Оськин Дмитрий Владимирович!
Update tmp_export
UPDATE tmp_export ,mail SET tmp_export.mail=mail.mail, tmp_export.name=mail.name
WHERE tmp_export.id_member = $id_member;
тьфу ты, смысла в операции не вижу, а не все ли равно, что по очереди все перенести вот так
INSERT INTO tmp_export (mail, name)
SELECT mail, name from mail
--------- все тленно
Ответ отправила: Whisper (статус: 3-ий класс)
Отправлен: 13.01.2006, 09:58
Отвечает: XMF
Здравствуйте, Оськин Дмитрий Владимирович!
--
$a=mysql_query("select * from mail");
while($d=mysql_fetch_assoc($a))
mysql_query("insert into tmp_export values('".$d["mail"]."', '".$d["name"]."')");
--
Ответ отправил: XMF (статус: 3-ий класс)
Отправлен: 13.01.2006, 10:24
Отвечает: Diztex
Здравствуйте, Оськин Дмитрий Владимирович!
INSERT INTO tmp_export(mail, name) SELECT mail, name FROM mail WHERE id_number=$id_number
Ответ отправил: Diztex (статус: 1-ый класс)
Отправлен: 13.01.2006, 11:03
Отвечает: Дмитрий Иванов
Здравствуйте, Оськин Дмитрий Владимирович!
средствами MySQL:
insert into tmp_export (select mail,name from mail where id_member=$id_member)
--------- ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 13.01.2006, 12:07
Отвечает: Stamm
Здравствуйте, Оськин Дмитрий Владимирович!
INSERT INTO tmp_export(mail, name) SELECT mail, name FROM mail WHERE id_number=$id_number
--------- В день - один, ну два подвига, не больше...
Ответ отправил: Stamm (статус: Студент)
Отправлен: 13.01.2006, 12:51
Вопрос № 33.179
Есть SQL запрос: "SELECT name FROM tbl1 WHERE id='1'", который всегда выдает только одно значение (крайне редко возможно что результат будет пустой).
Как правильнее и быстрее всего получить результат в переменную?
Приложение:
Отправлен: 13.01.2006, 12:47
Вопрос задал: Rusland (статус: Специалист)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Дмитрий Иванов
Здравствуйте, Rusland!
$name=mysql_fetch_row($rslt);
$name=$name[0];
- будет на доли секунд быстрее, так как системой не создаеться ассоциативный массив, но это не значит, что он правильнее, правильность в этом случае зависит от твоего стиля программирования, и удобства понимания кода
--------- ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 13.01.2006, 12:56 Оценка за ответ: 4 Комментарий оценки: Спасибо
Отвечает: Stamm
Здравствуйте, Rusland!
Можно сделать на одну строчку меньше:
$rslt=mysql_query("SELECT name FROM tbl1 WHERE id='1'") or die("Invalid query: ".mysql_error());
$name=mysql_result($rslt,0,'name');
--------- В день - один, ну два подвига, не больше...
Ответ отправил: Stamm (статус: Студент)
Отправлен: 13.01.2006, 12:59 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: Ерёмин Андрей
Здравствуйте, Rusland!
Лично я бы не стал создавать массив значений и просто прочитал бы нужное значение: $rslt=mysql_query("SELECT name FROM tbl1 WHERE id='1'");
$name=mysql_result($rslt,0);
Выгрузку в случае необработки запроса я бы тоже не стал делать - в $name просто окажется пустой результат и всё. И в mysql_result() не обязательно указывать имя поля - всё равно только name в запросе выделили.
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 13.01.2006, 14:26
Вопрос № 33.180
Здравствуйте.
Спасибо за ответы на предыдущий вопрос по sql.
У меня еще вопрос по sql, более сложный:
Есть две таблицы mail и link.
mail содержит следующие столбцы:
-mail
-id_mail
link содержит столбцы:
-id_mail #Связь с таблицей mail
-id_chanel # каналы, разделы подписки, может быть несколько
-confirm #Подтверждение на канал
-dateRegistered
===
Необходимо удалить из таблиц mail и link строки
если число строк в таблице link неподтвержденных (confirm==n) и истекшим сроком dateRegistered<$time == 0
Пример:
mail:
id_mail, mail
1, local@ru
2, local2@ru
link:
id_mail, id_chanel, confirm, dateRefistered
1, 2, n, 101202120#срок истек
1, 3, n, 101202125#срок истек
2, 2, y, 100000000#срок истек но подтвержден
2, 3, n, 100000000#срок истек
===
В итоге нужно удалить первую строку в mail и 1 и 2 в таблице link
Может можно одним запросом что то вроде:
DELETE FROM mail WHERE (SELECT COUNT(*) mail_chanel WHERE confirm = 'n' and dateActive < '10212221') = 0
Отвечает: Diztex
Здравствуйте, Оськин Дмитрий Владимирович!
DELETE mail,link FROM mail, link WHERE mail.id_mail=link.id_mail AND link.cofirm='n' AND link.dateActive < $time
Работать должно с версии 4.0
А вообще примеры подобных запросов имеются в документации http://dev.mysql.com
Ответ отправил: Diztex (статус: 1-ый класс)
Отправлен: 13.01.2006, 13:32
Отвечает: Stamm
Здравствуйте, Оськин Дмитрий Владимирович!
Одни запросом у меня не получилось......
DELETE FROM link WHERE confirm='n' AND dateActive<'10212221'
DELETE FROM mail WHERE NOT( id_mail IN (SELECT id_mail FROM link))
--------- В день - один, ну два подвига, не больше...
Ответ отправил: Stamm (статус: Студент)
Отправлен: 13.01.2006, 13:36
Вопрос № 33.194
Вопрос:
В Php есть функция Mail. Можно ли через неё посылать (и соответственно как :)) HTML документы с прикрепленными картинками и прочей ерундой?
Отвечает: Straight
Здравствуйте, Golden Spider!
Разумеется, можно. Нужно всего лишь собрать тело письма в формате, предписанном RFC. Можете для этого воспользоваться классом из библиотеки PEAR.
Ответ отправил: Straight (статус: 3-ий класс)
Отправлен: 13.01.2006, 16:14
Отвечает: XMF
Здравствуйте, Golden Spider!
--
http://php.spb.ru/php/mail.html
Ответ отправил: XMF (статус: 3-ий класс)
Отправлен: 13.01.2006, 16:51 Оценка за ответ: 5 Комментарий оценки: Кратко, но ястно!
Отвечает: Ерёмин Андрей
Здравствуйте, Golden Spider!
Последний (необязательный) параметр функции mail() - headers - заголовки, которые будут вставлены в письмо. Этим и нужно воспользоваться. Добавляете: Content-Type: multipart/mixed;
boundary="----------BA12BAB3405C71D"
Параметр boundary - это разделитель фрагментов письма. А в тексте письма указываете текст, а дальше разделитель, служебные заголовки для следующей части и сам файл. Когда-то сам писал подобное, вот фрагменты кода: $message = "";
$message .= "--MIME_BOUNDRY
";
$message .= "Content-Type: text/html; charset=windows-1251
";
$message .= "Content-Transfer-Encoding: 8bit
";
$f = fopen("file.exe","r");
$message .= fread($f,filesize("file.exe"));
...
$message .= "--MIME_BOUNDRY
";
$message .= "Content-Type: application/octet-stream; name="background.gif"
";
$message .= "Content-disposition: attachment
";
$message .= "Content-Transfer-Encoding: base64
";
$message .= "Content-ID:
";
$message .= "
";
$message .= "$str
";
Это основное - чтение файла и его перекодировка. Дальше, думаю, вы всё поймёте. Для примера, открываете любой письмо, где прикреплён файл и смотрите его заголовки. Потом добавляете их в письмо по аналогии.
Также на php.net есть подробная статья.
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 13.01.2006, 20:00 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: Lancelot
Здравствуйте, Golden Spider!
http://www.phpclub.ru/?m=app&s=72 Несколько скриптов, правда придётся переводить, но ничего. Рекомендую: скрипт SourceForge для ОЧЕНЬ крутых сайтов.
--------- Дуракам везёт? Не такие уж они и дураки. (Хенрик Ягодзинский)
Ответ отправил: Lancelot (статус: Студент)
Отправлен: 13.01.2006, 23:01
Вопрос № 33.198
Здраствуйте!
Подскажите где можно скачать нормальный бесплатный каталог.
Для использования в каталоге программ.
Отвечает: Straight
Здравствуйте, Александр Александрович!
К сожалению, Вы не определили критерии "нормальности".
Но я посоветовал бы поискать на hostscripts.com
Ответ отправил: Straight (статус: 3-ий класс)
Отправлен: 13.01.2006, 17:03 Оценка за ответ: 4 Комментарий оценки: Вы ведь наверняка видели каталоги программ....я имею в виду каталог с такой структурой.
Отвечает: Lancelot
Здравствуйте, Александр Александрович!
http://www.phpclub.ru/?m=app&s=72 Несколько скриптов, правда придётся переводить, но ничего. Рекомендую: скрипт SourceForge для ОЧЕНЬ крутых сайтов.
--------- Дуракам везёт? Не такие уж они и дураки. (Хенрик Ягодзинский)
Ответ отправил: Lancelot (статус: Студент)
Отправлен: 13.01.2006, 23:02 Оценка за ответ: 4 Комментарий оценки: Спасибо за ссылку, но ничего не понятно. Многое не работает или не грузится...или я ничего не понял.