Вопрос № 96073: Здравствуйте эксперты!
Есть страничка с формой "калькулятор", с полями: аргумент1, аргумент2, арифметическое действие (пользователь выбирает из списка), и кнопкой вычислить при нажатии которой, данные отправляются на сервер и обрабатыв...Вопрос № 96087: Как загрузить страницу с нета в тхт формате...Вопрос № 96229: В PHP не удается создать таблицу в базе MySQL c именем поля ALL
Видимо потому, что имя поля совпадает со служебным словом.
Можно ли как то решить эту проблему?...Вопрос № 96250: Помогите организовать дерево. PHP+MySQL!
Строю сайт - хранилище руководств. Все руководства должны быть отсортированны по рубрикам с разным уровнем вложенности. Притом одно руководство может быть положенно в несколько рубрик.
Пробле...Вопрос № 96306: Добрый день, всем участникам форума.
Помогите разобраться в мой проблеме
Есть две базы одна локальная (localhost)
$host = "localhost";
$user = "root";
$pass = "";
$database = &...Вопрос № 96316: Здравствуйте! У меня 2 вопроса.
1. Я собираюсь создавать динамический сайт с помощью include, но может, стоит использовать fopen? Какой лучше, безопаснее?
2. Но еще я хочу, чтобы у моего сайта были статические адреса, то есть хочу использоват...
Вопрос № 96.073
Здравствуйте эксперты!
Есть страничка с формой "калькулятор", с полями: аргумент1, аргумент2, арифметическое действие (пользователь выбирает из списка), и кнопкой вычислить при нажатии которой, данные отправляются на сервер и обрабатываются. Все вычисления должны производиться на сервере и после отправляться клиенту. Проблема в том, что я не знаю как определить с помощью PHP, какое арифметическое действие было выбрано пользователем.
Спасибо за помощь.
С уважением
Приложение:
Отправлен: 23.07.2007, 13:25
Вопрос задал: Sky24dive (статус: Посетитель)
Всего ответов: 7 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Yurio
Здравствуйте, Sky24dive!
Определить, какое действие выбрано можно при помощи оператора switch. Пример - в приложении.
Приложение:
Ответ отправил: Yurio (статус: 2-ой класс)
Ответ отправлен: 23.07.2007, 13:46 Оценка за ответ: 5
Отвечает: Gines
Здравствуйте, Sky24dive!
Получаете значение списка методом GET, например $znak=$_GET['List'], а потом switch'ем просматриваете его значение, т.е.:
switch($znak){
case 0: то складываете два числа
.....
case 3: то делите два числа
}
Ответ отправил: Gines (статус: 2-ой класс)
Ответ отправлен: 23.07.2007, 14:05 Оценка за ответ: 4
Отвечает: Хасаншин Азат
Здравствуйте, Sky24dive!
После отправки формы будет создана переменная $list co значением, которое выбрал пользователь. Например, если пользователь выбрал сложение, то $list будет равно 0.
Ответ отправил: Хасаншин Азат (статус: 1-ый класс)
Ответ отправлен: 23.07.2007, 14:22 Оценка за ответ: 4
Отвечает: Sema
Здравствуйте, Sky24dive!
Данные отправляемые на сервер, заносятся в переменную QUERYSTRING, ее можно пропарсить и получить значение полей формы далее через операторы ПХП switch ...case... определяй чего тебе надо
Ответ отправил: Sema (статус: 2-ой класс)
Ответ отправлен: 23.07.2007, 16:40 Оценка за ответ: 4
Отвечает: Katyass
<?php
switch($_GET['List'])
{
case 0:
$result=$_GET['num1']+$_GET['num2'];
break;
case 1:
$result=$_GET['num1']-$_GET['num2'];
break;
case 2:
$result=$_GET['num1']*$_GET['num2'];
break;
case 3:
$result=$_GET['num1']/$_GET['num2'];
break;
}
?>
$result - это результат
Ответ отправила: Katyass (статус: 2-ой класс)
Ответ отправлен: 23.07.2007, 17:02 Оценка за ответ: 5
Отвечает: Юркин Александр
Здравствуйте, Sky24dive!
Во первых лучше использовать метод POST, а не GET
<form name="calculator" action="action.php" method="POST">
Ответ отправил: Юркин Александр (статус: 1-ый класс)
Ответ отправлен: 23.07.2007, 20:32
Отвечает: Powoditch konstantin
Здравствуйте, Sky24dive!
Попробуйте вот так. Тоисть сначала надо сделать переданы ли верные параметры а потом формировать результат в зависимости от действий.
Приложение:
Ответ отправил: Powoditch konstantin (статус: 2-ой класс)
Ответ отправлен: 23.07.2007, 22:31
Вопрос № 96.087
Как загрузить страницу с нета в тхт формате
Приложение:
Отправлен: 23.07.2007, 14:36
Вопрос задал: Volodimir (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Flynn
Здравствуйте, Volodimir !
В РНР есть такой модуль как Curl. Он позволяет в точности делать действия, которые выполняет браузер, т.е. в данном случае вначале отсылать логин с паролем на страницу логина, получить от туда значение куки (или сессию) и передать это в следующем запросе на нужную нам страницу.
Пример для логина в приложении, но уже какие точно данные надо посылать и в какие переменные - зависит от сайта и разбирать его придется вначале вручную. Либо же писать более сложный скрипт, что будет сам это делать. В переменную $result приходит вся страница, т.е. функция copy уже включена :)
Для работы с Curl-ом необходимо "включить" эту библиотеку в php.ini.
Приложение:
Ответ отправил: Flynn (статус: 2-ой класс)
Ответ отправлен: 23.07.2007, 17:02 Оценка за ответ: 5
Отвечает: Powoditch konstantin
Здравствуйте, Volodimir !
Попробуйте использовать функцию file_get_contents
Как параметр передаете адрес и она сохраняет вам результат в строку
Ответ отправил: Powoditch konstantin (статус: 2-ой класс)
Ответ отправлен: 23.07.2007, 22:53
Вопрос № 96.229
В PHP не удается создать таблицу в базе MySQL c именем поля ALL
Видимо потому, что имя поля совпадает со служебным словом.
Можно ли как то решить эту проблему?
Отправлен: 24.07.2007, 17:56
Вопрос задала: Vikas (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Powoditch konstantin
Здравствуйте, Vikas!
У меня всё работает. Вот запрос:
CREATE TABLE `test` (
`ALL` VARCHAR( 255 ) NOT NULL
);
Версии програм:
phpMyAdmin2.6.1, mySQL 4.1.16-max
Может Вы ошиблись когда не заключали имя поля в кавычки?
Ответ отправил: Powoditch konstantin (статус: 2-ой класс)
Ответ отправлен: 24.07.2007, 18:02
Отвечает: Santana
Здравствуйте, Vikas!
Если ставить имя поля в кавычки (например "ALL") то пропустит. Но я бы категорически не советовал использовать подобного рода имена. Проблемы обязательно вылезут, причем в самый не подходящий момент. И причем боком, те ошибки не будут указывать явно на это имя, и придется потратить и время и силы на локализацию источника. Было у меня поле ON ... да-с .... :(
Ответ отправил: Santana (статус: 9-ый класс)
Ответ отправлен: 24.07.2007, 18:15
Отвечает: Yurio
Здравствуйте, Vikas!
Напишите имя поля в одинарных кавычках.
Пример в приложении.
Приложение:
Ответ отправил: Yurio (статус: 2-ой класс)
Ответ отправлен: 24.07.2007, 18:20
Отвечает: Flynn
Здравствуйте, Vikas!
Вы правы - не видимо, а точно по этой причине и не дает.
Можете попробовать взять слово all в кавычки (лучше ` - там где тильда)
например `all` int(11) default NULL
Но кроме этого у вас появится еще и проблема с выбором с этой таблицы, так как Select id,all From table Where ... выдаст ошибку. Придется применять всюду к таблицам короткие обозначения и указывать, что это поле таблицы
select t.id, t.all from table t Where ...
Но как показывает опыт самое правильное решение - вообще не делать названий с зарезервированными словами MySQL-я, так как ошибки могут возникнуть не только при отправке запросов.
Ответ отправил: Flynn (статус: 2-ой класс)
Ответ отправлен: 24.07.2007, 20:36
Отвечает: Magister
Здравствуйте, Vikas!
Ну первое, что приходит в голову, это добавить к названию, совпадающему со служебными словами, например "fld" (в Вашем случае будет fldALL)...
--------- Aquila non Capta Muscas
Ответ отправил: Magister (статус: 2-ой класс)
Ответ отправлен: 24.07.2007, 21:15
Вопрос № 96.250
Помогите организовать дерево. PHP+MySQL!
Строю сайт - хранилище руководств. Все руководства должны быть отсортированны по рубрикам с разным уровнем вложенности. Притом одно руководство может быть положенно в несколько рубрик.
Проблема заключается в организации БД. Количество запросов на выборку из дерева и вывод дерева существенно больше чем добавлений и изменений.
Необходимо уметь:
1. выводить дерево на экран.
2. узнавать номер вложенности рубрики
3. добавлять/удалять рубрику
4. уметь сортировать узлы/книги внутри узла
Приложение:
Отправлен: 24.07.2007, 21:37
Вопрос задал: NiGHT (статус: Практикант)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Nexus
Здравствуйте, NiGHT!
А какой MySQL и какой объем базы? Насколько я понимаю из предметной области база очень уж большой не будет. Я в аналогичном каталоге хранил просто parent_id для каждой категории. Для 4го MySQL в котором нет хранилок это наверное даже более экономичный способ, если мускл 5й, то правильнее хранить уровень категории и id левого и правого потомка, причем узлы в порядке обхода дерева. Тогда отрисовываться дерево будет горздо быстрее, добавлять узлы - дольше и сложнее. Про второй вариант была неплохая статья "Дерево
каталогов NESTED SETS", поищи в инете, или могу на мыло скинуть. Там есть примеры реализации и пр.
сама база - таблица руководств, таблица рубрик (в которой кроме id хранить либо parent_id, либо уровень у двух потомков) и таблица связи между ними (составной превичный ключ - id руководства и id рубрики)
Ответ отправил: Nexus (статус: 8-ой класс)
Ответ отправлен: 24.07.2007, 22:12
Отвечает: Sema
Здравствуйте, NiGHT!
Есть такой вариант...
создаешь таблицу в которой у тебя хранится id рубрики и par_id -id вышестоящей рубрики. у самых верхних уровней соответственно par_id = 0 и далее через рекурсию ПХП ты его раскрываешь
Ответ отправил: Sema (статус: 2-ой класс)
Ответ отправлен: 25.07.2007, 08:41
Вопрос № 96.306
Добрый день, всем участникам форума.
Помогите разобраться в мой проблеме
$host = "175.128.80.01";
$user = "root";
$pass = "123";
$database = "base2";
К локальной (своей) базе я подключаюсь без проблем. все мои запросы мускул выполняет на ура
Но как только я подключаю удаленную, выскакивает ошибка
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
соответственно та же проблем если писать в окне (CMD) c:z:usrlocalmysql4inmysql.exe
запросами типа mysql.exe -uODBC -p
(Проблему решить не удалось)
В результате престал спать и есть... все думал как же открыть доступ пользователю 'ODBC'@'localhost'
Перечитал весь форум, перерыл все конфиги где встречаются словеса ODBC и MySQL
Пробовал в MySqlAdmin'е добавить нового пользователя ODBC, ошибка убивается, однако подключение производится только к локальной базе
другую он просто игнорирует.
Фронтом и через Администрирование/Источники данных (ODBC)/Connector ODBC 3.51
подключение к удаленной базе происходит без каких-либо проблем.
На форуме mysql.com
http://forums.mysql.com/read.php?10,6834,12338#msg-12338
Вычитал совет, про мой случай, где рекомендуют просто снести мускул.
т.к я c начало ставил пакет Денвера (хотя в описание к нему уже написало что ODBC уже вроде как в нем уже зашит), а потом тока драйвер ODBC
Вот думаю переустановить Денвер, а вместе с ним и сам MySQL
Плиз, помогите понять и решить проблему. стоит ли это делать (переустанавливать Пакет денвера)
З.Ы.
Из того, что стоит на моем компутере:
Все предельно просто Windows XP Prof SP2
+ пара прикольных игр типа тетрис
Ну и сам Денвер - Base_2006-10-04_a1.3.33_p4.4.3_m4.1.16_pma2.6.
Отправлен: 25.07.2007, 10:44
Вопрос задал: Alexstudio (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Шахгусейнов Азиз
Здравствуйте, Alexstudio!
все намного проще.......
просто у Вас неправильный имя/пароль
--------- Среди людей есть такие, которые говорят: "Мы уверовали в Бога и в Последний день". Однако они суть неверующие.
Ответ отправил: Шахгусейнов Азиз (статус: 5-ый класс)
Ответ отправлен: 25.07.2007, 11:18
Отвечает: Gines
Здравствуйте, Alexstudio!
Судя по ошибке, могу предположить что ошибка кроется в коде подключения, т.к. Вы указываете в конфиге, что пользователь root с паролем 123, а PHP пытается подключиться к MySQL как анонимный пользователь с пустым паролем. Проверьте внимательно код подключения.
Ответ отправил: Gines (статус: 2-ой класс)
Ответ отправлен: 25.07.2007, 11:34
Отвечает: Бородин Александр Олегович
Здравствуйте, Alexstudio!
А на другом компе файрвол случаем не работает? Если есть возможность попробуйте протестировать работу скрипта на втором компе, как на локальном. Если все пройдет отлично, значит, он закрыт для доступа извне. Ипняк у него указан локальный(если не ошибаюсь, конечно, в нумерациях), поэтому думаю, что проблем с доступом к нему быть не должно.
--------- Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Согласен с предыдущим ответом, у тебя что-то не так с подключением, ты должен получать ошибку хотя бы типа Access denied for user 'root'@'175.128.80.01' (using password: YES), сейчас у тебя неправильно генерируется коннекшн стринг. И еще, если ты хочешь зайти на удаленный сервер под рутом, проверь что там разершено подключение под рутом с удаленного компа. По умолчанию мускл это закрывает. Либо просто создай аккаунт.
Ответ отправил: Nexus (статус: 8-ой класс)
Ответ отправлен: 25.07.2007, 13:26
Отвечает: Powoditch konstantin
Здравствуйте, Alexstudio!
А почему Вы ркшили что проблема ODBC?
Вы же подключаетесь как рут:
$host = "175.128.80.01";
$user = "root";
$pass = "123";
$database = "base2";
Если Вы входите как рут, то попробуйте выполнить вот это
mysql.exe -h 175.128.80.01 -u root -p
Вбиваете пароль.
Если говорит что access denied значит неправильный пароль для рута(123 - не самый лучший=))
Ответ отправил: Powoditch konstantin (статус: 2-ой класс)
Ответ отправлен: 25.07.2007, 23:17
Вопрос № 96.316
Здравствуйте! У меня 2 вопроса.
1. Я собираюсь создавать динамический сайт с помощью include, но может, стоит использовать fopen? Какой лучше, безопаснее?
2. Но еще я хочу, чтобы у моего сайта были статические адреса, то есть хочу использовать rewrite (и сделать ЧПУ). Я знаю, что это делается в .htacess, но как - не знаю.
Мне бы хотелось получить развернутые ответы.
Заранее огромное спасибо!
Отправлен: 25.07.2007, 11:59
Вопрос задала: Angel7 (статус: Практикант)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Yadovit
Здравствуйте, Angel7!
1. include вставляет содержимое включаемого файла в скрипт и если там есть код пытается его выполнить.
fopen открывает файл для чтения иили записи. После открытия файл ещё нужно прочитать с помощью другой функции (напрмер fread) и выполнить если это скрипт (например с помощью eval).
Просто для включения файлов проще первое, если нужно читать файл частями, то использовать второе.
2. Нужно знать регулярные выражения. Это отдельная тема.
Вот тут можно почитать:
http://www.drupal.ru/node/2643
Ответ отправил: Yadovit (статус: 7-ой класс)
Ответ отправлен: 25.07.2007, 12:32 Оценка за ответ: 5 Комментарий оценки: Спасибо (в особенности за 1-ую часть).
Отвечает: Шахгусейнов Азиз
Здравствуйте, Angel7!
Здравствуйте, Angel7!
1. include......и с чего вы взяли что надо использовать фопен???
2.
RewriteEngine on
RewriteRule ^/(rus|eng)/$ ?lang=$1
--------- Среди людей есть такие, которые говорят: "Мы уверовали в Бога и в Последний день". Однако они суть неверующие.
Ответ отправил: Шахгусейнов Азиз (статус: 5-ый класс)
Ответ отправлен: 25.07.2007, 12:48 Оценка за ответ: 4 Комментарий оценки: 1. А почему нельзя? :) 2. Не поняла, что это значит...
Отвечает: Бородин Александр Олегович
Здравствуйте, Angel7!
Отвечу на первый вопрос, так как во втором вопросе не спец.
Создавать, конечно, лучше с помощью include. С помощью fopen что Вы делать собираетесь? У него немного другое предназначение, а инклюд просто создан для создания многомодульных систем.
Ну и потом, fopen работает помедленнее инклюда, я так подозреваю.
--------- Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Ответ отправил: Бородин Александр Олегович (статус: 4-ый класс)
Ответ отправлен: 25.07.2007, 12:59 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: Magister
Здравствуйте, Angel7!
1. Лучше include(), а еще лучше, include_once()
2. По поводу rewrite rules в .htaccess почитай мануал Apache, там толково все расписано (http://httpd.apache.org/docs/1.3/misc/rewriteguide.html).
Приложение:
--------- Aquila non Capta Muscas
Ответ отправил: Magister (статус: 2-ой класс)
Ответ отправлен: 25.07.2007, 14:01 Оценка за ответ: 5 Комментарий оценки: Спасибо! А почему лучше include_once()?