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

  Все выпуски  

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


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

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

Выпуск № 357
от 01.06.2006, 02:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 302, Экспертов: 48
В номере:Вопросов: 4, Ответов: 10


Вопрос № 44285: Дравствуйте уважвемые эксперты, такой вот вопрос: Как мне создать базу данных MySQL, из PHP, создать таблицу на пару-тройку записей.., как потом в эту таблицу чего нибудь добавить... И как можно послать письмо...... ...
Вопрос № 44314: Вы не могли бы посоветовать мне какой-нибудь хороший скрипт поиска по сайту на PHP с таким условием, чтобы данные для поиска хранились в базе данных MySql и легко бы туда вносились? Пробывал обычные скрипты на основе опять-таки PHP с индексацией стра...
Вопрос № 44332: Здравствуйте. Надо написать простенький скриптик, который будет перекодировывать строку из Unicode в windows-1251. Хотел использовать функцию CONVERT_CYR_STRING,но не получилось. Работает ли она с юникодом ? Если нет - то как ? Заране...
Вопрос № 44335: Здравствуйте товарищи эксперты..... Вот тут опять назрел вопросик... Как мне проверить существует ли таблица... есть ли для этого какая нибудь нормальная функция, а не проверка ошибки - если запись не добавляется..? И ещ...

Вопрос № 44.285
Дравствуйте уважвемые эксперты,
такой вот вопрос:

Как мне создать базу данных MySQL, из PHP,
создать таблицу на пару-тройку записей..,
как потом в эту таблицу чего нибудь добавить...
И как можно послать письмо......

Желательно маленький примерчик......
я делаю так:

define("DBName","Clients");
define("HostName","localhost");
define("UserName","root");
define("Password","");

if(mysql_connect(HostName,UserName,Password))
{

echo "Не могу соединится с базой данных".DBName."!<br>";
echo mysql_error();
exit;

}

Создаю.... если нет..... как кстати узнать есть ли база...?

mysql_create_db("Clients");
mysql_select_db(DBName); /выбираю..

mysql_query("CREAT TABLE Users2(id_n INT TNOT NULL AUTOINCREMENT ,name TEXT,lastname TEXT,email TEXT, PRIMARY KEY (id_n)");
mysql_query("INSERT into User2 VALUES($edit1, $edit2 , $edit3)" );

Но тут что то нечего не работает...
Спасибо......

Отправлен: 26.05.2006, 12:16
Вопрос задал: Wlp (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zysoftik
Здравствуйте, Wlp!

Я вижу 2 проблемы:

Запросы на создание таблицы и добавления записи.

Приведу пример гарантированно выполняющегося запроса на создание тыблицы:

CREATE TABLE `mytable` (
`id` tinyint(3) unsigned NOT NULL auto_increment,
`title` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `id_2` (`id`)
) TYPE=MyISAM;
В запросе на добавление записей, у Вас 2 ошибки:
а) Используется такая форма запроса, которая требует указания значения ВСЕХ полей таблицы;
б) Значения полей таблицы не заключены в кавычки.

Т.е. нужно написать так:

INSERT into User2 (name, lastname, email) VALUES('$edit1', '$edit2' , '$edit3')
В целом вся последовательность действий верна.

Проверить существование БД можно оценив результат выполнения ф-ции mysql_select_db. Если истина - все нормально, ложь - как правило, нет БД.
Отправка почты описана здесь:

http://ua2.php.net/manual/ru/ref.mail.php
Надеюсь, что мои комментарии помогут :)
Ответ отправил: Zysoftik (статус: 5-ый класс)
Ответ отправлен: 26.05.2006, 14:38
Оценка за ответ: 5
Комментарий оценки:
Спасибо вам.....
В принципе всё понятно...
Как мне надоели эти книги
с их опечатками..


