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

  Все выпуски  

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


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

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 124
∙ повысить рейтинг »
Марк Крейн
Статус: 5-й класс
Рейтинг: 21
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 5-й класс
Рейтинг: 19
∙ повысить рейтинг »

∙ PHP / Perl / Python

Номер выпуска:1295
Дата выхода:05.07.2017, 11:45
Администратор рассылки:Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)
Подписчиков / экспертов:18 / 13
Вопросов / ответов:3 / 15

Консультация # 44335: Здравствуйте товарищи эксперты..... Вот тут опять назрел вопросик... Как мне проверить существует ли таблица... есть ли для этого какая нибудь нормальная функция, а не проверка ошибки - если запись не добавляется..? И ещё, я конечно понимаю что вам наверно задают таких вопросов очень много, но всё же, одну-две ...
Консультация # 96250: Помогите организовать дерево. PHP+MySQL! Строю сайт - хранилище руководств. Все руководства должны быть отсортированны по рубрикам с разным уровнем вложенности. Притом одно руководство может быть положенно в несколько рубрик. Проблема заключается в организации БД. Количество запросов на выборку из дерева и вывод дерева существенно...
Консультация # 15338: Здравствуйте уважаемые эксперты! Подскажите как мне при помощи PHP получить ip,имя машины,браузер клиента который зашел на мой сайт? Если возможно какие еще сведения можно получить о посетителе сайта и как это сделать? Спасибо....

Консультация # 44335:

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

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

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

Спасибо...

Дата отправки: 26.05.2006, 20:50
Вопрос задал: Wlp
Всего ответов: 4
Страница онлайн-консультации »


Консультирует Cybernetic_Creature:

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

Приложение:

Консультировал: Cybernetic_Creature
Дата отправки: 27.05.2006, 09:57
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Константин:

Здравствуйте, 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.

Консультировал: Константин
Дата отправки: 27.05.2006, 10:07
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует RedDevil:

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

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

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

Приложение:

Консультировал: RedDevil
Дата отправки: 27.05.2006, 12:22
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует 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
Дата отправки: 29.05.2006, 10:38
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 96250:

Помогите организовать дерево. PHP+MySQL!

Строю сайт - хранилище руководств. Все руководства должны быть отсортированны по рубрикам с разным уровнем вложенности. Притом одно руководство может быть положенно в несколько рубрик.

Проблема заключается в организации БД. Количество запросов на выборку из дерева и вывод дерева существенно больше чем добавлений и изменений.

Необходимо уметь:
1. выводить дерево на экран.
2. узнавать номер вложенности рубрики
3. добавлять/удалять рубрику
4. уметь сортировать узлы/книги внутри узла

Дата отправки: 24.07.2007, 21:37
Вопрос задал: NiGHT
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Nexus:

Здравствуйте, NiGHT!

А какой MySQL и какой объем базы? Насколько я понимаю из предметной области база очень уж большой не будет. Я в аналогичном каталоге хранил просто parent_id для каждой категории. Для 4го MySQL в котором нет хранилок это наверное даже более экономичный способ, если мускл 5й, то правильнее хранить уровень категории и id левого и правого потомка, причем узлы в порядке обхода дерева. Тогда отрисовываться дерево будет горздо быстрее, добавлять узлы - дольше и сложнее. Про второй вариант была неплохая статья "Дерево каталогов NESTED SETS", поищи в инете, или могу на мыло скинуть. Там есть примеры реализации и пр.

сама база - таблица руководств, таблица рубрик (в которой кроме id хранить либо parent_id, либо уровень у двух потомков) и таблица связи между ними (составной превичный ключ - id руководства и id рубрики)

Консультировал: Nexus
Дата отправки: 24.07.2007, 22:12
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Sema:

Здравствуйте, NiGHT!

Есть такой вариант...
создаешь таблицу в которой у тебя хранится id рубрики и par_id -id вышестоящей рубрики. у самых верхних уровней соответственно par_id = 0 и далее через рекурсию ПХП ты его раскрываешь

Консультировал: Sema
Дата отправки: 25.07.2007, 08:41
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 15338:

Здравствуйте уважаемые эксперты!
Подскажите как мне при помощи PHP получить ip,имя машины,браузер клиента который зашел на мой сайт? Если возможно какие еще сведения можно получить о посетителе сайта и как это сделать?
Спасибо.

