PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (12): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец

> Найдено сообщений: 171
KuPbI4 Отправлено: 15 Декабря, 2010 - 05:12:11 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Появился вопрос при редактировании статуса.
Вот допустим: дана такая-то - такая-то книга с подробностями.
Всего экземпляров в библиотеке - 55, а Кол-во экземпляров, доступных в библиотеке - 22.
И ставлю статус 2 - (выдана книга) и дату и причем доступная книга уменьшилась на 1.
Как изменить поле - Кол-во экземпляров, доступные в библиотеке.
Есть такой скрипт:
Спойлер (Отобразить)

Пробовал присвоить переменную kol_ekz_online - это кол-во экземпляров доступных в библиотеке.
PHP:
скопировать код в буфер обмена
  1.  
  2. $kol_ekz_online = $kol_ekz_online - 1;
  3.  

Затем сделал второй запрос
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $query1="UPDATE books SET kol_ekz_online='$kol_ekz_online' WHERE id_book='$id_book'";
  3.  

и при этом жмем редактировать. Затем просматриваю данные в БД и вижу, что кол-во экземпляров, доступных в количество стало -1, где книга дана, почему это так получается? Где исправить?

~update
решил проблему!
объявить переменную не обязательно
а достаточно написать такой запрос:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query1="UPDATE books SET kol_ekz_online=kol_ekz_online-1 WHERE id_book='$id_book'";
  3.                                                                 if (mysql_query($query))
  4.                                                                         if(mysql_query($query1))
  5.                                                                         {
  6.                                                                                         {
  7.                                                                                                 echo "Запись редактирована!<br>";
  8.                                                                                         }
  9.                                                                         }
  10.                                                                 else
  11.                                                                                 {
  12.                                                                                 echo "Запись не редактирована!<br>";
  13.                                                                                 }      
  14.                                                 }
  15.  
KuPbI4 Отправлено: 15 Декабря, 2010 - 02:00:43 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Разобрался... вот я торможу блин...в такую ночь..
Надо было
PHP:
скопировать код в буфер обмена
  1.  
  2. $id_user = $_SESSION['user_id'];
  3.  

и тогда все запишется.
Спасибо Вам огромное..! Но приходится еще потрудится с обновлением записи статуса книги в админке.. Постараюсь разобраться.
KuPbI4 Отправлено: 15 Декабря, 2010 - 01:34:47 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Uchkuma пишет:
А что выводит echo $id_user?

просто выводит $id_user.
Если даже объявлена переменная
PHP:
скопировать код в буфер обмена
  1.  
  2. $id_user = $_SESSION['id_user'];
  3.  


Uchkuma пишет:
И сделайте все-таки так:
PHP:
$query = "INSERT INTO status (status_book, id_book, id_user) VALUES (1, $id_book, $id_user)";

Сообщит - Запись не добавлена
KuPbI4 Отправлено: 15 Декабря, 2010 - 01:09:54 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Uchkuma пишет:
Че-то намудрили Делают обычно так: $_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-запроса.

Делал так, присвоил переменную на сессию.
PHP:
скопировать код в буфер обмена
  1.  
  2. $id_user = $_SESSION['id_user'];
  3.  

Потом. Переделал запрос.
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.  $query =  "INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '$id_user')";
  3.  

Выводит 0...
KuPbI4 Отправлено: 15 Декабря, 2010 - 00:44:25 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Uchkuma пишет:
Почему у вас в одном случае $_SESSION['user_id'], а в другом $_SESSION['id_user']?

Объясняю:
$_SESSION['user_id'] - для НЕавторизованных, чтоб доступ перекрывали гостям.
$_SESSION['id_user'] - для авторизованных!

Uchkuma пишет:
Поле в таблице в одном случае id_users, а в другом id_user? Разберитесь сначала с именами.

А это Вы где увидели, что разные поля?

Uchkuma пишет:
И в запросе значения целочисленных полей заключать в кавычки не нужно.

если не заключу - то запись не добавится, или я не понял, поправьте меня.

Uchkuma пишет:
А ваш запрос НЕПРАВИЛЬНЫЙ, и я объяснил почему.

НЕПРАВИЛЬНЫЙ? Это еще почему?

это ведь занести в таблицу users данные.
KuPbI4 Отправлено: 14 Декабря, 2010 - 22:53:29 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
OrmaJever пишет:
ну значит нужно в кавычки обвести
CODE (SQL):
скопировать код в буфер обмена
"INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '",'".$_SESSION['id_user']."'";

А ваш вариант немного глючный был.
Если так

CODE (SQL):
скопировать код в буфер обмена
  1. $query =  "INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '".$_SESSION['id_user']."')";


то 0 запишет....

Если
CODE (SQL):
скопировать код в буфер обмена
  1. $query =  "INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '$id_user'='".$_SESSION['id_user']."')";

то 1 запишет...
да что за бред... где ошибка?!
KuPbI4 Отправлено: 14 Декабря, 2010 - 22:09:16 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
OrmaJever пишет:
"INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '$_SESSION['id_user']'";
а так не вариант?

Выдает ошибку, пробовал я это еще раньше.
Цитата:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
KuPbI4 Отправлено: 14 Декабря, 2010 - 21:46:02 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Uchkuma пишет:
Строковые значения у вас заключаются в одиночные кавычки, что правильно. А что за бред идет после закрывающей кавычки у третьего значения?

Это присваивание авторизованного id_user через сессию.
Если
PHP:
скопировать код в буфер обмена
  1.  
  2. $query =  "INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '$id_user'";
  3.  

то запишется просто 0 и все.
KuPbI4 Отправлено: 14 Декабря, 2010 - 21:17:22 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
OrmaJever пишет:
'$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 Отправлено: 14 Декабря, 2010 - 21:00:14 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Uchkuma пишет:
Найдите ошибку в 9-й строке.

в чем заключается ошибка?
Uchkuma пишет:
KuPbI4 пишет:
PHP:
скопировать код в буфер обмена
$id_user = strip_tags(stripslashes(substr($_GET['id_user'],0,11)));
Разве id может быть произвольной строкой, а не только целым числом? И вообще странный порядок обработки строки. Если у вас поле ограничено 11 символами, то строку надо обрезать в последнюю очередь после обработки, а не в первую.

Вас не понял..
KuPbI4 Отправлено: 14 Декабря, 2010 - 16:43:56 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Удалось записать id_user в БД, но правда выводит только значение - 1 и все.
А логины с id_user разные значения. прохожу через авторизацию. и жму выбрать эту книгу и только значение 1 а логины под id_user разные значения, к примеру 2,4,6,7 и т.д.
PHP:
скопировать код в буфер обмена
  1.  
  2. $id_user = strip_tags(stripslashes(substr($_GET['id_user'],0,11)));                            
  3. $id_book = strip_tags(stripslashes(substr($_GET['id_book'],0,11)));
  4.  
  5. if (isset($_POST['submit'])){
  6.      
  7.    $status_book = strip_tags(stripslashes(substr($_POST['status_book'],0,11)));
  8.        
  9.         $query =  "INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '$id_user'='{$_SESSION['id_user']}');";
  10.         if (mysql_query($query)) {
  11.                                         echo "Запись добавлена!<br>";
  12.                                         }
  13.                                         else {
  14.                                         echo "Запись не добавлена!<br>";
  15.                                         }
  16.         }
  17.  

Что здесь не так? Вроде все правильно. но выводит в таблицу status - id_user - 1 и все
Скрипт авторизации - описал выше!
KuPbI4 Отправлено: 14 Декабря, 2010 - 14:18:08 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
JustUserR пишет:
Форма создания пользовательских SQL-процедур включает в себя необходимость использования линейной последовательности запрашивемых операторов для которых необходимо осуществление установки разделяющего символа - в целях диференциации уровня представленя элементом создаваемой процедуры и текущего SQL-запроса необходимо выполнение временной операции изменения текущего разделительного символа
Более подробная информация предоставлена в оригинальной документации http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]ed-routines[dot]html соответствующей СУБД

