SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.11.2007 20:13:26

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Список в форме

Есть БД books с полями Code,Name_book,Avtor,Pulpit...
Pulpit-это кафедры.В books Pulpit представляется как список, значения которых берутся из другой таблицы(таблица наз-ся Pulpit).Есть кнопка в основной форме, которая выполняет запрос:
<?php
$Name_book=$HTTP_POST_VARS['Name_book'];
$Avtor=$HTTP_POST_VARS['Avtor'];
$Description=$HTTP_POST_VARS['Description'];
//$Pulpit=$HTTP_POST_VARS['Pulpit'];
$Publishers=$HTTP_POST_VARS['Publishers'];
$Year=$HTTP_POST_VARS['Year'];
{
$Name_book = addslashes($Name_book);
$Avtor = addslashes($Avtor);
$Description = addslashes($Description);
//$Pulpit = addslashes($Pulpit);
$Publishers = addslashes($Publishers);
$Year = addslashes($Year);

include "config.php";
$query = "insert into books (Name_book, Avtor, Description, Pulpit, Publishers, Year) values ('".$Name_book."','".$Avtor."','".$Description."', '".$Pulpit."','".$Publishers."','".$Year."')";
echo "<br>";
echo "<script language=\"javascript\">window.alert('".$query."');</script>";
$result = mysql_query($query);
if ($result)
   {
   echo "<br>";
    echo "<br>";
   
echo "<script language=\"javascript\">window.alert('Книга добавлена в базу данных!');</script>";
}
}
?>
Проблема в следующем: Все поля добавляются, кроме Pulpit.Как добавить и Pulpit?

Неактивен

 

#2 21.11.2007 20:21:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Список в форме

Оно у Вас закомментировано...

Неактивен

 

#3 21.11.2007 20:34:56

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

иначе ошибки.А так необходимо включить

Неактивен

 

#4 21.11.2007 20:45:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Список в форме

Даже не знаю, что ответить smile

У Вас закомментирован код, который добавляет. Раскомментируйте и избавьтесь от ошибок.
По другому - никак.

Неактивен

 

#5 21.11.2007 21:04:33

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

Все верно.Но каким образом избавиться от ошибок

Неактивен

 

#6 21.11.2007 21:12:12

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

проблема в следующем:во-первых:
//$Pulpit=$HTTP_POST_VARS['Pulpit'];
//$Pulpit = addslashes($Pulpit);      это надо раскоментировать
во-вторых:
необходимо переслать элемент из списка в форме в add.php в основную таблицу books на index.php.

Неактивен

 

#7 21.11.2007 22:47:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Список в форме

Вы ошибку то напишите...

Неактивен

 

#8 21.11.2007 23:16:04

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

Notice: Undefined index: Pulpit in z:\home\localhost\www\biblio\add.php on line 10
line 10 - это $Pulpit=$HTTP_POST_VARS['Pulpit'];

Неактивен

 

#9 21.11.2007 23:17:58

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Список в форме

Значит в форме add.php нет элемента с названием Pulpit

Неактивен

 

#10 21.11.2007 23:31:20

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

Да вы правы.Но ведь видите ли в чем дело.Поскольку значения Pulpit берутся из таблицы с таким же названием Pulpit, то у меня нет отдельного элемента Pulpit.Вместо этого результат такого запроса, который и выводит этот список
<?php
$ath = mysql_query("select * from pulpit;");
if ($ath)
{
echo "<p><select size='1' name='type'>";
while($types = mysql_fetch_array($ath))
{
echo "<option value=".$types['Id_Type']." selected>".$types['Caption']."&nbsp;</option>";
}
echo "</select></p> ";
}
?>

Что тогда необходимо ввести вместо $Pulpit=$HTTP_POST_VARS['Pulpit'];  ?

Неактивен

 

#11 21.11.2007 23:34:13

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Список в форме

$Pulpit=$HTTP_POST_VARS['type'];

Неактивен

 

#12 22.11.2007 00:01:41

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

Необходимо вывести названия элемента, а при $Pulpit=$HTTP_POST_VARS['type']; происходит вывод номера позиции в таблице.В принципе номер и значения соответствуют.Но необходимо все-таки  вывести название

Неактивен

 

#13 22.11.2007 00:10:11

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Список в форме

Вам надо изменить Вашу форму:
echo "<option value=".$types['Caption']." selected>".$types['Caption']."&nbsp;</option>";

Неактивен

 

#14 22.11.2007 00:23:26

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

Работает!!!

Неактивен

 

#15 22.11.2007 00:35:06

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

После удаления из БД books какой-либо строки, нумерация по полю Code нарушается. Т.е. если есть список из 5 строк и при удалении 3го, образуется новый список из строк с кодами 1,2,4,5. Как организовать автоматическое перенумерование по полю Code.Code является tinyint(50)бтще null,auto_increment, уникальный

Неактивен

 

#16 22.11.2007 00:45:42

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Список в форме

Что значит "нарушается"?
Вообще идея AUTO_INCREMENT в том, чтобы номер каждой вставленной записи был на единицу больше, чем номер предыдущей вставленной. При этом не важно, удалены ли какие-либо из предыдущих.
Например, вставили 1,2,3. Удалили 2 и 3, остался 1. Следующая вставленная будет 4, а не 2 (за исключением некоторых редких случаев, которые здесь рассматривать не будем).

Или вам нужно, чтобы в случае, если есть записи 1,2,4,5, но нет записи 3, следующая идующая в таблицу запись вставлялась в дырку, т.е. в 3?

Неактивен

 

#17 22.11.2007 00:54:47

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

Желательнее бы конечно их перенумеровать, но если это невозможно.то необходимо хотя бы заполнить дырку

Неактивен

 

#18 22.11.2007 01:56:25

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Список в форме

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

Если не важна привязка конкретного значения Code к конкретному номеру, то можно сделать так:

SET @i = 0;
SELECT @i := @i + 1, Code FROM books;

или перенумеровывать полученные ряды уже непосредственно в клиенте (так даже лучше, т.к. меньше будет данных идти между mysqld и apache, плюс не нужен запрос на инициализацию переменной).

А почему Вам важно, чтобы в номерах не было дырок?

Неактивен

 

#19 22.11.2007 09:36:29

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

ну вы представьте.У меня БД добавляет, удаляет книгу.Есть большой список от 1  ну пусть до 100,..ну хотя в принципе наверное можно простоо скрыть это поле Code и не зацикливаться на нем.Да так и сделаю...

Неактивен

 

#20 22.11.2007 09:52:23

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Список в форме

Этот Code можно не показывать, но его уникальность может быть полезна. Например, пусть страница с описанием книги имеет адрес /book.php?code=35
На этот адрес люди могут поставить ссылку и было бы странно, если по этом адресу в будущем будет другая книга (если же Вы удалите книгу, то номера 35 в таблице просто не будет и Вы сможете выдать на странице "Данной книги сейчас нет в продаже, воспользуйтесь поиском или вернитесь в магазин"). В связи с этим отсутствующие книги удобно оставлять в базе, чтобы, когда книга вернется у нее был тот же Code (кроме того, можно реализовать функцию предварительного заказа)

Неактивен

 

#21 22.11.2007 10:09:38

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

в принципе само поле я удалять не стану, я его просто не буду отображать.Такое действие не желательно?Люди смогут поставить ссылку ориентируясь на название, автора и год издания книги.

Неактивен

 

#22 22.11.2007 10:35:25

nemiroff9999
Участник
Зарегистрирован: 21.11.2007
Сообщений: 19

Re: Список в форме

каким образом можно щелкая на обычную ссылку перехода выполнить некоторый запрос,который отобразиться на той  странице, в которую переходим?

Неактивен

 

#23 22.11.2007 10:36:46

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Список в форме

Не отображать это правильно. Я говорил про другое - какой URL у страницы с описанием конкретной книги?

Вот пример с озона (видно, что url содержит некий уникальный id книги, который нигде больше не отображается): http://www.ozon.ru/context/detail/id/3593457/

Неактивен

 

#24 22.11.2007 10:41:28

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Список в форме

nemiroff9999 написал:

каким образом можно щелкая на обычную ссылку перехода выполнить некоторый запрос,который отобразиться на той  странице, в которую переходим?

надо, чтобы ссылка содержала в себе параметры запроса, которые будут интрерпретироваться конечной страницей
вот пример: http://sqlinfo.ru/forum/post.php?tid=263&qid=1723

Неактивен

 

#25 22.11.2007 14:10:13

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Список в форме

Да, кстати. Из-за этого:

nemiroff9999 написал:

Code является tinyint(50)бтще null,auto_increment, уникальный

у Вас сейчас в таблицу влезет не больше 128 книг.
Сделайте ALTER TABLE books MODIFY Code INT UNSIGNED NOT NULL AUTO_INCREMENT;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson