26

Re: Помогите с созданием базы данных к сайту!!!

Помогите пожалуйста еще с одним вопросом. Ни как не могу найти решение. sad
Есть таблица books в базе со следующими заголовками:     autor ,      about_autor,      janr,    book,   about_book.
Мне нужно сделать на странице список со всеми жанрами (janr) как ссылку, то есть кликаю на жанр, открывает список авторов, потом щелкаем на автора, открывет список книг ....
я пробую делать выборку в базе например

SELECT DISTINCT janr FROM books WHERE janr='drama' 

но какэто сделать что бы на странице сайта все корректо выводилось ??? Прошу помощи! Хотя бы направте в какую сторону двигаться ??? sad  sad  sad

27

Re: Помогите с созданием базы данных к сайту!!!

jazz сказал:

SELECT DISTINCT janr FROM books WHERE janr='drama'

Не вижу смысла в этом запросе; он выведет одну строку. Перед тем, как что-то выводить на сайте, постарайтесь разобраться с запросом выборки данных из БД.

Пока я не понимаю в чем у вас трудности.

28

Re: Помогите с созданием базы данных к сайту!!!

Извиняюсь, немного не так написал, вот условие

SELECT DISTINCT autor FROM books WHERE janr='drama'

....По моему он должен выводить всех авторов  у которых жанр драма так ???
Сложность для меня в том, что мне никак не понять как сделать например на сайте список авторов жанра драма как ссылки, нажимая на которые открывается список книг данного автора, на которого нажали ???
Я не очень понимаю как это реализовать ?? Нужет GET ??

29

Re: Помогите с созданием базы данных к сайту!!!

jazz сказал:

Нужет GET ?

Разумеется. Добавьте к ссылкам хвост параметра и в скрипте проверяйте их наличие.
<a href="test.php?janr=drama">Драма</a>
Дальше скрипт обработки.

<?php

if (isset($_GET['janr'])) {
  $sql = 'SELECT DISTINCT `autor` FROM `books` WHERE `janr` = "' . mysql_real_escape_string($_GET['janr']) . '"';
  ...
}

?>

Документация: http://lv.php.net/manual/ru/reserved.variables.get.php

30 (изменено: jazz, 2012-02-26 17:32:28)

Re: Помогите с созданием базы данных к сайту!!!

Значт если я вставляю ссылку <a href="test.php?janr=drama">Драма</a> , то  файл test.php должен быть следующий ??

<?php
$hostname = "localhost"; 
$username = "root"; 
$password = ""; 
$dbName = "mydb"; 
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");


if (isset($_GET['janr'])) {
  $sql = 'SELECT DISTINCT `autor` FROM `books` WHERE `janr` = "' . mysql_real_escape_string($_GET['janr']) . '"';
  ...
}



