Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: выдаёт ошибку в запросе???
 
 автор: jelenad   (03.05.2009 в 14:02)   письмо автору
 
 

Есть фаил kniga.html -добавление новой книги
<html>
<head>
  <title>Новая книга</title>
</head>

<body>
  <h1 align="center">Новая книга</h1>

  <form action="insert_kniga.php" method="post">
  <table align="center" border="0" bgcolor="#CCCCCC">
   <tr>
         <td>Название книги:</td>
         <td><input type="text" name="title" maxlength="70" size="50"></td>
   </tr> 
   <tr>
          <td>Цена:</td>
          <td><input type="text" name="price" maxlength="6" size="10"></td>
   </tr>
   
   <tr>
           <td>Краткое описание:</td>
           <td><input type="text" name="description" maxlength="400" size="50" ></td></tr>
<tr>
           <td>Издательство:</td>
           <td><input type="text" name="publisher_id" maxlength="400" size="50" ></td></tr>
   <tr>
           <td>язык:</td>
           <td><input type="text" name="language_id" maxlength="400" size="50" ></td></tr>
<tr>
           <td>подраздел:</td>
           <td><input type="text" name="subsection_id" maxlength="400" size="50" ></td></tr>
<tr>
           <td>Avtor:</td>
           <td><input type="text" name="author_id" maxlength="400" size="50" ></td></tr>
<tr>
           <td>Логотип</td>
          <td><input type="file" name="image" size="50"></td>
   </tr>
 </table>
 <br>
         <center> <input type="reset" value="Очистить">
          <input type="submit" value="Добавить"></center>
</form>
</body>
</html>


и файл insert_kniga.php

html>
<?php
    $link 
mysql_connect("localhost""root""qwerty")
    or die(
"Невозможно подключение к MySQL: " mysql_error());
    print (
"Connected successfully <br>");
    
?>
<head>
<title>Программа добавления нового автора(файл insert_kniga.php)</title>
</head>
<body>
<?php 


$title 
$_POST['title'];
$price $_POST['price']; 
$description $_POST['description'];
$image$_POST['image'];
$publisher_id$_POST['publisher_id'];
$language_id$_POST['language_id'];
$subsection_id$_POST['subsection_id'];
$author_id $_POST['author_id']; 


$title trim $title ); 
$price trim $price );
$description trim $description );
$image trim $image );
$publisher_idtrim $publisher_id ); 
$language_idtrim $language_id );
$subsection_idtrim $subsection_id );
$author_id trim ($author_id );

$title addslashes $title );
$price addslashes $price );
$description addslashes $description );
$image addslashes $image );
$publisher_idaddslashes $publisher_id ); 
$language_idaddslashes $language_id );
$subsection_idaddslashes $subsection_id );
$author_id addslashes ($author_id );


 
$db "book";

mysql_select_db $db ) or die ("Невозможно открыть $db");
$query "INSERT INTO kniga (title,price,description,image,publisher_id,language_id,subsection_id,author_id) 
VALUES ('"
.$title."','".$price."','".$description."','".$image."','".publisher_id."','".language_id."','".subsection_id."','".author_id."')"
$result mysql_query $query );
if (
$result) echo "Книга добавлена в базу данных.";
else echo 
"Ошибка при выполнении запроса <br>$query<br>"mysql_error();
    
?>
</body>
</html>

после ввода данных выдаётся ошибка:
html> Connected successfully
Ошибка при выполнении запроса
INSERT INTO kniga (title,price,description,image,publisher_id,language_id,subsection_id,author_id) VALUES ('sdvfd','2.6','ergerg','3.bmp','publisher_id','language_id','subsection_id','author_id')
Incorrect integer value: 'publisher_id' for column 'publisher_id' at row 1

   
 
 автор: Zend72   (03.05.2009 в 14:11)   письмо автору
 
   для: jelenad   (03.05.2009 в 14:02)
 

>Incorrect integer value: 'publisher_id' for column 'publisher_id' at row 1

А у вас там не целое число, а текст...

   
 
 автор: jelenad   (03.05.2009 в 14:17)   письмо автору
 
   для: Zend72   (03.05.2009 в 14:11)
 

но я то ввожу число а не название ,
вроде бы он должен заносить в publisher_id число которое я ввожу и которое соответствует publisher_id из таблицы publisher

   
 
 автор: Zend72   (03.05.2009 в 14:19)   письмо автору
 
   для: jelenad   (03.05.2009 в 14:17)
 

publisher_id замените на $publisher_id
language_id замените на $language_id
subsection_id замените $subsection_id
author_id замените $subsection_id

PS
Используйте редактор с подсветкой синтаксиса.

   
 
 автор: jelenad   (03.05.2009 в 14:24)   письмо автору
 
   для: Zend72   (03.05.2009 в 14:19)
 

