Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Заказ книг в библиотеке (выдача и возврат)

 PHP.SU

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


 Страниц (4): [1] 2 3 4 »   

> Без описания
KuPbI4
Отправлено: 09 Декабря, 2010 - 03:08:24
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Всех приветствую..
Задача такова:
PHP cкрипт заказа книги в библиотеке, чтоб клиент мог заказать в электронной библиотечной системы, после того клиент идет в библиотеке, библиотекарь выдает книгу и когда будет возращена книга и ставит статус выдана книга, но при этом уменьшится кол-во книг на данный момент. Думаю, я правильно объяснил задачу. (Если не правильно объяснил, то проблемы с логикой скорее всего).
Дальше:
Что у нас дано, дано 3 таблицы (пользователь, книга, статус)
Книга (опишу с комментариями)
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `books`(
  3. `id_book` int( 11 ) NOT NULL AUTO_INCREMENT,
  4. `namebook` varchar( 255 ) NOT NULL,
  5. `authors` varchar( 255 ) NOT NULL,
  6. `shifr` varchar( 255 ) NOT NULL,
  7. `year` int( 11 ) NOT NULL,
  8. `mesto` varchar( 255 ) NOT NULL,
  9. `nameizd` varchar( 255 ) NOT NULL,
  10. `kol_ekz_b` int( 11 ) NOT NULL,
  11. `kol_ekz_online` int( 11 ) NOT NULL,
  12. PRIMARY KEY `id_book`(`id_book`)
  13. ) TYPE=MyISAM AUTO_INCREMENT=1;
  14.  

Пользователь:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `users` (
  3.   `id_user` int(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  4.   `login` varchar(50) NOT NULL DEFAULT '',
  5.   `password` varchar(32) NOT NULL DEFAULT '',
  6.   `salt` char(3) NOT NULL DEFAULT '',
  7.   `fname` varchar(50) NOT NULL DEFAULT '',
  8.   `lname` varchar(50) NOT NULL DEFAULT '',
  9.   `otch`  varchar(50) NOT NULL DEFAULT '',
  10.   `bnumber` varchar(20) NOT NULL DEFAULT '',
  11.   `datab` varchar(20) NOT NULL DEFAULT '',
  12.   `srokb` varchar(20) NOT NULL DEFAULT '',
  13.   PRIMARY KEY  (`id_user`),
  14.   UNIQUE KEY `login` (`login`)
  15. ) TYPE=MyISAM AUTO_INCREMENT=2 ;;
  16.  

И Статус выдачи и возвращения:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `status` (
  3. `status_book` INT( 8 ) NOT NULL AUTO_INCREMENT ,
  4. `id_book` INT( 8 ) NOT NULL ,
  5. `id_user` INT( 8 ) NOT NULL ,
  6. `date_book` VARCHAR( 50 ) NOT NULL,
  7.  PRIMARY KEY  (`status_book`)
  8. ) TYPE=MyISAM AUTO_INCREMENT=1
  9.  

Прилагаю скрин каталога, что хотелось мне увидеть:

Вопросы:
1. Как мне связать все эти две таблицы в таблицу статус, чтоб вывелась информация?
2. Как отправить заказ в БД и чтоб в админке вывелась информация, что ЭТОТ клиент хочет взять книги?
3. Как сделать подробную информацию о пользователе что книга получена именно ЭТОТ клиент?
Я понимаю, что очень много вопросов задаю.. Я не хочу других скриптов смотреть и переделывать.
Если Вы что то не поняли, или я гдето может ошибся, что я тут написал, постараюсь четко и внятно ответить!
Заранее Вам ОГРОМНОЕ спасибо, я надеюсь, что Вы мне подскажете, что и как!

(Отредактировано автором: 15 Декабря, 2010 - 05:06:41)

 
 Top
Slavenin
Отправлено: 09 Декабря, 2010 - 10:32:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




[url]http://ru.wikipedia.org/wiki/Join_(SQL)[/url]

(Отредактировано автором: 09 Декабря, 2010 - 10:33:33)

 
 Top
KuPbI4
Отправлено: 09 Декабря, 2010 - 17:33:08
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Я что-то запутался с связыванием таблиц....
никак не могу нормально сообразить!
 
 Top
KuPbI4
Отправлено: 09 Декабря, 2010 - 23:49:32
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Так получается запрос?
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id_books, id_users, fname, lname, otch, namebook, status_book
  2. FROM STATUS
  3. LEFT JOIN users ON id_users = id_user
  4. LEFT JOIN books ON id_books = id_book

а в ответе - пустые данные, что здесь не так?!
хотя данные есть в таблицах users и books и заполнены.

(Отредактировано автором: 10 Декабря, 2010 - 00:03:58)

 
 Top
Мелкий Супермодератор
Отправлено: 10 Декабря, 2010 - 00:15:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Обратите внимание на подсветку вашего запроса.
STATUS - зарезервированное слово, потому его надо брать в обратные кавычки:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id_books, id_users, fname, lname, otch, namebook, status_book
  2. FROM `status`
  3. LEFT JOIN users ON id_users = id_user
  4. LEFT JOIN books ON id_books = id_book


так же бывают полезны для дебага mysql_query и var_dump. Ну и легенда: phpfaq.ru/debug Радость


-----
PostgreSQL DBA
 
 Top
KuPbI4
Отправлено: 10 Декабря, 2010 - 00:34:32
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




если написать
PHP:
скопировать код в буфер обмена
  1.  
  2. $sql = "SELECT id_books, id_users, fname, lname, otch, namebook, status_book
  3. FROM `status`
  4. LEFT JOIN users ON id_users = id_user
  5. LEFT JOIN books ON id_books = id_book ";
  6. $result=mysql_query($sql);
  7. var_dump($result)
  8.  

то выводит
Цитата:

resource(7) of type (mysql result)

Что это бы значило?
и пробовал запрос
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT id_books, id_users, fname, lname, otch, namebook, status_book
  3. FROM `status`
  4. LEFT JOIN users ON id_users = id_user
  5. LEFT JOIN books ON id_books = id_book
  6.  

толку никакого нет,хотя данные есть в таблицах users и books

(Отредактировано автором: 10 Декабря, 2010 - 00:55:11)

 
 Top
Мелкий Супермодератор
Отправлено: 10 Декабря, 2010 - 01:08:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




KuPbI4 пишет:
Что это бы значило?

значит, что запрос отработал нормально. Можно получать результаты.
Если бы запрос отработал с ошибкой, вернулось бы false


-----
PostgreSQL DBA
 
 Top
KuPbI4
Отправлено: 10 Декабря, 2010 - 01:16:10
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




и каким образом могу получить результаты, если в phpmyadmin'e ввел этот запрос, то выводит empty row и запрос прошел успешно но данные не выводятся... или мне это приходится скрипт написать что клиент добавил книгу или как?
 
 Top
Мелкий Супермодератор
Отправлено: 10 Декабря, 2010 - 01:33:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




0) http://php.su/mysql/?functions
1)
KuPbI4 пишет:
то выводит empty row

