Появился вопрос при редактировании статуса.
Вот допустим: дана такая-то - такая-то книга с подробностями.
Всего экземпляров в библиотеке - 55, а Кол-во экземпляров, доступных в библиотеке - 22.
И ставлю статус 2 - (выдана книга) и дату и причем доступная книга уменьшилась на 1.
Как изменить поле - Кол-во экземпляров, доступные в библиотеке.
Есть такой скрипт:
echo"Введите ID, который вы узнали в списке данных из БД и хотите изменить. Если не знаете, то для этого нужно <b>ТОЧНО</b> узнать, идем на просмотр данных из БД
$query1="UPDATE books SET kol_ekz_online='$kol_ekz_online' WHERE id_book='$id_book'";
и при этом жмем редактировать. Затем просматриваю данные в БД и вижу, что кол-во экземпляров, доступных в количество стало -1, где книга дана, почему это так получается? Где исправить?
~update
решил проблему!
объявить переменную не обязательно
а достаточно написать такой запрос:
Че-то намудрили Делают обычно так: $_SESSION['user_id'] содержит id пользователя. Если $_SESSION['user_id'] = 0, значит это гость. Все, кто больше нуля - это пользователи. Но это как вам удобнее, конечно. Лишь бы вы сами не запутались.
Я не путаюсь.
Uchkuma пишет:
Вы в топике указали создание этой таблицы.
Претерпели изменения. Переименовал с id_users на id_user. Все в поряде. Забыл топик обновить )
Uchkuma пишет:
Добавится. Это ведь число, правильно? Значение status_book вы ведь не заключаете почему-то в кавычки.
Правильно. Почему не заключаю - потому что, статус 1-выбрана (она всегда будет 1), а в админке можно поменять и на 2 и на 3 хоть что.
Uchkuma пишет:
'$id_user'='{$_SESSION['id_user']}' - вот что вы указали в качестве значения. На этом месте должно быть число - id пользователя. Если вы хотите присвоить php-переменной какое-то значение, это нужно делать НЕ в контексте sql-запроса.
ну значит нужно в кавычки обвести
CODE (SQL):
скопировать код в буфер обмена
"INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '",'".$_SESSION['id_user']."'";
'$id_user'='{$_SESSION['id_user']}' тоже написано не правельно.
и как правильно должно быть?!
OrmaJever пишет:
Если строка будет <html>1354456546 то вначале обрежит до 11 символов <html>13544 потом удалит html тег и останется только 13544
Теперь понял. (Добавление)
Uchkuma пишет:
INSERT INTO status
(status_book, id_book, id_user) <- тут ключи
VALUES (1, '$id_book', '$id_user'='{$_SESSION['id_user']}') <- тут значения
Посмотрите на третье значение.
Посмотрел на третье значение, вроде правильно, а чем оно не устраивает?
KuPbI4 пишет:
PHP:
скопировать код в буфер обмена
$id_user = strip_tags(stripslashes(substr($_GET['id_user'],0,11)));
Разве id может быть произвольной строкой, а не только целым числом? И вообще странный порядок обработки строки. Если у вас поле ограничено 11 символами, то строку надо обрезать в последнюю очередь после обработки, а не в первую.
Удалось записать id_user в БД, но правда выводит только значение - 1 и все.
А логины с id_user разные значения. прохожу через авторизацию. и жму выбрать эту книгу и только значение 1 а логины под id_user разные значения, к примеру 2,4,6,7 и т.д.
Форма создания пользовательских SQL-процедур включает в себя необходимость использования линейной последовательности запрашивемых операторов для которых необходимо осуществление установки разделяющего символа - в целях диференциации уровня представленя элементом создаваемой процедуры и текущего SQL-запроса необходимо выполнение временной операции изменения текущего разделительного символа
Более подробная информация предоставлена в оригинальной документации http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]ed-routines[dot]html соответствующей СУБД
ну это мануал.
я читал конечно.
а могли бы объяснить попроще?! (Добавление)
Записывается id_book в БД.
Правда, другим способом - $_GET, а вот с id_user не записывает.
KuPbI4 Для осуществления возможности использования статических переменных хранение которых производится в текущем сеансе взаимодейтсвия с сервером БД - необходимо использованеи DECLARE-оператора в форме DECLARE @var_name TYPE
#1064 - 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 'DECLARE @id_books int SELECT id_books, id_users, fname, lname, otch, namebook, ' at line 3
устал искать ошибки и читать мануалы. 2 дня парюсь... лучше бы готовый пример показали бы - создания процедуры, вызова процедуры и запись заказа в БД через id_books, id_users
Приведенная вами сигнатура SQL-процедуры включает необходимость явной передачи 8 аргументов для осуществления ее вызова - в то время как в процессе подачи SQL-запроса производится указание операции ее запуска без передачи соответствующего числа параметров В случае необходимо производиться промежуточное сеансовое хранение информаицонных полей на сервере БД и их использования в инстации процедуры - необходимо применение элементов вида @myvar
#1064 - 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 '@id_books int, out @id_users int, out @fname varchar, out @lname varchar, ou' at line 2