а как правильно написать чтобы он вводил те значения которые я хочу ввести???

   
 
 автор: Zend72   (03.05.2009 в 14:26)   письмо автору
 
   для: jelenad   (03.05.2009 в 14:24)
 


<?php
$query 
"INSERT INTO kniga (title,price,description,image,publisher_id,language_id,subsection_id,author_id)  
VALUES ('"
.$title."','".$price."','".$description."','".$image."','".$publisher_id."','".$language_id."','".$subsection_id."','".$author_id."')"

?>

   
 
 автор: jelenad   (03.05.2009 в 14:34)   письмо автору
 
   для: Zend72   (03.05.2009 в 14:26)
 

html> Connected successfully
Ошибка при выполнении запроса
INSERT INTO kniga (title,price,description,image,publisher_id,language_id,subsection_id,author_id) VALUES ('сорока болобока','3.70','нету','3.bmp','4','1','1','5')
Incorrect string value: '\xF1\xEE\xF0\xEE\xEA\xE0...' for column 'title' at row 1

   
 
 автор: Zend72   (03.05.2009 в 14:43)   письмо автору
 
   для: jelenad   (03.05.2009 в 14:34)
 

Возможно с кодировкой что то не то...

Что выведет:
<?php
echo "\xF1\xEE\xF0\xEE\xEA\xE0";
?>


А если оставить title пустым запрос проходит?

   
 
 автор: jelenad   (03.05.2009 в 14:48)   письмо автору
 
   для: Zend72   (03.05.2009 в 14:43)
 

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

   
 
 автор: Zend72   (03.05.2009 в 14:53)   письмо автору
 
   для: jelenad   (03.05.2009 в 14:48)
 

>да я уже поняла.....и исправила теперь работает
>а как сделать теперь чтобы при просмотре данных таблицы "KNIGA"
> вмето author_id показывало бы author_name соответствующее тому author_id
>который вводила при добавлении новой книги??


SELECT author_name FROM KNIGA WHERE author_id=$author_id

   
 
 автор: jelenad   (03.05.2009 в 15:09)   письмо автору
 
   для: Zend72   (03.05.2009 в 14:53)
 

извини не так объяснила:

у меня есть таблица "KNIGA"

CREATE TABLE `kniga` (
  `kniga_id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `title` char(70) NOT NULL,
  `price` float(4,2) NOT NULL,
  `description` text,
  `image` blob,
  `author_id` int(10) unsigned NOT NULL,
  `publisher_id` int(10) unsigned NOT NULL,
  `language_id` int(10) unsigned NOT NULL,
  `subsection_id` int(10) unsigned NOT NULL,
  
); 

и есть таблица
CREATE TABLE `author` (
  `author_id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `author_name` char(50) NOT NULL,
   );

Вначале я ввела в таблица "author" несколько авторов
затем при ввобе новой книги в БД я ввожу в поле author_id тот номер автора под которым он в таблице "author"
Ну вот теперь я и дошла до самого вопроса:
как сделать так чтобы в таблице "KNIGA"
где author_id был бы не номер а он бы автоматически выводил author_name соответсвующий номеру автора.

   
 
 автор: jelenad   (03.05.2009 в 17:45)   письмо автору
 
   для: Zend72   (03.05.2009 в 14:53)
 

или так нельзя сделать??

   
 
 автор: Trianon   (03.05.2009 в 18:13)   письмо автору
 
   для: jelenad   (03.05.2009 в 17:45)
 

SELECT k.title, k.price, a.author_name 
  FROM kniga k 
    LEFT JOIN author a ON k.author_id=a.author_id

   
 
 автор: jelenad   (03.05.2009 в 18:33)   письмо автору
 
   для: Trianon   (03.05.2009 в 18:13)
 

спасибо Вам,
а если несколько записей так делать то через запятую???
SELECT k.title, k.price, a.author_name,s.section_name
  FROM kniga k 
    LEFT JOIN author a ON k.author_id=a.author_id,
     section s ON k.section_id=s.section_id; 

или так нельзя???

   
 
 автор: Trianon   (03.05.2009 в 18:46)   письмо автору
 
   для: jelenad   (03.05.2009 в 18:33)
 

только перед очередным компонентом табличного выражения (перед section s ) должна быть не запятая , а очередной LEFT JOIN

   
 
 автор: jelenad   (03.05.2009 в 21:24)   письмо автору
 
   для: Trianon   (03.05.2009 в 18:46)
 

SELECT k.title, k.price, a.author_name,s.section_name 
  FROM kniga k 
  LEFT JOIN author a ON k.author_id=a.author_id
  LEFT JOIN section s ON k.section_id=s.section_id;

ОШИБКА:
#1054 - Unknown column 'k.section_id' in 'on clause'

   
 
 автор: Trianon   (03.05.2009 в 21:29)   письмо автору
 
   для: jelenad   (03.05.2009 в 21:24)
 

> #1054 - Unknown column 'k.section_id' in 'on clause'
Судя по тексту (03.05.2009 в 15:09) в CREATE TABLE kniga действительно нет k.section_id.
Что непонятно-то?

   
 
 автор: jelenad   (03.05.2009 в 21:46)   письмо автору
 
   для: Trianon   (03.05.2009 в 21:29)
 

извиняюсь,
не понятно то что у меня в таблице kniga есть и subsection_id ,непонимаю почему он говорит что ошибка в синтаксе???
SELECT k.title, k.price, a.author_name,s.subsection_name
  LEFT JOIN author a ON k.author_id=a.author_id
  LEFT JOIN subsection s ON k.subsection_id=s.subsection_id;


#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL 
server version for the right syntax to use 
near 'LEFT JOIN author a ON k.author_id=a.author_id LEFT JOIN subsection s ON k.sub' at line 2
[

   
 
 автор: Trianon   (03.05.2009 в 22:00)   письмо автору
 
   для: jelenad   (03.05.2009 в 21:46)
 

Не видя структуры (оператора CREATE TABLE ) таблицы subsection ( кстати, Вы уверены, что она у Вас называется именно так?) сложно что-то сказать.
Вероятно, s.subsection_name серверу сильно не понравилось.

По-моему, Вы слегка запутались в именах таблиц и полей.

Стыкуемые поля в таблицах вовсе не обязаны называться одинаково.
Но в запросе, понятное дело, для каждой таблицы нужно указывать те поля , которые в ней присутствуют.
Независимо от того, по алиасу (по сокращенному имени) идет выборка или по полному.

   
 
 автор: jelenad   (03.05.2009 в 22:06)   письмо автору
 
   для: Trianon   (03.05.2009 в 22:00)
 

CREATE TABLE `kniga` (
  `kniga_id` int(10) unsigned NOT NULL AUTO_INCREMENT  PRIMARY KEY,
  `title` char(70) NOT NULL,
  `price` float(4,2) NOT NULL,
  `description` text,
  `image` blob,
  `author_id` int(10) unsigned NOT NULL,
  `publisher_id` int(10) unsigned NOT NULL,
  `language_id` int(10) unsigned NOT NULL,
  `subsection_id` int(10) unsigned NOT NULL);


CREATE TABLE `subsection` (
  `subsection_id` int(10) unsigned NOT NULL AUTO_INCREMENT  PRIMARY KEY,
  `subsection_name` char(80) NOT NULL,
  `section_id` int(10) unsigned DEFAULT NULL);

вот есть таблицы с этими данными

   
 
 автор: Trianon   (03.05.2009 в 22:14)   письмо автору
 
   для: jelenad   (03.05.2009 в 22:06)
 

так... а куда из запроса делась вторая строка?
 FROM kniga k  

   
 
 автор: jelenad   (03.05.2009 в 22:17)   письмо автору
 
   для: Trianon   (03.05.2009 в 22:14)
 

упс....... виновата сама не внимательная, спасибо.

   
 
 автор: jelenad   (03.05.2009 в 22:38)   письмо автору
 
   для: Trianon   (03.05.2009 в 22:14)
 

<head>
<title>Вывод данных из MySQL</title>
</head>
<body>
<h1>Вывод ранее сохраненных данных из таблицы MySQL</h1>

<table border="1" width="30%">    

<?php

     
// Соединяемся с базой данных
     
$hostname "localhost"// название/путь сервера, с MySQL
     
$username "root"// имя пользователя 
     
$password "qwerty"// пароль пользователя 
     
$dbName "book"// название базы данных
    

mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
  
$sql "SELECT k.title, k.price, a.author_name,s.subsection_name,l.literature_language\n"
     
"FROM kniga k\n"
     
" LEFT JOIN author a ON k.author_id=a.author_id\n"
     
" LEFT JOIN subsection s ON k.subsection_id=s.subsection_id\n"
     
" LEFT JOIN language l ON k.language_id=l.language_id LIMIT 0, 30 ";
$res mysql_query($query) or die(mysql_error());
       
mysql_close();

?> 
</table>

</body>
</html>


А если я задаю этот запрос в ПХП код то он пишет что запрос пустой
Вывод ранее сохраненных данных из таблицы MySQL
Query was empty

   
 
 автор: Trianon   (03.05.2009 в 22:59)   письмо автору
 
   для: jelenad   (03.05.2009 в 22:38)
 

Ну если присваивать запрос переменной $sql , а на выполнение совать переменную $query, то так примерно и выйдет.

Если бы Вы включили диагностику всех ошибок - проблема бы вскрылась куда раньше.

   
 
 автор: Trianon   (03.05.2009 в 23:02)   письмо автору
 
   для: jelenad   (03.05.2009 в 22:38)
 

И еще. Вы крайне скрупулезно оформили выражение строки с запросом, и это безусловно, делает Вам честь.
С другой стороны, напиши Вы проще, вот так:
<?
$sql 
"
SELECT k.title, k.price, a.author_name,s.subsection_name,l.literature_language
  FROM kniga k
   LEFT JOIN author a ON k.author_id=a.author_id
   LEFT JOIN subsection s ON k.subsection_id=s.subsection_id
   LEFT JOIN language l ON k.language_id=l.language_id 
  LIMIT 0, 30
"


... то запрос бы тоже был воспринят адекватно.

   
 
 автор: jelenad   (03.05.2009 в 23:10)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:02)
 

<head>
<title>Вывод данных из MySQL</title>
</head>
<body>
<h1>Вывод ранее сохраненных данных из таблицы MySQL</h1>

<table border="1" width="30%">    

<?php
error_reporting
(E_ALL);

     
// Соединяемся с базой данных
     
$hostname "localhost"// название/путь сервера, с MySQL
     
$username "root"// имя пользователя 
     
$password "qwerty"// пароль пользователя 
     
$dbName "book"// название базы данных
    

mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());

    
$sql "
       SELECT k.title, k.price, a.author_name,s.subsection_name,l.literature_language
       FROM kniga k
       LEFT JOIN author a ON k.author_id=a.author_id
       LEFT JOIN subsection s ON k.subsection_id=s.subsection_id
       LEFT JOIN language l ON k.language_id=l.language_id LIMIT 0, 30
         "