Дата отправки: 16.12.2004, 17:24
Вопрос задал: Поспелов Виталий Евгеньевич
Всего ответов: 9
Страница онлайн-консультации »


Консультирует Vril:

Здравствуйте, Поспелов Виталий Евгеньевич!
Есть такая предоприделяемая переменная $_SERVER.
В ней есть много всего, ибо переменная эта - хеш.
Для того что бы посмотреть её содержимое - var_dump($_SERVER);
Удачи,
Кот Александр Тихонович =)

Приложение:

Консультировал: Vril
Дата отправки: 16.12.2004, 17:38
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Gibbel:

Здравствуйте, Поспелов Виталий Евгеньевич!
Есть массив предопределенных переменных $_SERVER (в более ранних версиях PHP он именовался $HTTP_SERVER_VARS, имя это по прежнему доступно, но его не рекомендуется использовать). Этот массив суперглобальный, т.е. доступен в любом месте программы без дополнительных определений.
Ниже приведены назначения полей этого массива.
$_SERVER[\'PHP_SELF\'] - путь и имя файла текущего скрипта (недоступно при запуске PHP из коммандной строки)
$_SERVER[\'argv\'] - массив аргументов, переданных скрипту (аналогичен соответствующему массиву в функции main в C/C++)
$_SERVER[\'argc\'] - количество параметров, переданных скрипту (аналогичен соответствующему параметру в функции main в C/C++)
$_SERVER[\'GATEWAY_INTERFACE\'] - спецификация CGI, используемая сервером
$_SERVER[\'SERVER_NAME\'] - имя хоста сервера, на котором исполняется скрипт.
$_SERVER[\'SERVER_SOFTWARE\'] - строка информации о сервере, отправляемая с HTTP-заголовками
$_SERVER[\'SERVER_PROTOCOL\'] - имя и версия протокола, по которому поступил запрос.
$_SERVER[\'REQUEST_METHOD\'] - метод, используемый в запросе
$_SERVER[\'QUERY_STRING\'] - строка запроса, если есть
$_SERVER[\'DOCUMENT_ROOT\'] - коренной каталог, заданный в конфигурации сервера
$_SERVER[\'HTTP_ACCEPT\'] - значение поля "Accept" из заголовков запроса
$_SERVER[\'HTTP_ACCEPT_CHARSET\'] - значение поля "Accept-Charset" из заголовков запроса
$_SERVER[\'HTTP_ACCEPT_ENCODING\'] - значение поля "Accept-Encoding" из заголовков запроса
$_SERVER[\'HTTP_ACCEPT_LANGUAGE\'] - значение поля "Accept-Language" из заголовков запроса
$_SERVER[\'HTTP_CONNECTION\'] - значение поля "Connection" из заголовков запроса
$_SERVER[\'HTTP_HOST\'] - значение поля "Host" из заголовков запроса
$_SERVER[\'HTTP_REFERER\'] - значение поля "Referer" из заголовков запроса, данное поле содержит адрес страницы, с которой пришел пользователь, но не все клиенты (браузеры) передают данное поле.
$_SERVER[\'HTTP_USER_AGENT\'] - значение поля "User-Agent" из заголовков запроса, данное поле содержит информацию о клиенте (тип и версия браузера, тип и версия операционной системы, и т.п.). Для разбора информации из этого поля можно использовать функцию get_browser()
$_SERVER[\'REMOTE_ADDR\'] - IP адрес удаленного компьютера (клиента)
$_SERVER[\'REMOTE_HOST\'] - имя хоста удаленного компьютера (клиента), ваш сервер должен быть сконфигурирован специальным образом для заполнения этого поля. Иначе пользуйтесь функцией gethostbyaddr($_SERVER[\'REMOTE_ADDR\']);
$_SERVER[\'REMOTE_PORT\'] - порт, открытой на удаленном компьютере (клиенте) для обмена информацией с сервером
$_SERVER[\'SCRIPT_FILENAME\'] - абсолютный путь к исполняемому скрипту
$_SERVER[\'SERVER_ADMIN\'] - соответствующий параметр из конфигурации веб-сервера Apache
$_SERVER[\'SERVER_PORT\'] - порт, используемый сервером для связи с клиентами (по умолчанию равен 80)
$_SERVER[\'SERVER_SIGNATURE\'] - строка, содержащая версию сервера и имя виртуального хоста, добавляемые к страницам, сгенерированным сервером (если разрешено)
$_SERVER[\'PATH_TRANSLATED\'] - системный путь к файлу скрипта после выполнения всех преобразований
$_SERVER[\'SCRIPT_NAME\'] - текущий путь к скрипту. Используется страницами, которым необходимо ссылаться на саму себя
$_SERVER[\'REQUEST_URI\'] - URI, переданный при доступе к скрипту
$_SERVER[\'PHP_AUTH_USER\'] - имя пользователя (HTTP authentication)
$_SERVER[\'PHP_AUTH_PW\'] - пароль пользователя (HTTP authentication)
$_SERVER[\'AUTH_TYPE\'] - метод, используемый для аутентификации пользователя (HTTP authentication)

Консультировал: Gibbel
Дата отправки: 16.12.2004, 18:19
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Шахгусейнов Азиз:

Здравствуйте, Поспелов Виталий Евгеньевич!
зайди в phpinfo и посмотри переменные окружения.
удачи!

Консультировал: Шахгусейнов Азиз
Дата отправки: 16.12.2004, 18:32
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует NeiTrinO:

Здравствуйте, Поспелов Виталий Евгеньевич!
просто вызовите
phpinfo();
?>
выведется вся информация о предопределенных переменных. В том числе, айпи, броузер и многое другое

Консультировал: NeiTrinO
Дата отправки: 16.12.2004, 20:25
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Asper:

Здравствуйте, Поспелов Виталий Евгеньевич!
Эти сведения находятся в массиве $_SERVER[]
$_SERVER[\'REMOTE_ADDR\'] - IP-адрес
$_SERVER[\'HTTP_USER_AGENT\'] - браузер
Полное описание - http://www.php.net/manual/en/reserved.variables.php#reserved.variables.server , там можно найти много интересного.
Имя машины по http определить нельзя, разве что через gethostbyaddr() попробовать...

Консультировал: Asper
Дата отправки: 16.12.2004, 21:29
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Strory:

Здравствуйте, Виталий!
Все эти интересности находятся в массиве $_SERVER.
IP - $_SERVER[\'REMOTE_ADDR\']
browser&OS - $_SERVER[\'HTTP_USER_AGENT\']
Также можно узнать установленное у пользователя разрешение экрана, разрешены ли куки и т.д., но это уже с помощью JavaScript.


С уважением,
  Strory.

Консультировал: Strory
Дата отправки: 16.12.2004, 23:05
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Samum:

Здравствуйте, Поспелов Виталий Евгеньевич!
В сценарии PHP, если воспользоваться глобальным массивом $_SERVER, можно узнать некоторые данные. Далее я опишу некоторые ключи, и их результат.
\'REMOTE_ADDR\' - IP адрес пользователя
\'REMOTE_PORT\' - порт на пользовательской машине для соединения с Web сервером.
\'HTTP_USER_AGENT\' - имя браузера, используемого пользователем. Т.к. устанавливается браузером, то может содержать неверное имя.
\'HTTP_REFERER\' - адрес страницы, с которой пользователь пришел к вам. Тоже устанавливается браузером, поэтому доверять ему особо не стоит.
Например, запись $_SERVER[\'REMOTE_ADDR\'] вернет ip адрес пользователя.

Консультировал: Samum
Дата отправки: 17.12.2004, 08:34
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует КиберТварь:

Здравствуйте, Поспелов Виталий Евгеньевич!
Для IP, Домена и Броузера см. прилож.
а для других сведений ищите в массиве $_SERVER ключи которые начитнаются с HTTP_*

Приложение:

Консультировал: КиберТварь
Дата отправки: 17.12.2004, 17:12
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует D.N.S:

Здравствуйте, Поспелов Виталий Евгеньевич!
ip: $_SERVER[\'REMOTE_ADDR\'];
браузер: $_SERVER[\'HTTP_USER_AGENT\'];
Все остальные переменные можно увидеть с помощью функции phpinfo() (см приложение)

Приложение:

Консультировал: D.N.S
Дата отправки: 17.12.2004, 23:42
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное