|
|
|
| Всем доброго времени суток.
Ситуация: есть Иванов Иван Иванович, он занесен в таблицу "books", в которой содержится полная информация о книгах (порядковый номер, количество страниц, тип обложки и т. п.), как автор одной из них в соответствующую ячейку "director".
Есть другая таблица - "directors", в которой существует абсолютно аналогичная ячейка "director" и в ней так же имеется Иванов Иван Иванович + другие ячейки с дополнительной информацией о авторе (возраст, место проживания).
Вопрос: нужно, чтобы в ячейку второй таблицы "directors", которая отвечает за последнюю на сегодняшний день книгу автора (назовем ее "lastbook"), попадала актуальная на сегодняшний день его книга из таблицы "books" и (в конечном итоге) выводилась, как ссылка на странице с данными автора в поле "Последняя книга автора".
Вот мое "виденье", как это все должно выглядеть:
<?php $reslast = mysql_query ("SELECT id,title FROM books WHERE director='$director' DESC LIMIT 1",$db);
if (!$reslast)
{
echo "<p>Выбранный Вами автор не имеет ни одной написанной книги.</p>";
exit (mysql_error ());
}
if (mysql_num_rows ($reslast) > 0)
{
$datalast = mysql_fetch_array ($reslast);
echo $datalast;
}
else
{
echo "<p>Нет записей, отвечающих Вашему запросу.</p>";
exit ();
}
$reslast = mysql_query ("INSERT INTO directors (lastbook) VALUES ('$datalast')",$db);?>
|
| |
|
|
|
|
|
|
|
для: romjke2012
(11.04.2010 в 11:25)
| | Вы не привели структуры таблиц.
SHOW CREATE TABLE books;
SHOW CREATE TABLE directors;
Но уже сейчас можно сказать, что Вы не пользуетесь первичными ключами таблиц. А это неправильно.
Чужие ключи в связях таблиц стоит выбирать по первичным. | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 11:42)
| | Таблица "books"
CREATE TABLE `books` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`meta_d` varchar(255) NOT NULL,
`meta_k` varchar(255) NOT NULL,
`genre` varchar(20) NOT NULL,
`year` varchar(4) NOT NULL,
`title` varchar(50) NOT NULL,
`director` varchar(200) NOT NULL,
`studio` varchar(40) NOT NULL,
`size` varchar(5) NOT NULL,
`text` text NOT NULL,
`texta` varchar(250) NOT NULL,
`imgmini` varchar(150) NOT NULL,
`img` varchar(150) NOT NULL,
`rate` int(10) NOT NULL DEFAULT '6',
`vote` int(10) NOT NULL DEFAULT '1',
`date` datetime NOT NULL,
`view` int(10) NOT NULL DEFAULT '0',
`poster` varchar(200) NOT NULL,
`check` int(1) NOT NULL DEFAULT '0',
`new` int(1) NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=cp1251
|
Таблица "directors"
CREATE TABLE `directors` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`rname` varchar(200) NOT NULL,
`ename` varchar(200) NOT NULL,
`meta_d` varchar(255) NOT NULL,
`meta_k` varchar(255) NOT NULL,
`photo` varchar(150) NOT NULL,
`age` varchar(50) NOT NULL,
`place` varchar(50) NOT NULL,
`studio` varchar(40) NOT NULL,
`lastm` varchar(50) NOT NULL,
`firstm` varchar(50) NOT NULL,
`movsum` int(2) NOT NULL,
`award` varchar(255) NOT NULL DEFAULT 'Нет',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251
|
| |
|
|
|
|
|
|
|
для: romjke2012
(11.04.2010 в 13:28)
| | директор у книги один?
Тогда что Вам мешает воткнуть в таблицу books поле director_id?
Кстати, почему директор? | |
|
|
|
|
|
|
|
для: Trianon
(11.04.2010 в 13:32)
| | Видимо потому что у меня вот таким образом он выводится:
<a href="viewdirector.php?=<?php echo $data['director'] ?>"><?php echo $data['director'] ?>
|
и соответственно передается в строке браузера в таком, например, виде:
http://localhost/.../viewdirector.php?=Heikki%20Hesesses%20Lampinen
|
Затем эта переменная должна быть обработана спец. функциями для избавления от лишних символов (таких как %20) и сравнивается с подобным полем во второй таблице "directors", после чего происходит вывод всех данных, которые "завязаны" на этой переменной. | |
|
|
|
|
|
|
|
для: romjke2012
(11.04.2010 в 15:47)
| | Да, но почему директор, а не, например, боксер? | |
|
|
|
|
|
|
|
для: romjke2012
(11.04.2010 в 15:47)
| | >Видимо потому что у меня вот таким образом он выводится:
если у вас эти данные выводятся в таком виде
>
<a href="viewdirector.php?=<?php echo $data['director'] ?>"><?php echo $data['director'] ?>
|
то браузеру попадет не
>
http://localhost/.../viewdirector.php?=Heikki%20Hesesses%20Lampinen
|
а
http://localhost/.../viewdirector.php?=Heikki Hesesses Lampinen
|
и это будет нарушение.
потому что браузеру действительно требуется закодированные данные.
вот такие:
viewdirector.php?=Heikki%20Hesesses%20Lampinen
|
>Затем эта переменная должна быть обработана спец. функциями для избавления от лишних символов (таких как %20) и сравнивается с подобным полем во второй таблице "directors", после чего происходит вывод всех данных, которые "завязаны" на этой переменной.
А вот это уже полнейшая чушь. Попробуйте вывести значение переменной - убедитесь, что никаких специальных преобразований делать не нужно. А следовательно - нельзя.
Правда для этого сперва нужно эту строку переменной присвоить. | |
|
|
|
|
|
|
|
для: romjke2012
(11.04.2010 в 11:25)
| | даже если автор не имеет ни одной книги это не сработает
<?php
........................................................................................................
echo "<p>Выбранный Вами автор не имеет ни одной написанной книги.</p>";
exit (mysql_error ());.
...............................................................................................................
?>
|
сработает при ошибке выполнения запроса | |
|
|
|
|
|
|
|
для: Slo_Nik
(11.04.2010 в 11:46)
| | Хотел еще раз спросить у "знающих" людей:
возможно ли обработать такую переменную (избавится от символов, как, например %20)
http://localhost/.../viewdirector.php?director=Heikki%20Hesesses%20Lampinen
| ,
чтобы в итоге использовать ее как $_GET['director'] для последующего открытия страницы автора конструкцией вида
<a href="viewdirector.php?director=<?php echo $data['director'] ?>"><?php echo $data['director'] ?>
|
Заранее спасибо! | |
|
|
|
|
|
|
|
для: romjke2012
(04.05.2010 в 18:31)
| | Вы пробовали выводить
<? echo $_GET['director']
| ?
там присутствует что-то, что Вам мешает? | |
|
|
|
|
|
|
|
для: root
(04.05.2010 в 18:38)
| | Не пробовал, но думаю возникнут сложности.
Хорошо, а в запросе таком что указывать?
<?php ...FROM table WHERE director='ЧЕМУ?'... ?>
|
| |
|
|
|
|
|
|
|
для: romjke2012
(04.05.2010 в 20:30)
| | >Не пробовал, но думаю возникнут сложности.
Вы попробуйте..
>Хорошо, а в запросе таком что указывать?
>
<?php ...FROM table WHERE director='ЧЕМУ?'... ?>
|
очевидно, значение переменной (обработанной соответствующими функциями для вставки в код SQL-запроса). | |
|
|
|
|
|
|
|
для: root
(04.05.2010 в 20:35)
| | >Вы попробуйте..
Спасибо. Попробовал и все заработало, то есть ссылка вида
http://localhost/.../viewgenre.php?genre=One%20Man%20Show%20Movie
|
после нехитрого маневра
в запросе
$result = mysql_query ("SELECT id,genre,...,date FROM table WHERE genre='$genre'...
|
отлично сработала и ответила тем результатом, который был необходим.
>...обработанной соответствующими функциями для вставки в код SQL-запроса
Вот, кстати, да. Хотелось бы узнать, может все-таки необходима какая-нибудь обработка?
Спасибо, root | |
|
|
|
|
|
|
|
для: romjke2012
(04.05.2010 в 20:43)
| | Тогда Вам в поиск :-)
get_magic_quotes_gpc
stripslashes
mysql_real_escape_string | |
|
|
|
|
|
|
|
для: root
(04.05.2010 в 20:50)
| | root, большое спасибо за указание направления ;) Удачи Вам! | |
|
|
|