;
    
$res mysql_query($sql) or die(mysql_error());
   


mysql_close();

?> 
</table>

</body>
</html>



Итог: на экран ничего не выводится вообсше ничего

   
 
 автор: Trianon   (03.05.2009 в 23:13)   письмо автору
 
   для: jelenad   (03.05.2009 в 23:10)
 

 $res = mysql_query($sql) or die(mysql_error()); 


так вывода-то нет!

полученный Вами $res нужно еще вычерпать функцией mysql_fetch_assoc()
если очень грубо, то:
while($row = mysql_fetch_assoc($res))
{
    print_r($row);
    echo '<br>';
}

на самом деле, конечно , нужно разрисовать все эти <tr> и <td> и т.п.

   
 
 автор: jelenad   (03.05.2009 в 23:21)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:13)
 

<table border="1" width="30%">    

<?php
error_reporting
(E_ALL);

     
// Соединяемся с базой данных
     
$hostname "localhost"// название/путь сервера, с MySQL
     
$username "root"// имя пользователя 
     
$password "qwerty"// пароль пользователя 
     
$dbName "book"// название базы данных
    

mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
mysql_query("SET CHARACTER SET 'cp1251'");


    
$sql "
       SELECT k.title, k.price, a.author_name,s.subsection_name,l.literature_language
       FROM kniga k
       LEFT JOIN author a ON k.author_id=a.author_id
       LEFT JOIN subsection s ON k.subsection_id=s.subsection_id
       LEFT JOIN language l ON k.language_id=l.language_id LIMIT 0, 30
         "
