Вопрос № 82854: Здраствуйте уважаемые эксперты!
Такая задача:
есть строка ($s="|1||23||67|...") и есть таблица с потем number в котором может содержаться одно из данных чисел, мне требуется выбрать из таблицы только записи у которых numbe...Вопрос № 82860: Имеется гостевая книга на php НО нет проверки для спам ботов!!! Тоесть чтобы нужно было ввести код защитный!!! Как реализовать это!?...Вопрос № 82894: Здравтсвуйте, уважаемые эксперты! Мне нужно сделать, чтобы определенное
число из поля БД MySQL уменьшалось каждые 4 дня на определенное кол-во процентов. Скажите, пожалуйста, как это реализовать? ведь, если к скрипту не обращаться, то он не выполняет...Вопрос № 82947: Кто-нибудь наблюдал как поисковые системы обрабатывают сессии?
По идее SID подшивается к адресу страницы. Если пользователь захочит перейти на сайт не получит ли он SID от поискового робора? И не получится ли куча пользователей с одним SID....Вопрос № 82952: Здравствуйте. Прошу помощи.
Первая часть кода (см. приложение) работает как надо, а вот вторая (при $action==5) выдаёт ошибку:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:home estodrom.ruwwwadmin...Вопрос № 82972: Всем привет!!!
В приложении код ответа на мой вопрос о том, как испрользовать переменные на следующую страницу. Но он не работает, переменная не определена. Врядли это ошибка эксперта, подскажите, что делать, чтоб было правильно через $_SERVER. И...
Вопрос № 82.854
Здраствуйте уважаемые эксперты!
Такая задача:
есть строка ($s="|1||23||67|...") и есть таблица с потем number в котором может содержаться одно из данных чисел, мне требуется выбрать из таблицы только записи у которых number содержиться в данной строке. Пробовал запрос на выбор делать так: WHERE $s LIKE `%|`.number.`|%`, но похоже у меня проблемы с синтаксисом. подскажите верный запрос.
Отправлен: 16.04.2007, 21:03
Вопрос задал: J D (статус: 6-ой класс)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Илья "DraK" Андреевич
Здравствуйте, J D!
MySQL работает только с текствыми запросами, тобишь передать массив ему нельзя.
правильный вариант в приложение
Приложение:
Ответ отправил: Илья "DraK" Андреевич (статус: Заблокирован)
Ответ отправлен: 16.04.2007, 21:14
Отвечает: HookEst
Здравствуйте, J D!
Если представить строку как список значений разделеных запятыми,
то можно использовать оператор: expr IN (value,...).
Может работать быстрее чем LIKE.
$query="SELECT * FROM `tbl` WHERE `number` IN($set)";
//SELECT * FROM `tbl` WHERE `number` IN(1,23,67,110)
//...
//...
?>
Успехов.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 17.04.2007, 04:51
Отвечает: PVS
Здравствуйте, J D!
Предполагаю что база в MySQL, если нет - ищите аналог функции concat:
$qry="select * from my_table where '".$s."' like concat('%|',number,'|%')";
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 17.04.2007, 09:31
Отвечает: Fitcher
Здравствуйте, J D!
Вот запрос который вам нужен "SELECT `id` FROM `film` WHERE `id` IN (".$st.")"
но перед его употребление нужно произвести форматирование строки $st.
($st - это ваша строка с номерами.)Форматирование выглядит так :
$st="|1||23||67|";
$st=substr($st,1,strlen($st)-2);
$a=array();
$a=explode('||', $st);
$st='';
foreach($a as $v){ if ($v!=0) {$st.=$v.",";}}
$st=substr($st,0,strlen($st)-2);
Потом вставляем в запрос. Удачи...
Приложение:
--------- Будущее - это нечто, к чему каждый приближается со скоростью шестьдесят минут в час, желает он того или нет.
Ответ отправил: Fitcher (статус: 4-ый класс)
Ответ отправлен: 17.04.2007, 18:52
Отвечает: Шахгусейнов Азиз
Здравствуйте, J D!
проблемы есть......попробуйте как-нить по-другому сделать.....поменяйте структуру......
ну а если ничего не помогает то
Вам надо строку $s заменить в строке все || на запятые.......потомсделать запрос WHERE <asdf> IN ($s);
--------- Среди людей есть такие, которые говорят: "Мы уверовали в Бога и в Последний день". Однако они суть неверующие.
Ответ отправил: Шахгусейнов Азиз (статус: 4-ый класс)
Ответ отправлен: 18.04.2007, 10:20
Вопрос № 82.860
Имеется гостевая книга на php НО нет проверки для спам ботов!!! Тоесть чтобы нужно было ввести код защитный!!! Как реализовать это!?
Ответ отправил: chiefff (статус: 1-ый класс)
Ответ отправлен: 16.04.2007, 22:38 Оценка за ответ: 5 Комментарий оценки: Спасибо тоже не плохой вариант!
Отвечает: MYPABEU
Здравствуйте, Макс Куликов!
Воспользуйтесь таким средством, как CAPTCHA.
Почитать про это можно тут: http://www.captcha.ru
Работа каптчи происходит следующим образом:
1) создается сценарий, в нем начинается сессия и потом уже выводиться хтмл-код
2) создается файл, который тоже создает сессию и генерирует картинку, внося в сессию результат картинки
3) после подтверждения ввода с формы мы проверяем введенные данные с данными, записанными в переменную сессии, и, еси все верно проводим дальнейшие действия...
Я приведу пример простейшей каптчи:
Приложение:
Ответ отправил: MYPABEU (статус: 1-ый класс)
Ответ отправлен: 17.04.2007, 00:18 Оценка за ответ: 5 Комментарий оценки: Спасибо за совет. Буду читать!!! Слышал правда о капче очень много, но на деле не шарю ваще))) сэнкс пошел разбираться!
Отвечает: Angel7
Здравствуйте, Макс Куликов!
Вот мой скрипт защиты от спамеров: http://svoysite.ifolder.ru/1091631. Снабжен комментами, так что если Вы хотя бы средне разбираетесь в пхп - должны встроить его в свою гостевую!
Удачи!
--------- Краткость приятна, когда она сочетается с ясностью!
Ответ отправила: Angel7 (статус: Практикант)
Ответ отправлен: 17.04.2007, 09:00 Оценка за ответ: 5 Комментарий оценки: Спасибо. Буду разбираться!!!
Отвечает: Шахгусейнов Азиз
Здравствуйте, Макс Куликов!
эта штуке называется Captcha.......создаете с помощью РНР картинку с надписью....с любой автоматически генерируемой надписью............пишете ее в сессию......делаете поле проверки.............а в том месте где надо посылать данные проверяете равны ли эти данные........
--------- Среди людей есть такие, которые говорят: "Мы уверовали в Бога и в Последний день". Однако они суть неверующие.
Ответ отправил: Шахгусейнов Азиз (статус: 4-ый класс)
Ответ отправлен: 18.04.2007, 10:23 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ, я уже понял!
Отвечает: Fitcher
Здравствуйте, Макс Куликов!
Вот здесь есть анти спам и описание к нему:
http://www.infonew.ru/bottrap.php
--------- Будущее - это нечто, к чему каждый приближается со скоростью шестьдесят минут в час, желает он того или нет.
Ответ отправил: Fitcher (статус: 4-ый класс)
Ответ отправлен: 19.04.2007, 07:16 Оценка за ответ: 1 Комментарий оценки: Я прошу подсказать насчет защитного кода, а вы мне суёте антиспам, который будет учитывать ботов на сайте!!! Эта штука у меня стоит, и описание там не точное!!! И править скрипт надо чтоб работал!!!
Вопрос № 82.894
Здравтсвуйте, уважаемые эксперты! Мне нужно сделать, чтобы определенное число из поля БД MySQL уменьшалось каждые 4 дня на определенное кол-во процентов. Скажите, пожалуйста, как это реализовать? ведь, если к скрипту не обращаться, то он не выполняется на сервере. А нужно, чтобы он выполнялся с нужной периодичностью, независимо от обращений. Заранее благодарен!
Отвечает: Yadovit
Здравствуйте, Вячеслав!
Вам нужно воспользоватся планировщиком задач. К примеру используйте KRONCron.
Ответ отправил: Yadovit (статус: 5-ый класс)
Ответ отправлен: 17.04.2007, 07:24 Оценка за ответ: 3
Отвечает: PVS
Здравствуйте, Андрющенко Вячеслав Васильевич!
cron стоит использовать только в тех случаях, когда надо сделать что-то , что действительно зависит от определённого момента времени (например очистка диска от кешированых файлов). В Вашем же случае намного проще вычислить сколько раз ДОЛЖНО бы было произойти уменьшений значения, на сколько дожно было уменьшится это поле и уменьшить его за одним разом на нужное значение.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 17.04.2007, 10:05 Оценка за ответ: 5 Комментарий оценки: согласен. Это действительно более подходящий вариант.
Вопрос № 82.947
Кто-нибудь наблюдал как поисковые системы обрабатывают сессии?
По идее SID подшивается к адресу страницы. Если пользователь захочит перейти на сайт не получит ли он SID от поискового робора? И не получится ли куча пользователей с одним SID.
Отправлен: 17.04.2007, 13:31
Вопрос задал: NiGHT (статус: Практикант)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Boompro
Здравствуйте, NiGHT!
Это не возможно для каждого человека свой SID к тому же уже давно он к адресу(если имеется URL) не подшивается.
Ответ отправил: Boompro (статус: 3-ий класс)
Ответ отправлен: 17.04.2007, 13:43
Отвечает: chiefff
Здравствуйте, NiGHT!
Вообще, сессии создают кучу проблем при индексации, например, Яндексом. Это приводит к появлению в базе поисковика множества дублей страниц (с разными SID в конце адреса). Поэтому от SID лучше избавляться. Или обходиться вообще без сессий, или закрывать такие страницы от индексации.
Ответ отправил: chiefff (статус: 1-ый класс)
Ответ отправлен: 17.04.2007, 15:46
Отвечает: Fitcher
Здравствуйте, NiGHT!
SID на машине у пользователя. Если пользователь захочит перейти на сайт от поискового робора то он получит уникальный SID.И не получится ли куча пользователей с одним SID.
--------- Будущее - это нечто, к чему каждый приближается со скоростью шестьдесят минут в час, желает он того или нет.
Ответ отправил: Fitcher (статус: 4-ый класс)
Ответ отправлен: 19.04.2007, 06:35
Вопрос № 82.952
Здравствуйте. Прошу помощи.
Первая часть кода (см. приложение) работает как надо, а вот вторая (при $action==5) выдаёт ошибку:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:home estodrom.ruwwwadminka.php on line 93
Строка 93: if (mysql_num_rows($r)==0) {$r=mysql_query("INSERT INTO Groups (ID, Group) VALUES ('', $AddG)");}
Не пойму в чём дело, ведь код по сути один и тот же.
В чём может быть проблема?
Приложение:
Отправлен: 17.04.2007, 13:49
Вопрос задал: Raden (статус: 1-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Boompro
Здравствуйте, Raden!
попробуй так
SELECT * FROM `Groups` where `Group`=`$AddG`
Т.е. замени кавычки прямые на боковые.
Ответ отправил: Boompro (статус: 3-ий класс)
Ответ отправлен: 17.04.2007, 14:11 Оценка за ответ: 5 Комментарий оценки: Спасибо, всё работает.
Отвечает: HookEst
Здравствуйте, Raden!
Group - это зарезервированное слово в MySQL(и не только)
если используете его в запросе как имя поля, заключайте в "`"(обратные кавычки):
if(isset($AddG))
{
$r=mysql_query("SELECT * FROM `Groups` where `Group`='$AddG'");
if (mysql_num_rows($r)==0) {$r=mysql_query("INSERT INTO `Groups` (`ID`, `Group`) VALUES ('','$AddG')");}
}
}
вообще-то желательно так обрамлять все имена таблиц и полей.
Успехов
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 17.04.2007, 14:13 Оценка за ответ: 5 Комментарий оценки: Спасибо за разъяснение на счёт Group. Всё понял, постараюсь исправиться :)
Отвечает: Fitcher
Здравствуйте, Raden!
В запросе вы неправильно используете переменную $AddG.
Вот как должны выглядеть ваши запросы:
"INSERT INTO Groups (ID, Group) VALUES ('', '".$AddG."')"
"SELECT * FROM Groups where Group='".$AddG."'"
Удачи...
Приложение:
--------- Будущее - это нечто, к чему каждый приближается со скоростью шестьдесят минут в час, желает он того или нет.
Ответ отправил: Fitcher (статус: 4-ый класс)
Ответ отправлен: 17.04.2007, 16:54 Оценка за ответ: 3 Комментарий оценки: Переменную использовал правильно, хотя ваши комментарии и верны, но в данном случае проблема заключалась не в этом. Однако спасибо за попытку.
Вопрос № 82.972
Всем привет!!!
В приложении код ответа на мой вопрос о том, как испрользовать переменные на следующую страницу. Но он не работает, переменная не определена. Врядли это ошибка эксперта, подскажите, что делать, чтоб было правильно через $_SERVER. Или как передать переменную через командную строку я использую кнопку с методом ПОСТ без сессий
Приложение:
Отправлен: 17.04.2007, 16:15
Вопрос задал: BigHard (статус: 9-ый класс)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: PVS
Здравствуйте, BigHard!
$_SERVER - обычный массив, просто его создаёт сам интерпретатор php. Больше ничем он не отличается и никакого специфического поведения при записи в него не происходит, тоесть Ваша переменная просто потеряется.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 17.04.2007, 16:25 Оценка за ответ: 3 Комментарий оценки: Хоть бы какой-то способ решения проблемы подсказал (:
Отвечает: Zolton007
Здравствуйте, BigHard!
Хм. Вероятно тогда я не правильно понял вопрос. Или что-то в настройках php не так. Вот пример работы с сессиями:
------ index.php -----
<?
session_name("test");//имя сессии
@session_start();/*стартуем сессию. Это необходимо делать в каждом скрипте,
где надо использовать переменные сессии*/
echo $_SESSION["value"];//проверям во втором скрипте ;)
?>
Это самый простой пример. По приведенным выше ссылкам имеется полная информация.
--------- Если твоя программа выполняет мистические действия, - значит ты сделал что-то невероятно тупое!
Ответ отправил: Zolton007 (статус: 10-ый класс)
Ответ отправлен: 17.04.2007, 21:00 Оценка за ответ: 5 Комментарий оценки: Я разобрался с передачей параметров через командную строку, а сессии-мне кажется они тормозят. И кстати, без знака @ выходит куча ошибок,хотя сессия работает, написать не могу, но может так в минифорум напишете, что там может быть
Отвечает: MYPABEU
Здравствуйте, BigHard!
Этот человек не эксперт.
Переменные передавать из скрипта в скрипт можно только сессией или куками.
Приложение:
Ответ отправил: MYPABEU (статус: 1-ый класс)
Ответ отправлен: 17.04.2007, 21:32 Оценка за ответ: 5
Отвечает: Fitcher
Здравствуйте, BigHard!
Все правильно где присваиваешь переменную $_SERVER["value"] там все видит а на другой странице не видит для этого и создавали сессий. Используй кнопку с методом GET для передачи переменной через командную строку.
--------- Будущее - это нечто, к чему каждый приближается со скоростью шестьдесят минут в час, желает он того или нет.
Ответ отправил: Fitcher (статус: 4-ый класс)
Ответ отправлен: 19.04.2007, 06:48 Оценка за ответ: 3