Задавайте вопросы, мы ответим
Вы не зашли.
Есть БД 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?
Неактивен
Оно у Вас закомментировано...
Неактивен
иначе ошибки.А так необходимо включить
Неактивен
Даже не знаю, что ответить
У Вас закомментирован код, который добавляет. Раскомментируйте и избавьтесь от ошибок.
По другому - никак.
Неактивен
Все верно.Но каким образом избавиться от ошибок
Неактивен
проблема в следующем:во-первых:
//$Pulpit=$HTTP_POST_VARS['Pulpit'];
//$Pulpit = addslashes($Pulpit); это надо раскоментировать
во-вторых:
необходимо переслать элемент из списка в форме в add.php в основную таблицу books на index.php.
Неактивен
Вы ошибку то напишите...
Неактивен
Notice: Undefined index: Pulpit in z:\home\localhost\www\biblio\add.php on line 10
line 10 - это $Pulpit=$HTTP_POST_VARS['Pulpit'];
Неактивен
Значит в форме add.php нет элемента с названием Pulpit
Неактивен
Да вы правы.Но ведь видите ли в чем дело.Поскольку значения 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']." </option>";
}
echo "</select></p> ";
}
?>
Что тогда необходимо ввести вместо $Pulpit=$HTTP_POST_VARS['Pulpit']; ?
Неактивен
$Pulpit=$HTTP_POST_VARS['type'];
Неактивен
Необходимо вывести названия элемента, а при $Pulpit=$HTTP_POST_VARS['type']; происходит вывод номера позиции в таблице.В принципе номер и значения соответствуют.Но необходимо все-таки вывести название
Неактивен
Вам надо изменить Вашу форму:
echo "<option value=".$types['Caption']." selected>".$types['Caption']." </option>";
Неактивен
Работает!!!
Неактивен
После удаления из БД books какой-либо строки, нумерация по полю Code нарушается. Т.е. если есть список из 5 строк и при удалении 3го, образуется новый список из строк с кодами 1,2,4,5. Как организовать автоматическое перенумерование по полю Code.Code является tinyint(50)бтще null,auto_increment, уникальный
Неактивен
Что значит "нарушается"?
Вообще идея AUTO_INCREMENT в том, чтобы номер каждой вставленной записи был на единицу больше, чем номер предыдущей вставленной. При этом не важно, удалены ли какие-либо из предыдущих.
Например, вставили 1,2,3. Удалили 2 и 3, остался 1. Следующая вставленная будет 4, а не 2 (за исключением некоторых редких случаев, которые здесь рассматривать не будем).
Или вам нужно, чтобы в случае, если есть записи 1,2,4,5, но нет записи 3, следующая идующая в таблицу запись вставлялась в дырку, т.е. в 3?
Неактивен
Желательнее бы конечно их перенумеровать, но если это невозможно.то необходимо хотя бы заполнить дырку
Неактивен
Так, чтобы автоматически перенумеровывалось прямо в таблице наподобие автоинкремента, сделать цивилизованными средствами нельзя.
Если не важна привязка конкретного значения Code к конкретному номеру, то можно сделать так:
SET @i = 0;
SELECT @i := @i + 1, Code FROM books;
или перенумеровывать полученные ряды уже непосредственно в клиенте (так даже лучше, т.к. меньше будет данных идти между mysqld и apache, плюс не нужен запрос на инициализацию переменной).
А почему Вам важно, чтобы в номерах не было дырок?
Неактивен
ну вы представьте.У меня БД добавляет, удаляет книгу.Есть большой список от 1 ну пусть до 100,..ну хотя в принципе наверное можно простоо скрыть это поле Code и не зацикливаться на нем.Да так и сделаю...
Неактивен
Этот Code можно не показывать, но его уникальность может быть полезна. Например, пусть страница с описанием книги имеет адрес /book.php?code=35
На этот адрес люди могут поставить ссылку и было бы странно, если по этом адресу в будущем будет другая книга (если же Вы удалите книгу, то номера 35 в таблице просто не будет и Вы сможете выдать на странице "Данной книги сейчас нет в продаже, воспользуйтесь поиском или вернитесь в магазин"). В связи с этим отсутствующие книги удобно оставлять в базе, чтобы, когда книга вернется у нее был тот же Code (кроме того, можно реализовать функцию предварительного заказа)
Неактивен
в принципе само поле я удалять не стану, я его просто не буду отображать.Такое действие не желательно?Люди смогут поставить ссылку ориентируясь на название, автора и год издания книги.
Неактивен
каким образом можно щелкая на обычную ссылку перехода выполнить некоторый запрос,который отобразиться на той странице, в которую переходим?
Неактивен
Не отображать это правильно. Я говорил про другое - какой URL у страницы с описанием конкретной книги?
Вот пример с озона (видно, что url содержит некий уникальный id книги, который нигде больше не отображается): http://www.ozon.ru/context/detail/id/3593457/
Неактивен
nemiroff9999 написал:
каким образом можно щелкая на обычную ссылку перехода выполнить некоторый запрос,который отобразиться на той странице, в которую переходим?
надо, чтобы ссылка содержала в себе параметры запроса, которые будут интрерпретироваться конечной страницей
вот пример: http://sqlinfo.ru/forum/post.php?tid=263&qid=1723
Неактивен
Да, кстати. Из-за этого:
nemiroff9999 написал:
Code является tinyint(50)бтще null,auto_increment, уникальный
у Вас сейчас в таблицу влезет не больше 128 книг.
Сделайте ALTER TABLE books MODIFY Code INT UNSIGNED NOT NULL AUTO_INCREMENT;
Неактивен