;
     
$res mysql_query($sql) or die(mysql_error()); 
while(
$row mysql_fetch_assoc($res))
{
             echo 
" <tr> ";
             echo 
" <td>".$row['price']."</td>";
             echo 
" <td>".$row['title']."</td>";
             echo 
" <td>".$row['subsection_name']."</td>";
             echo 
" <td>".$row['literature_language']."</td>";

             echo 
"</tr>";

}

   


mysql_close();

?> 
</table>

   
 
 автор: Trianon   (03.05.2009 в 23:22)   письмо автору
 
   для: jelenad   (03.05.2009 в 23:21)
 

             echo "</tr>\r\n"; 


ну и таблице не хватает шапочки.

   
 
 автор: Trianon   (03.05.2009 в 23:26)   письмо автору
 
   для: jelenad   (03.05.2009 в 23:21)
 

И наконец, вот этот блок
<?php

     
// Соединяемся с базой данных
     
$hostname "localhost"// название/путь сервера, с MySQL
     
$username "root"// имя пользователя 
     
$password "qwerty"// пароль пользователя 
     
$dbName "book"// название базы данных
    

mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
mysql_query("SET CHARACTER SET 'cp1251'"); 
?>

принято выносить в отдельный файл, подключая его через require_once('connect.php');
Чтобы
а) не набирать двадцать раз в каждом скрипте
б) чтобы не светить серверы/логины/пароли/бд

   
 
 автор: jelenad   (03.05.2009 в 23:28)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:26)
 

в отдельный фаил??это как???

   
 
 автор: Trianon   (03.05.2009 в 23:31)   письмо автору
 
   для: jelenad   (03.05.2009 в 23:28)
 

<?php      //    connect.php

     // Соединяемся с базой данных
     
$hostname "localhost"// название/путь сервера, с MySQL
     
$username "root"// имя пользователя 
     
$password "qwerty"// пароль пользователя 
     
$dbName "book"// название базы данных
    

mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
unset(
$username); unset($password);

mysql_select_db($dbName) or die (mysql_error());
mysql_query("SET CHARACTER SET 'cp1251'"); 