echo ("
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> 
<html xmlns=\"http://www.w3.org/1999/xhtml\"> 
  
<head> 
</head> 
  
<body> 
  
<h3>Вывод ранее сохраненных данных из таблицы MySQL</h3> 
  
<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\"> 
 <tr style=\"border: solid 1px #000\"> 
  <td><b>авторы</b></td> 
  
 </tr> 
"); 
  
/* Цикл вывода данных из базы авторов жанра драма */

while ($row = mysql_real_escape_string($_GET['janr']) 
{ 
    echo "<tr>\n"; 
    echo "<td>".$row['janr']."</td>\n"; 
    
} 
  
echo ("</table>\n"); 
  

mysql_close(); 
  


?>

Но у меня не получается.... Я подозреваю что у меня в цикле что то не так сделано ???

31

Re: Помогите с созданием базы данных к сайту!!!

jazz сказал:

test.php должен быть следующий ?

Попробуйте так:

<?php

$hostname = "localhost"; 
$username = "root"; 
$password = ""; 
$dbName = "mydb"; 
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");

echo ("
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> 
<html xmlns=\"http://www.w3.org/1999/xhtml\"> 
  
<head> 
</head> 
  
<body> 
  
<h3>Вывод ранее сохраненных данных из таблицы MySQL</h3> 
  
<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\"> 
 <tr style=\"border: solid 1px #000\"> 
  <td><b>авторы</b></td> 
 </tr> 
"); 
  
/* Цикл вывода данных из базы авторов жанра драма */

if (isset($_GET['janr'])) {
    $sql = 'SELECT DISTINCT `autor` FROM `books` WHERE `janr` = "' . mysql_real_escape_string($_GET['janr']) . '"';
    if ($result = mysql_query($sql)) {
        while ($row = mysql_fetch_assoc($result)) {
            echo "<tr>\n"; 
            echo "<td>".$row['autor']."</td></tr>\n"; 
        }
    }
}

echo ("</table>\n");

mysql_close(); 
  
?>

32

Re: Помогите с созданием базы данных к сайту!!!

Так тоже не получается. Что то мне не найти причину.... по моему все так...  После выполнения на странице вообще ничего не выводит, ни ошибки, ни те данные которые надо, смотрел в браузере исходный код, так там все что в условии  и в цикле, ничего этого нет ???

33

Re: Помогите с созданием базы данных к сайту!!!

Давайте с самого начала. Этот запрос в phpMyAdmin что-нибудь выводит?

SELECT DISTINCT `autor` FROM `books` WHERE `janr` = "drama"

34

Re: Помогите с созданием базы данных к сайту!!!

Hanut сказал:

Давайте с самого начала. Этот запрос в phpMyAdmin что-нибудь выводит?

SELECT DISTINCT `autor` FROM `books` WHERE `janr` = "drama"

Да, я его проверял. Там он выводит столбец с авторами, все как надо. 
   я и цикл убирал, просто переменную оставлял в скрипте, все равно ничего не выводит ???

35

Re: Помогите с созданием базы данных к сайту!!!

jazz сказал:

я и цикл убирал, просто переменную оставлял в скрипте, все равно ничего не выводит ?

Не знаю что сказать. Проверьте работает ли PHP. Создайте скрипт:

<?php echo 'Test'; ?>

36

Re: Помогите с созданием базы данных к сайту!!!

Hanut сказал:
jazz сказал:

я и цикл убирал, просто переменную оставлял в скрипте, все равно ничего не выводит ?

Не знаю что сказать. Проверьте работает ли PHP. Создайте скрипт:

<?php echo 'Test'; ?>

Я сейчас убрал второе условие и цикл, и вывел просто переменную $sql и там весь запрос корректно выводится: SELECT DISTINCT `autor` FROM `books` WHERE `janr` = "drama"
Мне кажется дело о втором условии ??   или в цикле ??
Мне не очень понятно какую работу выполняет   if ($result = mysql_query($sql))  ?? Нельзя просто переменной $result присвоить выполнение mysql_query($sql)  ???

37

Re: Помогите с созданием базы данных к сайту!!!

Попробуйте посмотреть ошибку запроса, если она есть, таким образом.

if (isset($_GET['janr'])) {
    $sql = 'SELECT DISTINCT `autor` FROM `books` WHERE `janr` = "' . mysql_real_escape_string($_GET['janr']) . '"';
    if ($result = mysql_query($sql)) {
        while ($row = mysql_fetch_assoc($result)) {
            echo "<tr>\n"; 
            echo "<td>".$row['autor']."</td></tr>\n"; 
        }
    } else {
        echo mysql_error();
    }
}

38

Re: Помогите с созданием базы данных к сайту!!!

jazz сказал:

Мне не очень понятно какую работу выполняет   if ($result = mysql_query($sql))  ?? Нельзя просто переменной $result присвоить выполнение mysql_query($sql)  ???

Это условие выполняет проверку выполнения запроса. Если запрос выполняется без ошибки, то условие выполнится и код в нем так же будет выполнен.

Документация:
http://lv.php.net/manual/ru/function.mysql-query.php

39

Re: Помогите с созданием базы данных к сайту!!!

Разобрался! заработало!! Большое спасибо!!! big_smile
там смешная ошибка была!! smile   пропустил mysql_select_db($dbName) or die (mysql_error());