Вопрос № 44.314
Вы не могли бы посоветовать мне какой-нибудь хороший скрипт поиска по сайту на PHP с таким условием, чтобы данные для поиска хранились в базе данных MySql и легко бы туда вносились? Пробывал обычные скрипты на основе опять-таки PHP с индексацией страниц, но они себя плохо проявили.
Отправлен: 26.05.2006, 16:38
Вопрос задал: Демьянчук Виталий (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Асташов Андрей Александрович
Здравствуйте, Демьянчук Виталий!

Все обычные скрипты, которые я когда либо пользовался, не проявили себя должным образом.
Могу лишь отметить более менее нормальную работу скрипта "поисковик 777". Но он работает на текстовых вайлах(http://www.omsk777.ru/all.php?act=poisk)
А больше по моему мнению, ничего хорошего Вы среди не найдете.

А вот если web сервер Ваш, то можно установить mnoGoSearch. По умолчанию он работает через перловый скрипт(по умолчанию папка cgi или cgi-bin). Но у него есть оснастка для пхп, которую надо отдельно подлючить к самому пхп(пересобрать пхп с параметром --with-mnogosearch='path/to/mnogosearch').
Вот это поисковик что надо.

Надеюсь мой ответ Вам как-нибудь помог.
Удачи.
---------
Бросил курить сам - Брось курить другому!!!
Ответ отправил: Асташов Андрей Александрович (статус: Студент)
Ответ отправлен: 27.05.2006, 10:02


Вопрос № 44.332
Здравствуйте.
Надо написать простенький скриптик, который будет перекодировывать строку из Unicode в windows-1251.
Хотел использовать функцию CONVERT_CYR_STRING,но не получилось. Работает ли она с юникодом ?
Если нет - то как ?
Заранее спаcибо.
Отправлен: 26.05.2006, 20:38
Вопрос задал: gorar (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Santana
Здравствуйте, gorar!
Может эта подойдет
mb_convert_encoding($str, "UTF-8", "windows-1251");
Ответ отправил: Santana (статус: 2-ой класс)
Ответ отправлен: 26.05.2006, 21:07

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

Функция iconv дкмаю оптимальна

http://ru.php.net/manual/ru/function.iconv.php
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 7-ой класс)
Ответ отправлен: 27.05.2006, 02:57
Оценка за ответ: 5

Отвечает: Cybernetic_Creature
Здравствуйте, gorar!
мануал РНР это один большой форум.
советую почаще просматривать его.
так на страницы функции которую вы указали я нашел следующий код написанный в приложении.
источник
http://php.net/manual/ru/function.convert-cyr-string.php

Приложение:

Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 27.05.2006, 10:02
Оценка за ответ: 5

Отвечает: PVS
Здравствуйте, gorar!
Лучше используйте iconv.
$winstr=iconv("UTF-8", "windows-1251", $unistr);
Ответ отправил: PVS (статус: 2-ой класс)
Ответ отправлен: 29.05.2006, 10:14


Вопрос № 44.335
Здравствуйте товарищи эксперты.....
Вот тут опять назрел вопросик...

Как мне проверить существует ли таблица...
есть ли для этого какая нибудь нормальная функция,
а не проверка ошибки - если запись не добавляется..?

И ещё, я конечно понимаю что вам наверно задают
таких вопросов очень много, но всё же,
одну-две ссылки на ХОРОШИЕ книги(хотя бы статьи) по работе
с MySQL из PHP... я скачал четыре здоровые книги,
посмотрел немного сначала и ничего из них не понял... , - потом случайно нашёл одну маленькую статейку с маленьким примерчиком и до меня дошло....
Трудности и их преодоление - это конечно опыт..
но меня не радует созирцание монитора в течении 3-4 часов,
и зависание на одной строчке кода.. из за того что,
автор книги для начинающих С НУЛЯ,
видите ли пропустил парочку запятых/букв в запросе...
Просьба ни кидать ссылки на книги PHP и MySQL,
в которых НЕ ПИШУТ как делать запросы из PHP,
возможно через пару месяцев мне будет без разницы какой книгой пользоваться но сейчас - я не хочу затягивать "пару месяцев" -
из за авторов которые не умеют писать...
Что то я разошёлся... Извините...

Спасибо...
Отправлен: 26.05.2006, 20:50
Вопрос задал: Wlp (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Cybernetic_Creature
Здравствуйте, Wlp!
для начала хочу ответить на ваш "авторов которые не умеют писать..."
вообще то авторы умеют писать.
просто некторым людям как вы, новичкам до них еще рано.то есть такие книги расчитаны для опытных программистов.
никто вам не говорит что бы вы начинали сразу с таких книг.
если вы не понимаете книгу не надо авторов обсирать.
на счет книги вряд ли помогу.только скажу что изучите азы языка SQL.и вам потом будет очень лекго.
теперь на счет существования таблицы.
см прил.

Приложение:

Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 27.05.2006, 09:57
Оценка за ответ: 5

Отвечает: Константин
Здравствуйте, Wlp!
Что сделал я.
1)открыл мануал по пхп, посмотрел функцию
mysql_list_tables
2)оказалось что написано что она "old"
3)Открыл мануал по пхп в сети, там в комментариях написано именно то что надо:
function mysql_table_exists($dbLink, $database, $tableName)
{
$tables = array();
$tablesResult = mysql_query("SHOW TABLES FROM $database;", $dbLink);
while ($row = mysql_fetch_row($tablesResult)) $tables[] = $row[0];
if (!$result) {
}
return(in_array($tableName, $tables));
}

Что в этом сложного? Первый пункт? Его можно заменить вопросом Яндексу:
"Узнать, есть ли таблица MySQL из PHP"
Тоже просто, верно?

Насчет книг. Я учился по
Люк Веллинг, Лора Томпсон "Разработка Web-приложений с использованием PHP и MySQL"
Только я покупал ее реальную, бумажную, но поищи в сети, должна быть. Один мой знакомый нашел.

А разница между книгами в которых не пишут как делать запросы из пхп и теми, в которых пишут только в том, что в первых пишется:
SELECT * FROM users WHERE login='user1';
А во вторых:
mysql_query("SELECT * FROM users WHERE login='user1'");
Но если не можешь сделать это элементарное преобразование - брось программирование. Разница только в использовании других функций.
А еще скачай себе офф-лайн версию русского мануала к пхп, очень удобно. Качать с php.net.
---------
Лучше сделать и жалеть, чем жалеть о том что не сделал
Ответ отправил: Константин (статус: 5-ый класс)
Ответ отправлен: 27.05.2006, 10:07
Оценка за ответ: 5

Отвечает: Red Devil
Здравствуйте, Wlp!
Такой функции нет. И надобности в ней тоже. Чтобы создать таблицу создают специальный скрипты sql, в которых описывают действия для создания таблиц и баз данных, то есть этакая инициализация. В рабочем скрипте (т.е. тот скрипт, которым пользуются пользователи) не должен допускать создания таблиц или баз данных. В этом случае скрипт станет лакомой целью кракеров или любителей пошутить или любитилей что-нибудь сломать.

Выход естественно есть. Можно, например, достать список всех таблиц и искать в них свою. Но это ресурсоемкая задача. Я предлагаю простой запрос, который выводит все поля таблицы. Если запрос неудачный - таблицы нет, если удачный значит таблица есть. Пример в приложении.

У меня более 2-х десятков элекронных книг по mysql/php, написаны все ужасно. Как и для профи, так и для начинающих. Лучше всего использовать документацию, тем более, что она есть на многих языкам, в том числе и на русском.
http://www.mysql.com/documentation/
http://www.php.net/download-docs.php

Приложение:

---------
Есть 10 типов людей: те, кто знаком с двоичной системой, и те, кто нет.

Ответ отправил: Red Devil (статус: Студент)
Ответ отправлен: 27.05.2006, 12:22
Оценка за ответ: 5

Отвечает: PVS
Здравствуйте, Wlp!
Взято непосредственно из мануала по PHP:
<?php
mysql_connect ("localhost:3306");
$result = mysql_list_tables ("wisconsin");
$i = 0;
while ($i < mysql_num_rows ($result)) {
$tb_names[$i] = mysql_tablename ($result, $i);
echo $tb_names[$i] . "<BR>";
$i++;
}
?>
Ответ отправил: PVS (статус: 2-ой класс)
Ответ отправлен: 29.05.2006, 10:38


Отправить вопрос экспертам этой рассылки

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.33 от 25.05.2006
Яндекс Rambler's Top100

В избранное