?> 



books.php

<table border="1" width="30%">    

<?php
error_reporting
(E_ALL);
    
    require_once(
'connect.php'); // соединяемся с БД
    
    
$sql "
       SELECT k.title, k.price, a.author_name,s.subsection_name,l.literature_language
       FROM kniga k
       LEFT JOIN author a ON k.author_id=a.author_id
       LEFT JOIN subsection s ON k.subsection_id=s.subsection_id
       LEFT JOIN language l ON k.language_id=l.language_id LIMIT 0, 30
         "
;
     
$res mysql_query($sql) or die(mysql_error()); 
и т.д.

   
 
 автор: jelenad   (03.05.2009 в 23:35)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:31)
 

да да да уже догадалась и сделала.
а если я хочу тот же запрос сделать но к этим данным еще и выводить картинку "image"

    $sql = "
       SELECT k.title, k.price,k.image, a.author_name,s.subsection_name,l.literature_language
       FROM kniga k
       LEFT JOIN author a ON k.author_id=a.author_id
       LEFT JOIN subsection s ON k.subsection_id=s.subsection_id
       LEFT JOIN language l ON k.language_id=l.language_id LIMIT 0, 30
         ";
     $res = mysql_query($sql) or die(mysql_error()); 
while($row = mysql_fetch_assoc($res))
{
             echo " <tr> ";
             echo " <td>".$row['price']."</td>";
             echo " <td>".$row['title']."</td>";
             echo " <td>".$row['image']."</td>"
             echo " <td>".$row['subsection_name']."</td>";
             echo " <td>".$row['literature_language']."</td>";

               echo "</tr>\r\n"; 

}
так же не правильно будет

   
 
 автор: Trianon   (03.05.2009 в 23:39)   письмо автору
 
   для: jelenad   (03.05.2009 в 23:35)
 

В смыле? Почему неправильно?
А что там выводится?

   
 
 автор: jelenad   (03.05.2009 в 23:44)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:39)
 

пусто ничего не выводит вообсче

<head>
<title>Вывод данных из MySQL</title>
</head>
<body>
<h1>Вывод ранее сохраненных данных из таблицы MySQL</h1>

<table border="1" width="30%">    

<?php
error_reporting
(E_ALL);
    
    require_once(
'connect.php'); // соединяемся с БД     

mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
mysql_query("SET CHARACTER SET 'cp1251'");


     
$sql "
       SELECT k.title, k.price,k.image, a.author_name,s.subsection_name,l.literature_language
       FROM kniga k
       LEFT JOIN author a ON k.author_id=a.author_id
       LEFT JOIN subsection s ON k.subsection_id=s.subsection_id
       LEFT JOIN language l ON k.language_id=l.language_id LIMIT 0, 30
         "
;
     
$res mysql_query($sql) or die(mysql_error()); 
while(
$row mysql_fetch_assoc($res))
{
             echo 
" <tr> ";
             echo 
" <td>".$row['price']."</td>";
             echo 
" <td>".$row['title']."</td>";
             echo 
" <td>".$row['author_name']."</td>";
             echo 
" <td>".$row['image']."</td>"
             
echo " <td>".$row['subsection_name']."</td>";
             echo 
" <td>".$row['literature_language']."</td>";

               echo 
"</tr>\r\n"

}

   


mysql_close();

?> 
</table>

</body>
</html>

   
 
 автор: Trianon   (03.05.2009 в 23:46)   письмо автору
 
   для: jelenad   (03.05.2009 в 23:44)
 

а в PMA?
может в том столбике вообще данных нет?

   
 
 автор: jelenad   (03.05.2009 в 23:51)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:46)
 

phpmyadmin?
если нажать обзор таблицы kniga то там показывает что есть данные картинки [BLOB - 5Байт]

   
 
 автор: Trianon   (03.05.2009 в 23:53)   письмо автору
 
   для: jelenad   (03.05.2009 в 23:51)
 

Что значит "данные картинки" ?
Локальное имя файла?
Полный URI?
Битовый образ JPG-файла?

Ну в 5 байт ни одна картинка не полезет :))) Если хранится битовый образ.
А имя файла логичнее было бы хранить в поле varchar, а не BLOB

   
 
 автор: jelenad   (03.05.2009 в 23:57)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:53)
 

3.bmp

   
 
 автор: Trianon   (03.05.2009 в 23:59)   письмо автору
 
   для: jelenad   (03.05.2009 в 23:57)
 

то есть имя файла.
Одна беда
Файлы типа bmp на сайтах не показываются.
В интернете применяются файлы .gif (для рисованных картинок) и .jpg (для фотоизображений)
Реже - .png . И никакие другие.

А тип поля - да, имеет смысл поменять.
Размер рисунка можете оставить таким, какой нужен на экране.
255 - длина имени, а не размер самого рисунка.

   
 
 автор: jelenad   (04.05.2009 в 00:09)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:59)
 