ну это мануал.
я читал конечно.
а могли бы объяснить попроще?!
(Добавление)
Записывается id_book в БД.
Правда, другим способом - $_GET, а вот с id_user не записывает. Огорчение
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (isset($_SESSION['user_id']))
  4. {
  5.         // показываем защищенные от гостей данные.
  6.  
  7. $q = mysql_query("SELECT * FROM books");
  8. if(mysql_num_rows($q) > 0) {
  9.   $count = 3; //выводить по 3 записи
  10.   $posts = mysql_num_rows($q);
  11.   $total = ceil($posts / $count);
  12.   if(isset($_GET['page'])) $page = intval($_GET['page']); else $page = 1;
  13.   if($page > $total) $page = $total;
  14.   $from = $page * $count - $count;
  15.   $query = mysql_query("SELECT * FROM books ORDER BY id_book LIMIT $from,$count");
  16.   $page = ($page <= 0) ? 1 : $page;
  17.   $seperator = '&nbsp;';
  18.   $page_string = ($page == 1) ? '<strong>1</strong>' : '<a href="catalog.php">1</a>';
  19.   $page_string .= $seperator;
  20.   for ($i = 2; $i < $total; $i++) {
  21.     $page_string .= ($i == $page) ? '<strong>' . $i . '</strong>' : '<a href="catalog.php?page=' . $i . '">' . $i . '</a>';
  22.       if ($i < $total) {
  23.         $page_string .= $seperator;
  24.       }
  25.   }
  26.   $page_string .= ($page == $total) ? '<strong>' . $total . '</strong>' : '<a href="catalog.php?page=' . $total . '">' . $total . '</a>';
  27.   while($b = mysql_fetch_array($query)) {
  28.     echo "
  29.   <table align='center' class='katal'>
  30.   <tr>
  31.   <td colspan='2' class='katal_title'>
  32.   <a href='catalog_view.php?id_book=$b[id_book]&ref=$page'>
  33.   <p class='katalog'>Название книги: $b[namebook]</p>
  34.   </a>
  35.   </td>
  36.   </tr>
  37.   <tr>
  38.   <td width='345px'>
  39.   <p>Список авторов: $b[authors]</p>
  40.   <p>Год издания: $b[year]</p>
  41.   <p>Место издания: $b[mesto]</p>
  42.   <p>Название издательства: $b[nameizd]</p>
  43.   <br>
  44.   <center>
  45.   <form action='catalog.php?id_book=$b[id_book]' method=post>
  46.   <input type='submit' name='submit' value='Выбрать эту книгу'/>
  47.   </select>
  48.   </form>
  49.   </center>
  50.   </td>
  51.   </tr>
  52.   </table>
  53.   ";
  54.   }
  55.   if($total != 1) {
  56.     echo "<br>Страницы: " . $page_string;
  57.   }
  58.   echo "<br><br>Всего в каталоге: ".$posts." <b>книг</b><br>";
  59. }
  60. else { echo "Книг <b>нет в библиотеке</b><br>"; }
  61.  
  62. $id_user = strip_tags(stripslashes(substr($_GET['id_user'],0,11)));
  63. $id_book = strip_tags(stripslashes(substr($_GET['id_book'],0,11)));
  64.  
  65. if (isset($_POST['submit'])){
  66.      
  67.    $status_book = strip_tags(stripslashes(substr($_POST['status_book'],0,11)));
  68.        
  69.         $query =  "INSERT INTO status (status_book, id_book, id_user) VALUES (1, '$id_book', '$id_user');";
  70.         if (mysql_query($query)) {
  71.                                         echo "Запись добавлена!<br>";
  72.                                         }
  73.                                         else {
  74.                                         echo "Запись не добавлена!<br>";
  75.                                         }
  76.                 }
  77.  
  78.         }
  79. else
  80. {
  81.         echo 'Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>';
  82. }
  83. ?>
  84.  

где исправить?
правда что тут скрипт авторизации выглядит так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. // если пользователь не авторизован
  5.  
  6. if (!isset($_SESSION['id_user']))
  7. {
  8.         // то проверяем его куки
  9.         // вдруг там есть логин и пароль к нашему скрипту
  10.  
  11.         if (isset($_COOKIE['login']) && isset($_COOKIE['password']))
  12.         {
  13.                 // если же такие имеются
  14.                 // то пробуем авторизовать пользователя по этим логину и паролю
  15.                 $login = mysql_escape_string($_COOKIE['login']);
  16.                 $password = mysql_escape_string($_COOKIE['password']);
  17.  
  18.                 // и по аналогии с авторизацией через форму:
  19.  
  20.                 // делаем запрос к БД
  21.                 // и ищем юзера с таким логином и паролем
  22.  
  23.                 $query = "SELECT `id_user`
  24.                                         FROM `users`
  25.                                         WHERE `login`='{$login}' AND `password`='{$password}'
  26.                                         LIMIT 1";
  27.                 $sql = mysql_query($query) or die(mysql_error());
  28.  
  29.                 // если такой пользователь нашелся
  30.                 if (mysql_num_rows($sql) == 1)
  31.                 {
  32.                         // то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)
  33.  
  34.                         $row = mysql_fetch_assoc($sql);
  35.                         $_SESSION['user_id'] = $row['id_user'];
  36.  
  37.                         // не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
  38.                 }
  39.         }
  40. }
  41.  
  42. if (isset($_SESSION['user_id']))
  43. {
  44.         $query = "SELECT `login`
  45.                                 FROM `users`
  46.                                 WHERE `id_user`='{$_SESSION['user_id']}'
  47.                                 LIMIT 1";
  48.         $sql = mysql_query($query) or die(mysql_error());
  49.        
  50.         // если нету такой записи с пользователем
  51.         // ну вдруг удалили его пока он лазил по сайту.. =)
  52.         // то надо ему убить ID, установленный в сессии, чтобы он был гостем
  53.         if (mysql_num_rows($sql) != 1)
  54.         {
  55.                 header('Location: login.php?logout');
  56.                 exit;
  57.         }
  58.        
  59.         $row = mysql_fetch_assoc($sql);
  60.        
  61.         $welcome = $row['login'];
  62. }
  63. else
  64. {
  65.         $welcome = 'гость';
  66. }
  67.  
  68. print 'Здравствуйте, ' . $welcome . '<br>';
  69.  
  70.  
  71. if (!isset($_SESSION['user_id']))
  72. {
  73.         print '<a href="login.php">Авторизация</a><br />';
  74.         print '<a href="register.php">Регистрация</a><br />';
  75. }
  76. else
  77. {
  78.         print '<a href="login.php?logout">Выход</a><br />';
  79. }
  80. ?>
  81.  
KuPbI4 Отправлено: 13 Декабря, 2010 - 21:30:18 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
Кто мне объяснит нормально?! Нахмурился Нахмурился
KuPbI4 Отправлено: 12 Декабря, 2010 - 21:35:00 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
JustUserR пишет:
KuPbI4 Для осуществления возможности использования статических переменных хранение которых производится в текущем сеансе взаимодейтсвия с сервером БД - необходимо использованеи DECLARE-оператора в форме DECLARE @var_name TYPE

Что тут не так?
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE procedure `my_proc` (
  2.  
  3. )
  4. DECLARE @id_books int
  5. SELECT id_books, id_users, fname, lname, otch, namebook, status_book, date_book
  6. FROM `status`
  7. LEFT JOIN users ON id_users = id_user
  8. LEFT JOIN books ON id_books = id_book

ошибка
Цитата:

#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
KuPbI4 Отправлено: 12 Декабря, 2010 - 19:51:18 • Тема: Заказ книг в библиотеке (выдача и возврат) • Форум: Программирование на PHP

Ответов: 48
Просмотров: 2734
JustUserR пишет:
Приведенная вами сигнатура SQL-процедуры включает необходимость явной передачи 8 аргументов для осуществления ее вызова - в то время как в процессе подачи SQL-запроса производится указание операции ее запуска без передачи соответствующего числа параметров В случае необходимо производиться промежуточное сеансовое хранение информаицонных полей на сервере БД и их использования в инстации процедуры - необходимо применение элементов вида @myvar

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE procedure `my_proc` (
  3. out @id_books int,
  4. out @id_users int,
  5. out @fname varchar,
  6. out @lname varchar,
  7. out @otch varchar,
  8. out @namebook varchar,
  9. out @status_book int,
  10. out @date_book varchar
  11. )
  12. SELECT id_books, id_users, fname, lname, otch, namebook, status_book, date_book
  13. FROM `status`
  14. LEFT JOIN users ON id_users = id_user
  15. LEFT JOIN books ON id_books = id_book
  16.  

пишет
Цитата:

#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

что здесь не так? пробовал этот способ.

Страниц (12): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB