Вопрос № 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 Комментарий оценки: Спасибо, очень выручили.