я изменила рисунок- поставила другой в формате 1.jpg но не выводит не чего все равно

   
 
 автор: Trianon   (04.05.2009 в 00:11)   письмо автору
 
   для: jelenad   (04.05.2009 в 00:09)
 

приводите дамп таблицы.

если я правильно понимаю что у Вас там в ней, то
echo " <td>".$row['image']."</td>"
должно прям так и выводить 3.bmp

Но повторюсь, от этого типа файлов нужно перейти на gif или jpg

   
 
 автор: jelenad   (04.05.2009 в 00:16)   письмо автору
 
   для: Trianon   (04.05.2009 в 00:11)
 

INSERT INTO `kniga` (`kniga_id`, `title`, `price`, `description`, `image`, `author_id`, `publisher_id`, `language_id`, `subsection_id`) VALUES
(4, 'soroka boloboka', 2.90, 'netu', '1.jpg', 6, 3, 1, 5);



     $sql = "
       SELECT k.title, k.price,k.image, a.author_name,s.subsection_name,l.literature_language
       FROM kniga k
       LEFT JOIN author a ON k.author_id=a.author_id
       LEFT JOIN subsection s ON k.subsection_id=s.subsection_id
       LEFT JOIN language l ON k.language_id=l.language_id LIMIT 0, 30
         ";
     $res = mysql_query($sql) or die(mysql_error()); 
while($row = mysql_fetch_assoc($res))
{
             echo " <tr> ";
             echo " <td>".$row['price']."</td>";
             echo " <td>".$row['title']."</td>";
             echo " <td>".$row['author_name']."</td>";
             echo " <td>".$row['image']."</td>"
             echo " <td>".$row['subsection_name']."</td>";
             echo " <td>".$row['literature_language']."</td>";

               echo "</tr>\r\n"; 

}

всё я нашла ошибку не было поставлено ;

   
 
 автор: Trianon   (04.05.2009 в 00:22)   письмо автору
 
   для: jelenad   (04.05.2009 в 00:16)
 

остается поменять эту строку на
echo " <td><img src=\"" . $image_dir . $row['image'] . "\"></td>" ;

и добавить в начало строку
$image_dir = '/images/'; // здесь нужно будет вписать реальный путь от корня сайта к каталогу с изображениями. 

   
 
 автор: jelenad   (04.05.2009 в 00:29)   письмо автору
 
   для: Trianon   (04.05.2009 в 00:22)
 

заменила но в итоге вместо названия 1.jpg теперь что то вроде рисунка " какбудто картинка повреждена" может размер рисунка большой???
<head>
<title>Вывод данных из MySQL</title>
</head>
<body>
<h1>Вывод ранее сохраненных данных из таблицы MySQL</h1>

<table border="1" width="30%">    

<?php
error_reporting
(E_ALL);
    
    require_once(
'connect.php'); // соединяемся с БД
$image_dir 'C:\web\www\1.jpg';      

mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
mysql_query("SET CHARACTER SET 'cp1251'");


     
$sql "
       SELECT k.title, k.price,k.image, a.author_name,s.subsection_name,l.literature_language
       FROM kniga k
       LEFT JOIN author a ON k.author_id=a.author_id
       LEFT JOIN subsection s ON k.subsection_id=s.subsection_id
       LEFT JOIN language l ON k.language_id=l.language_id LIMIT 0, 30
         "
;
     
$res mysql_query($sql) or die(mysql_error()); 
while(
$row mysql_fetch_assoc($res))
{
             echo 
" <tr> ";
             echo 
" <td>".$row['price']."</td>";
             echo 
" <td>".$row['title']."</td>";
             echo 
" <td><img src=\"" $image_dir $row['image'] . "\"></td>" ;
             echo 
" <td>".$row['author_name']."</td>";
             echo 
" <td>".$row['subsection_name']."</td>";
             echo 
" <td>".$row['literature_language']."</td>";

               echo 
"</tr>\r\n"

}

   


mysql_close();

?> 
</table>

</body>
</html>

   
 
 автор: Trianon   (04.05.2009 в 00:30)   письмо автору
 
   для: jelenad   (04.05.2009 в 00:29)
 

открываем исх.код получившейся html-страницы и копируем сюда сгенерированный текст.

   
 
 автор: jelenad   (04.05.2009 в 00:34)   письмо автору
 
   для: Trianon   (04.05.2009 в 00:30)
 

не поняла???

   
 
 автор: Trianon   (04.05.2009 в 00:37)   письмо автору
 
   для: jelenad   (04.05.2009 в 00:34)
 

запускаете скрипт.
На любом месте открывшейся страницы с таблицей кликаете правой кнопкой мыши, выбираете пункт меню "исходный текст html-страницы" или как-то так. Зависит от браузера.
Смотрите сгенерированный html-код.

   
 
 автор: jelenad   (04.05.2009 в 00:42)   письмо автору
 
   для: Trianon   (04.05.2009 в 00:37)
 