значит, запрос не вернул ни одной строки, ни одна не подпала под все условия.


-----
PostgreSQL DBA
 
 Top
KuPbI4
Отправлено: 10 Декабря, 2010 - 02:21:51
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Мелкий пишет:
0) http://php.su/mysql/?functions

читал. пробовал. ничего не выводит.
Мелкий пишет:
1)
KuPbI4 пишет:
то выводит empty row

значит, запрос не вернул ни одной строки, ни одна не подпала под все условия.

в пхпмайадмине
Цитата:

MySQL returned an empty result set (i.e. zero rows).


значит, мне все таки снова сформулировать запрос?!
 
 Top
KuPbI4
Отправлено: 10 Декабря, 2010 - 05:01:13
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Понял теперь. Мне нужно было занести данные в таблицу status и написать этот запрос. Действительно получилось то, что я хотел.
Теперь вопрос:
Сначала приложу скрин.

Как мы видим на скрине, 3 доступных книги. И по-каждому кнопки - "Выбрать эту книгу".
Как реализовать, чтоб если нажать на кнопку и записать данные (статус_бук 1 - выбрана) в таблицу status из таблиц users и books (id_book, id_user)?
а затем по этому запросу получить данные в админке..
и следовательно в админке редактировать запись и добавить дату и переставить статус на 2 (выдача) какая книга выбрана, какой пользователь и когда выдана и когда будет возвращена...

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

скрипт отправления заявки не работает...ничего не происходит

(Отредактировано автором: 10 Декабря, 2010 - 06:49:34)

 
 Top
KuPbI4
Отправлено: 10 Декабря, 2010 - 13:20:33
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.  if (isset($_POST['submit'])){
  3.    
  4.    
  5.     $status_book = strip_tags(stripslashes(substr($_POST['status_book'],0,11)));
  6.    
  7.  
  8.         $query =  "INSERT INTO status (status_book, id_books, id_users) VALUES (1, '$id_books', '$id_users');";
  9.         if (mysql_query($query)) {
  10.                                         echo "Запись добавлена!<br>";
  11.                                         }
  12.                                         else {
  13.                                         echo "Запись не добавлена!<br>";
  14.                                         }
  15.         }
  16.  


Мне удалось только записать данные о статусе, а id_book и id_user не приложу ума как записать... кто мне подскажет..?
 
 Top
JustUserR
Отправлено: 10 Декабря, 2010 - 13:25:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




KuPbI4 пишет:
Мне удалось только записать данные о статусе, а id_book и id_user не приложу ума как записать... кто мне подскажет..?
В качестве возморжного варината эффектвного решения приведенной вами задачи допустимо создание пользовательской SQL-процедуры производящей соответствующую обработку на стороне БД - которая обеспечивает возможност непосредсвенного доступа к информационным полям а также позволяет проводить последовательное обращение к элементам


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
KuPbI4
Отправлено: 10 Декабря, 2010 - 14:00:13
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




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

Спасибо за объяснение, но не понял. Лучше б показали кусок примера кода.
 
 Top
JustUserR
Отправлено: 11 Декабря, 2010 - 12:28:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




KuPbI4 пишет:
Спасибо за объяснение, но не понял. Лучше б показали кусок примера кода
Пожалуйста! В качестве допустимого варианта осуществляющего решения задач проведения операций с информационными полями на стороне сервера БД целесообразно использования определяемых пользовательсих SQL-процедур - они предоставляют возможность осуществления прозвольных операций с хранимыми данными без обеспечения необходимости их передачи на сервер приложений Более подробная информация по данному вопросу предоставлена здесь http://www[dot]firststeps[dot]ru/sql/oracle/r.php?92 и здесь http://www[dot]intuit[dot]ru/department/database/sql/12/


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB