Вопрос № 97716: Что в этом коде не так?? Выводит ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'by, comment, ip, stamp) values ('396', 'wormik', 'dsfadsf',...Вопрос № 97792: Необходимо отпраить письмо функцией mail() и прикрепить к нему текстовый файл. как лучше можно это сделать?...Вопрос № 97831: есть простая форма с двумя полями, файл который обрабатывает данные с формы должен за
счет условия if и просмотра переменной $_POST на наличие пустой переменой используя isset должна либо принять данные (если все поля заполнены) или выдать сообщение ...Вопрос № 97832: Здраствуйте, уважаемые эксперты!
Это программа "покер в кости", правда, изображения костей нельзя поместить здесь
В этой программе (как и в некоторых других, которые я писал) есть проблема: данные после совершения круга действий тер...
Вопрос № 97.716
Что в этом коде не так?? Выводит ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'by, comment, ip, stamp) values ('396', 'wormik', 'dsfadsf', '127
Ответ отправил: Селев Валерий (статус: 5-ый класс)
Ответ отправлен: 08.08.2007, 13:17 Оценка за ответ: 4 Комментарий оценки: Уже нашел, в чем проблема. Удивительным образом заключил поля и название таблици в косые кавычки ` и всё заработало. ХМм. Задумался.
Отвечает: Powoditch konstantin
Здравствуйте, Бобровский Сергей Сергеевич!
Дело в том что слово by является ключевым словом для SQL. Его надо екранировать вот так:
INSERT INTO comments (id_pic, `by`, comment, ip, stamp) values ('$_POST[id_pic]', '$by', '$_POST[text]', '$ip', NOW())
Ответ отправил: Powoditch konstantin (статус: 4-ый класс)
Ответ отправлен: 08.08.2007, 13:19 Оценка за ответ: 5 Комментарий оценки: Благодарю. ТЕперь я понял, почему ошибка исчезла, когда я заключил поля и таблицу в косые кавыки!
Отвечает: PVS
Здравствуйте, Бобровский Сергей Сергеевич!
Что-то у Вас слишком много всего экранировано слэшами и индексы массивов криво написаны. SQL должен выглядеть так:
$query = "INSERT INTO comments (id_pic, by, comment, ip, stamp) values ( '".$_POST['id_pic']."', '$by', '".$_POST['text']."', '$ip', NOW())";
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 08.08.2007, 13:20
Отвечает: Oleg S. Mezhov
Здравствуйте, Бобровский Сергей Сергеевич!
1. Не нужно экранировать одинарные кавычки, если вы создаете строку в двойных.
2. Интерполяция (подстановка значений переменных в строку) не всегда работает правильно, чаще используют следующий код или функцию создания форматированной строки sprintf.
Приложение:
Ответ отправил: Oleg S. Mezhov (статус: 3-ий класс)
Ответ отправлен: 08.08.2007, 13:31
Отвечает: Киряков Александр Иванович
Здравствуйте, Бобровский Сергей Сергеевич!
$_POST['text'] уберите обратный слеш -
Отвечает: Gines
Здравствуйте, Бобровский Сергей Сергеевич!
by - это ключевое слово и лучше не использовать его в качестве имени поля. Я думаю что ошибка в этом.
Ответ отправил: Gines (статус: 3-ий класс)
Ответ отправлен: 08.08.2007, 17:19
Вопрос № 97.792
Необходимо отпраить письмо функцией mail() и прикрепить к нему текстовый файл. как лучше можно это сделать?
Отправлен: 09.08.2007, 01:17
Вопрос задал: Sol_ (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Powoditch konstantin
Здравствуйте, Sol_!
Вам следует прочитать о стандарте MIME. В приложении обяснение этого стандарта и пример посылки письма с приклеплением двух файлов к нему. Информацию нашел только на английском. Вас ведь это не остановит? Весь пример не влез в приложение, если есть интерес - напишите мне я вышлю на емейл полный текст.
Приложение:
Ответ отправил: Powoditch konstantin (статус: 4-ый класс)
Ответ отправлен: 09.08.2007, 11:40
Вопрос № 97.831
есть простая форма с двумя полями, файл который обрабатывает данные с формы должен за счет условия if и просмотра переменной $_POST на наличие пустой переменой используя isset должна либо принять данные (если все поля заполнены) или выдать сообщение "Не заполнены все поля"
но почему то скрипт все время выводит одно и тоже в не зависимости от того чтоя вводил в поле формы!!!
Помогите пожалуйста а то уже 8 час мучаюсь с этой проблемой как только не изменял и форму и скрипт уже в каждой строчке ошибки мерещатся .. ппц
Исправленный код в приложении. Во-первых, метод не $_POST, а просто post, $_POST это суперглобальный массив в пхп, к html никакого отношения не имеет. Во-вторых, isset() всегда будет возвращать true, т.к. у тебя есть это поле в форме, т.е. переменная у тебя будет объявлена, но содержаться в ней может либо пустая строка, либо нет. И еще, лучше отключи register_globals опцию в php.ini и обращайся к переменным из поста, гета, сессий и пр. через соответствующие суперглобальные массивы - $_POST, $_GET, $_SESSION
соответственно
Приложение:
Ответ отправил: Nexus (статус: 9-ый класс)
Ответ отправлен: 09.08.2007, 13:09
Отвечает: Flynn
Здравствуйте, Вацура Кирилл Андреевич!
Методы для формы - POST и GET. $_POST - это же глобальный массив в РНР и в обычном HTML он соответсвенно использоваться не будет.
Так же для проверки сразу нескольких их можно задавать сразу в один isset.
If iseet($_POST['name'],$_POST['sname'],...) {...}
Ответ отправил: Flynn (статус: 3-ий класс)
Ответ отправлен: 09.08.2007, 13:11
Отвечает: Бобровский Сергей Сергеевич
Здравствуйте, Вацура Кирилл Андреевич!
Замените $_POST на POST. Ну это Вам уже сказали.
Также у вас проверяется наличие переменной
isset($_POST['surname'])
вернет TRUE при наличии этой переменной, следовательно если она есть, то скрипт выведет "Не заполнено поле", а если нет, то попытается вывести имя. Вам же нужно наоборот. Для этого нужно добавить восклицательный знак. Исправленный и компактный код в приложении.
Приложение:
--------- Никогда не бойтесь делать то, что не умеете! Помните: Ноев Ковчег построил любитель, а Титаник - профессионал.
Отвечает: M@gi$†e®
Здравствуйте, Вацура Кирилл Андреевич!
Ошибка: пропущен оператор ! (not)
должно быть if(!isset($_POST["имя_переменной"]))
--------- Aquila non Capta Muscas
Ответ отправил: M@gi$†e® (статус: 3-ий класс)
Ответ отправлен: 09.08.2007, 19:41
Отвечает: Powoditch konstantin
Здравствуйте, Вацура Кирилл Андреевич!
Гммм. Такая простая ситуация=) Функция isset(value) - ВСЕГДА будет возвращать тру если Вы сабмитите форму, тоисть переменные name и surname будут всегда присутствувать! Вам просто напросто надо заменить isset на empty, тогда всё будет нормально.
Ответ отправил: Powoditch konstantin (статус: 4-ый класс)
Ответ отправлен: 09.08.2007, 22:16
Вопрос № 97.832
Здраствуйте, уважаемые эксперты!
Это программа "покер в кости", правда, изображения костей нельзя поместить здесь
В этой программе (как и в некоторых других, которые я писал) есть проблема: данные после совершения круга действий теряются, т.е. например выполнен первый бросок, оставлены метки, выполнен 2-ой и показано, сколько выигрышь составил и сколько теперь наличных, а при нажатии "еще раз бросить" все начинается с начала, т.е. сумма наличных не сохраняется. Подскажите, как это исправить можно?
Отвечает: Flynn
Здравствуйте, Павел Владимирович!
После value = "$secondroll" у вас не закрыт тег - поэтому он не видит следующий cash.
Так же я бы посоветовал выключить register_globals в php.ini и использовать массив $_POST дабы не засорять строку запроса всяким хламом, который пользователю видеть совсем не обязательно.
Еще данные типа количетсва бросков и суммы лучше хранить в этом случае в сессиях (session_start();session_register('cash');$_SESSION['cash'] = $cash;).
Ответ отправил: Flynn (статус: 3-ий класс)
Ответ отправлен: 09.08.2007, 13:26 Оценка за ответ: 5 Комментарий оценки: Спасибо, очень выручили.
Отправить вопрос экспертам этой рассылки
Приложение (если необходимо):
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.