<head>
<title>Вывод данных из MySQL</title>
</head>
<body>
<h1>Вывод ранее сохраненных данных из таблицы MySQL</h1>

<table border="1" width="30%">    

  <tr>  <td>2.90</td> 
<td>soroka boloboka</td> 
<td><img src="C:\web\www\1.jpg1.jpg"></td>
 <td>Николай Леонов</td> <td>Детская литература</td> 
<td>на русском языке</td></tr>

 
</table>

</body>
</html>

почему он выводит <td><img src[b]="C:\web\www\1.jpg1.jpg"></td>[/b]

   
 
 автор: Trianon   (04.05.2009 в 00:53)   письмо автору
 
   для: jelenad   (04.05.2009 в 00:42)
 

В переменной я попросил задать URL-путь от корня документов сервера, а не windows-путь от корня файловой системы.
Должно быть написано
$images_dir = "/"; 


Если конечно c:\web\www - это корень документов.
реальный корень документов можно посмотреть выведя echo $_SERVER['DOCUMENT_ROOT'];

   
 
 автор: jelenad   (04.05.2009 в 01:03)   письмо автору
 
   для: Trianon   (04.05.2009 в 00:53)
 

теперь работает
благодарю за помощь

   
 
 автор: jelenad   (04.05.2009 в 01:06)   письмо автору
 
   для: Trianon   (04.05.2009 в 00:53)
 

Если конечно c:\web\www - это корень документов.
реальный корень документов можно посмотреть выведя echo $_SERVER['DOCUMENT_ROOT'];
выводит что корень директории c:\web\www
но
я сделала как вы сказали
$images_dir = "/"; 

и всё работает

   
 
 автор: jelenad   (06.05.2009 в 12:04)   письмо автору
 
   для: Trianon   (04.05.2009 в 00:53)
 

Всё работало нормально
пока я не изменила данные
когда убераю
  echo " <tr> ";
       echo " <td><b>".Краткое описание."</b><td>";
       echo " <td>".$row['description']."</td>";
       echo "</tr>";

работает,а когда добавляю то не работает
не могу понять где ошибка???
<head>
<title>Вывод данных из MySQL</title>
</head>
<body>
<h1>Вывод ранее сохраненных данных из таблицы MySQL</h1>

<table border="1">    

<?php
error_reporting
(E_ALL);
    
    require_once(
'connect.php'); // соединяемся с БД
     

$image_dir '/'
mysql_connect($hostname$username$password) or die ("Не могу создать соединение");
mysql_select_db($dbName) or die (mysql_error());
mysql_query("SET CHARACTER SET 'cp1251'");


     
$sql "
              SELECT k.title, k.price,k.description,k.image, a.author_name,p.publisher_name
              FROM kniga k
              LEFT JOIN author a ON k.author_id=a.author_id
              LEFT JOIN publisher p ON k.publisher_id=p.publisher_id LIMIT 0, 30
           "
;

     
$res mysql_query($sql) or die(mysql_error());
 
while(
$row mysql_fetch_assoc($res))
  {

       echo 
" <tr> ";
       echo 
" <td><b>".Цена."</b><td>";
       echo 
" <td>".$row['price']."</td>";
       echo 
"</tr>";

       echo 
" <tr> ";
       echo 
" <td><b>".Название."</b><td>";
       echo 
" <td>".$row['title']."</td>";
       echo 
"</tr>";

       echo 
" <tr> ";
       echo 
" <td><b>".Автор."</b><td>";
       echo 
" <td>".$row['author_name']."</td>";
       echo 
"</tr>";

       echo 
" <tr> ";
       echo 
" <td><b>".Издательство."</b><td>";
       echo 
" <td>".$row['publisher_name']."</td>";
       echo 
"</tr>";

       echo 
" <tr> ";
       echo 
" <td><b>".Краткое описание."</b><td>";
       echo 
" <td>".$row['description']."</td>";
       echo 
"</tr>";


       echo 
" <tr > ";
       echo 
" <td ><img src=\"" $image_dir $row['image'] . "\"></td>" ;
       echo 
"</tr>";

   }
 
mysql_close();

?> 
</table>

</body>
</html>

   
 
 автор: Trianon   (06.05.2009 в 12:20)   письмо автору
 
   для: jelenad   (06.05.2009 в 12:04)
 

Что значит "не работает"?
Как выглядит сгенерипрованный код?

   
 
 автор: jelenad   (06.05.2009 в 12:21)   письмо автору
 
   для: Trianon   (06.05.2009 в 12:20)
 

да соединение работает

   
 
 автор: Trianon   (06.05.2009 в 12:25)   письмо автору
 
   для: jelenad   (06.05.2009 в 12:21)
 

для Вас должно быть так.

error_reporting(E_ALL|E_NOTICE) ;




 echo " <td><b>".Краткое описание."</b><td>"; 

Как понимать эту строку?

 echo 
        " <td><b>"   
        .
           Краткое описание
        .
        "</b><td>"; 

Что это за элемент такой синтаксический Краткое описание ?

   
 
 автор: jelenad   (06.05.2009 в 12:29)   письмо автору
 
   для: Trianon   (06.05.2009 в 12:25)
 

я исправила "Краткое описание" на "Описание" теперь работает

   
 
 автор: Trianon   (06.05.2009 в 12:30)   письмо автору
 
   для: jelenad   (06.05.2009 в 12:29)
 

А то что вокруг кавычки необходимо ставить - это даже в голову не пришло?!

   
 
 автор: jelenad   (06.05.2009 в 12:33)   письмо автору
 
   для: Trianon   (06.05.2009 в 12:30)
 

не поняла про кавычки???

   
 
 автор: Trianon   (06.05.2009 в 12:39)   письмо автору
 
   для: jelenad   (06.05.2009 в 12:33)
 

а я не понял про это
echo " <td><b>".Краткое описание."</b><td>";

   
 
 автор: Trianon   (06.05.2009 в 12:44)   письмо автору
 
   для: Trianon   (06.05.2009 в 12:39)
 

echo " <td><b>".Краткое описание."</b><td>";


echo " <td><b>"; 
echo Краткое описание;
echo "</b><td>";


почему тэги в кавычки взяты, а слова - нет?

   
 
 автор: jelenad   (06.05.2009 в 13:26)   письмо автору
 
   для: Trianon   (06.05.2009 в 12:44)
 

а я думала что под
этим

echo " <td><b>".Краткое описание."</b><td>"; 


понимается
echo " <td><b>;
echo "Краткое описание";
echo </b><td>";
а по правилам необходимо брать в кавычки???
echo " <td><b>"."Краткое описание"."</b><td>"; 

   
 
 автор: Trianon   (06.05.2009 в 14:11)   письмо автору
 
   для: jelenad   (06.05.2009 в 13:26)
 

>а по правилам необходимо брать в кавычки???
>
echo " <td><b>"."Краткое описание"."</b><td>"; 


Необходимо.
И php указал бы Вам на явную ерунду в синтаксисе, если бы Вы разрешили полный вывод диагностики.

   
 
 автор: jelenad   (06.05.2009 в 13:38)   письмо автору
 
   для: Trianon   (06.05.2009 в 12:44)
 

а можно сделать такой запрос или это неправильно??
 $sql = "
              SELECT k.title, k.price, k.description,k.image, a.author_name,p.publisher_name
              FROM kniga k
              where language_id=1 AND subsection_id=13 AND section_id=1;
              LEFT JOIN author a ON k.author_id=a.author_id
              LEFT JOIN publisher p ON k.publisher_id=p.publisher_id LIMIT 0, 30
           ";

   
 
 автор: Trianon   (06.05.2009 в 14:02)   письмо автору
 
   для: jelenad   (06.05.2009 в 13:38)
 

where language_id=1 AND subsection_id=13 AND section_id=1
должно следовать после табличного выражения и до LIMIT .

Если language_id=1 , subsection_id=13 , section_id=1 - подусловия соединенния таблиц - они должны быть указаны в выражениях ON (для соответствующих JOIN)

   
 
 автор: jelenad   (06.05.2009 в 15:07)   письмо автору
 
   для: Trianon   (06.05.2009 в 14:02)
 

 $sql = "
              SELECT k.title, k.price, k.description,k.image, a.author_name,p.publisher_name
              FROM kniga k
              
              LEFT JOIN author a ON k.author_id=a.author_id
              LEFT JOIN publisher p ON k.publisher_id=p.publisher_id
where language_id=1 AND subsection_id=13  LIMIT 0, 30
           ";

вот так?

   
 
 автор: Trianon   (06.05.2009 в 15:18)   письмо автору
 
   для: jelenad   (06.05.2009 в 15:07)
 

Если закрыть глаза на оформление - так.

   
 
 автор: jelenad   (06.05.2009 в 15:28)   письмо автору
 
   для: Trianon   (06.05.2009 в 15:18)
 

а если не закрывать глаза на оформление???что не правильно???

   
 
 автор: jelenad   (06.05.2009 в 12:23)   письмо автору
 
   для: Trianon   (06.05.2009 в 12:20)
 

на экране нет ничего он пустой

   
 
 автор: jelenad   (04.05.2009 в 00:19)   письмо автору
 
   для: Trianon   (04.05.2009 в 00:11)
 

а как сделать чтобы вместо 1.jpg отображалась сама картинка??? или так не делается?

   
 
 автор: jelenad   (03.05.2009 в 23:58)   письмо автору
 
   для: Trianon   (03.05.2009 в 23:53)
 

тоесть мне заменить BLOB на varchar(255) и сделать размер рисунка поменьше???

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования