|
Выгрузка картинок в MySQL
|
|
|
|
fcbarcelona |
Суббота, 28 Апреля 2007, 19:39
|
Участник
Профиль
Группа: Гость форума
Сообщений: 3
Регистрация: 22.12.2006
Пользователь №: 13408
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Здравствуйте! У меня картинки выгружаются из БД с помощью следующего скрипта:
<?php $link=mysql_connect("localhost","root",""); mysql_select_db("artistsandpictures",$link); $sql="SELECT name,photo,prim FROM artists"; $result=@mysql_query($sql,$link); header("Content-type:image/jpeg");
if (mysql_num_rows($result)>0) { echo "<div align=\"center\">"; echo "<h2>Ранее загруженные файлы</h2>"; for ($i=0;$i<mysql_num_rows($result);$i++) { echo "<hr width=\"400\">"; echo "<table border=\"1\" width=\"300\"><tr><td>"; echo mysql_result($result,$i,'name'); echo "</td></tr><tr><td>"; echo mysql_result($result,$i,'artists.photo'); echo "</td></tr><tr><td>"; echo mysql_result($result,$i,'prim'); echo "</td></tr>"; echo "</table>"; echo "</div>"; } } else {echo "<h2>В базе данных файлы отсутствуют</h2>"; } ?>
Однако в header какая-то ошибка! Вместо картинки выводится ерунда. В чём дело?
|
|
|
|
|
Ekho |
Вторник, 17 Июля 2007, 10:29
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
Хоть и давний пост, но все ж отвечу. Дело в том, что header("Content-type:image/jpeg"); задает mime-тип для всего потока, генерируемого php. В данном случае поток это html-код, что в принципе неверно для данного типа. если в поле photo в базе хранится лишь ссылка на картинку, то правильнее было бы написать так: Код ... if (mysql_num_rows($result)>0) { echo "<div align=\"center\">"; echo "<h2>Ранее загруженные файлы</h2>"; while ($row=mysql_fetch_assoc($result)) { echo <<<HTML <hr width="400"> <table border="1" width="300"> <tr><td>$row[name]</td></tr> <tr><td><img src="$row[photo]"></td></tr> <tr><td>$row[prim]</td></tr> </table> </div> HTML; } } else { echo "<h2>В базе данных файлы отсутствуют</h2>"; } ...
Если же в базе в поле photo хранится бинарное содержимое картинки, то потребуется два скрипта: один будет выводить html-код, а другой (photo.php) - картинки. Код ... if (mysql_num_rows($result)>0) { echo "<div align=\"center\">"; echo "<h2>Ранее загруженные файлы</h2>"; while ($row=mysql_fetch_assoc($result)) { echo <<<HTML <hr width="400"> <table border="1" width="300"> <tr><td>$row[name]</td></tr> <tr><td><img src="photo.php?id=$row[id]"></td></tr> <tr><td>$row[prim]</td></tr> </table> </div> HTML; } } else { echo "<h2>В базе данных файлы отсутствуют</h2>"; } ...
photo.php : Код $link=mysql_connect("localhost","root",""); mysql_select_db("artistsandpictures",$link); $sql="SELECT photo FROM artists WHERE id=".$_GET['id']; $result=@mysql_query($sql,$link);
if ($row=mysql_fetch_assoc($result) ) { header("Content-type:image/jpeg"); echo $row['photo']; } else { header("HTTP/1.0 404 Not Found"); }
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
pan |
Четверг, 19 Июля 2007, 15:26
|
Участник
Профиль
Группа: WinCity Team
Сообщений: 2101
Регистрация: 11.11.2001
Из: крепость Владивосток
Пользователь №: 653
Конфигурация
Корпус: -- Процессор: Другой Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
А вообще говоря, хранить картники в MySQL не надо
|
|
|
|
|
Ekho |
Понедельник, 23 Июля 2007, 11:35
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
Согласен, но все ж таки встречаются некоторые маргиналы, которые любят все пихать в БД, независимо от того насколько хорошо эта бд с таким типом данных работает.
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
zeroku |
Понедельник, 23 Июля 2007, 15:46
|
Добрый монстр
Профиль
Группа: WinCity Team
Сообщений: 1076
Регистрация: 06.06.2002
Из: г. Москва
Пользователь №: 2365
Конфигурация
Корпус: -- Процессор: Другой Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Цитата(Ekho @ Понедельник, 23 Июля 2007, 8:35) Согласен, но все ж таки встречаются некоторые маргиналы, которые любят все пихать в БД, независимо от того насколько хорошо эта бд с таким типом данных работает. значит надо объяснить им все ЗА и ПРОТИВ этого метода... чтобы больше так не любили-)
--------------------
С уважением, Сергей
|
|
|
|
|
pan |
Среда, 25 Июля 2007, 10:19
|
Участник
Профиль
Группа: WinCity Team
Сообщений: 2101
Регистрация: 11.11.2001
Из: крепость Владивосток
Пользователь №: 653
Конфигурация
Корпус: -- Процессор: Другой Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
zeroku, бесполезно. Проще расстрелять на месте.
|
|
|
|
|
zeroku |
Среда, 25 Июля 2007, 11:44
|
Добрый монстр
Профиль
Группа: WinCity Team
Сообщений: 1076
Регистрация: 06.06.2002
Из: г. Москва
Пользователь №: 2365
Конфигурация
Корпус: -- Процессор: Другой Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Цитата(GeizeR @ Среда, 25 Июля 2007, 7:19) zeroku, бесполезно. Проще расстрелять на месте. уж вот такая вот профессия, Сань... у каждого есть свои проблемы-)
--------------------
С уважением, Сергей
|
|
|
|
|
AlexKus |
Пятница, 07 Марта 2008, 10:09
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Профи помогите чайнику у меня БД. при поиске появляется так: картинка название картинка название нужно сделать чтобы при нажатии на картинку открывалась другая страница с этой же картинкой и ее описанием. БД уже готово осталось только написать запрос.
Вот код страницы которая должна выбрать нужную картинку, на которыю я клацаю:
<?php mysql_connect('localhost', 'root','test'); mysql_select_db('goods'); mysql_query("SET NAMES cp1251"); if (mysql_errno()) { echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.'; exit; } $name='name'; $q = mysql_query("select * from dop WHERE name = \"".mysql_escape_string($name)."\""); header("Content-type:image/jpeg"); $i=0; while ($row = mysql_fetch_row($q)) { echo "<div align=\"center\">"; echo <<<HTML <table width="500" id="table3" height="100"> <tr> <td width="180" rowspan="3" valign="middle"><img src="$row[0]"></a></td> <td><p><strong>Название: $row[2]</td> </tr> <tr> <td></strong>ISBN: $row[1]</td> </tr> <tr> <td>Цена руб: $row[3]</td> <hr></tr> </table> HTML; echo '</p>'; $i=$i+1; } echo '<p>Найдено товара: '.$i.'</p>'; mysql_close(); ?> Вопрос переменную $name с чем нужно сравнить чтобы выбиралась нужная картинка. Если я вписываю имя одной картинки то при кликании на любую открывается та которую я вписал $name='имя картинки'; Помогите плизз.
и еще в результате поиска БД выкидывает 60 -70 картинок с описанием на 1 страницу хотелось бы сделать навигатор <<< 1 2 3 ...>>> помогите какой скрипт нужен для этого.
|
|
|
|
|
Ekho |
Пятница, 07 Марта 2008, 10:55
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
список ссылок на картинки у тебя должен выглядеть приблизительно так <a href="showpicture.php?name=picture1">picture1</a> ... <a href="showpicture.php?name=pictureN">pictureN</a>
по ссылке открывается файл showpicture.php (т.е. тот код, который ты привел)
а вот чтобы получить ?name=picture1 нужно в php написать следующее
$name = $_GET['name'];
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
AlexKus |
Пятница, 07 Марта 2008, 22:35
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
СПАСИБО а что на счет навигаторов?
|
|
|
|
|
Ekho |
Пятница, 07 Марта 2008, 23:01
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
приблизительно так: страницы <a href="pictureindex.php?page=1">1</a> <a href="pictureindex.php?page=2">2</a> ... <a href="pictureindex.php?page=N">N</a>
в pictureindex.php
$imagesperpage = 20; // картинок на страницу
$page = isset($_GET['page'] ? $_GET['page'] : '0' ); // если page не передан, то считаем, что выводится 1ая страница
if (!ctype_digit($page)) $page = 0; // на всякий случай проверяем чтобы передали нам только цифирки
$offset = $page * $imagesperpage; // с какой картинки начиная будем выводить
$result = mysql_query("SELECT * FROM pictures LIMIT $imagesperpage,$offset");
.... далее по вкусу =)
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
AlexKus |
Пятница, 07 Марта 2008, 23:08
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
спасибо щас попробую
|
|
|
|
|
AlexKus |
Пятница, 07 Марта 2008, 23:20
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Это сново я. Я наверно покажусь полным чайником но у меня ничего не получается может вы мне подредактируете прямо в скрипте сам код а? Начальный код dop.php
<?php
mysql_connect('localhost', 'root','test'); mysql_select_db('goods');
mysql_query("SET NAMES cp1251");
if (mysql_errno()) { echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку
позже.'; exit; }
$result=mysql_query("select * from dop"); header("Content-type:image/jpeg");
$i=0; while ($row = mysql_fetch_row($result)) { echo "<div align=\"center\">"; echo <<<HTML
<table width="500" id="table3" height="100"> <tr> <td width="180" rowspan="3" valign="middle"><img src="$row[0]"></td> <td><p><strong><a href="showpicture.php?name=$row[2]">$row[2]</a></td> </tr> <tr> <td></strong>ISBN: $row[1]</td> </tr> <tr> <td>Цена руб: $row[3]</td> <hr></tr> </table> HTML; echo '</p>'; $i=$i+1; } echo '<p>Найдено товара: '.$i.'</p>';
mysql_close();
?>
конечный код showpicture.php
<?php
mysql_connect('localhost', 'root','test'); mysql_select_db('goods');
mysql_query("SET NAMES cp1251");
if (mysql_errno()) { echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку
позже.'; exit; }
$name = $_GET["name"];
$imagesperpage = 20;
$page = isset($_GET['name'] ? $_GET['name'] : '0' ); if (!ctype_digit($page)) $page = 0;
$offset = $name * $imagesperpage;
$result = mysql_query("SELECT * FROM dop LIMIT $imagesperpage,$offset");
$q = mysql_query("select * from dop WHERE name = '$name'"); header("Content-type:image/jpeg"); $i=0; while ($row = mysql_fetch_row($q)) { echo "<div align=\"center\">"; echo <<<HTML <table width="500" id="table3" height="100"> <tr> <td width="180" rowspan="3" valign="middle"><img src="$row[0]"></a></td> <td><p><strong>Название: $row[2]</td> </tr> <tr> <td></strong>ISBN: $row[1]</td> </tr> <tr> <td>Цена руб: $row[3]</td> <hr></tr> </table> HTML; echo '</p>'; $i=$i+1; } echo '<p>Найдено товара: '.$i.'</p>'; mysql_close(); ?>
|
|
|
|
|
Ekho |
Суббота, 08 Марта 2008, 18:00
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
Ничего страшного, все мы были новичками.
--- dop.php --- $result=mysql_query("select * from dop"); - заменить на $imagesperpage = 20; $page = isset($_GET['name'] ? $_GET['name'] : '0' ); if (!ctype_digit($page)) $page = 0; $offset = $name * $imagesperpage; $result = mysql_query("SELECT * FROM dop LIMIT $imagesperpage,$offset"); --- ---
--- showpicture.php --- - убрать нафиг $imagesperpage = 20;
$page = isset($_GET['name'] ? $_GET['name'] : '0' ); if (!ctype_digit($page)) $page = 0;
$offset = $name * $imagesperpage;
$result = mysql_query("SELECT * FROM dop LIMIT $imagesperpage,$offset"); --- ---
и кстати, header("Content-type:image/jpeg"); н в одном из этих двух файлов не нужно, оно нужно только в том слуае, если ты непосредственно в php создаешь изображения и/или выводишь их.
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
Ekho |
Суббота, 08 Марта 2008, 18:23
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
вообще я showpicture.php сделал так
<?php
mysql_connect('localhost', 'root','test') OR die('Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.');
mysql_select_db('goods') OR die ('Ошибка: Нет доступа к базе данных');
mysql_query("SET NAMES cp1251");
if ( !isset($_GET["name"]) || !$_GET["name"]) die('Ошибка: не передано название картинки');
$name = mysql_escape_string($_GET["name"]);
$result = mysql_query("select * from dop WHERE name = '$name'"); if ($row = mysql_fetch_row($result)) { echo "<div align=\"center\">"; echo <<<HTML <table width="500" id="table3" height="100"> <tr><td><strong>Название: $row[2]</strong></td></tr> <tr><td width="180" rowspan="3" valign="middle"><img src="$row[0]"></a></td></tr> <tr><td>ISBN: $row[1]</td></tr> <tr><td>Цена руб: $row[3]</td></tr> </table> HTML; echo '</div>'; } else { echo "<p>Картинка '$name' не найдена</p>"; } mysql_close(); ?>
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
AlexKus |
Суббота, 08 Марта 2008, 23:37
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
пасибо тебе Ekho ты сдвинул этот камень ссылка открывает то что надо, но --- dop.php --- $result=mysql_query("select * from dop"); - заменить на $imagesperpage = 20; $page = isset($_GET['name'] ? $_GET['name'] : '0' ); if (!ctype_digit($page)) $page = 0; $offset = $name * $imagesperpage; $result = mysql_query("SELECT * FROM dop LIMIT $imagesperpage,$offset"); --- --- это не работает или я не допер как оно работает.
|
|
|
|
|
AlexKus |
Понедельник, 10 Марта 2008, 11:11
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Ekho помоги пожалуста еще $imagesperpage = 2; // картинок на страницу
$page = isset($_GET['name'] ? $_GET['name'] : '0' ); if (!ctype_digit($page)) $page = 0; $offset = $page * $imagesperpage; $result = mysql_query("SELECT * FROM zerkalo_vlag limit $imagesperpage, $offset"); это не работает я не понимаю почему помоги а?
|
|
|
|
|
AlexKus |
Среда, 12 Марта 2008, 21:27
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Кто нибудь помогите доделать скрипт. Открывается страничка внизу номера других страничек 12345... При нажатии на любую цифру открывается толь первая страничка вот скрипт
<?php mysql_connect('localhost', 'root','test'); mysql_select_db('goods'); mysql_query("SET NAMES cp1251"); if (mysql_errno()) { echo 'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.'; exit; }
$on_page = 2; //количество на одну страницу if($page<0 || $page == "") $page = 0; //проверяем переменную
$res = mysql_query("SELECT count(*) as cnt FROM zerkalo_vlag");// $res = mysql_fetch_array($res); // определяем общее количество элементов $res = $res['cnt']; //
//строим панельку с номерами страниц $txt = '<table><tr>'; if($page>0) $txt .= '<td><a href="?name='.($page-1).'" </td>'; $set_page = round($res/$on_page); for($i = 1; $i <= $set_page; $i++) $txt .= '<td><a href="?page='.$i.'">'.$i.'</a> </td>'; if($page<round($res/$on_page)) $txt .= '<td><a href="?page='.($page+1).'"</td>'; $txt .= '</table>';
$offset = $page * $on_page; $result = mysql_query("SELECT * FROM zerkalo_vlag LIMIT $offset, $on_page"); echo "<div align=\"center\">"; echo $txt;
while ($row = mysql_fetch_row($result)) {
echo <<<HTML
<table width="400" id="table3" height="100"> <tr> <td width="180" rowspan="3" valign="middle"><img src="$row[0]"></td> <td><p><strong>Название: $row[2]</td> </tr> <tr> <td></strong>ISBN: $row[1]</td> </tr> <tr> <td>Цена руб: $row[3]</td> <hr></tr> </table> HTML; echo '</p>'; } echo $txt; echo '<p>Найдено товара: '.$res.'</p>'; mysql_close(); ?>
|
|
|
|
|
BillyBoom |
Четверг, 13 Марта 2008, 17:52
|
Пиксельный маньяк
Профиль
Группа: WinCity Personal
Сообщений: 182
Регистрация: 06.03.2004
Из: Almaty
Пользователь №: 6653
Конфигурация
Корпус: -- Процессор: Другой Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
тема постраничного вывода уже затрагивалась на форуме тут, там вроде толково объяснили.
--------------------
кто ищет тот всегда найдёт
|
|
|
|
|
AlexKus |
Пятница, 14 Марта 2008, 9:16
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Спасибо я нашел эту тему у меня уже другая проблеиа. В этой частью скрипта я выбираю строчку из таблицы. Как мне сделать чтобы выбирать из нескольких таблиц. Помогите начинающему Плиз.
if ( !isset($_GET["name"]) || !$_GET["name"]) die('Ошибка: не передано название картинки'); $name = mysql_escape_string($_GET["name"]); $result = mysql_query("select * from dop WHERE name = '$name'");
|
|
|
|
|
Ekho |
Пятница, 14 Марта 2008, 12:21
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
Что значит из нескольких таблиц?
расскажи подробнее. заодно приведи структуру таблиц
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
AlexKus |
Суббота, 15 Марта 2008, 17:05
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
У меня 5 таблиц 1,2,3,4,5 в них одинаковые названия столбцов photo, name, isbn, price. Делаю поиск, выходит результат: картинка название картинка название картинка название картинка название я нажимаю на картинку, открывается та же катртинка с ее описанием. Мне надо выбрать 1 название из нескольких таблиц. код я приводил выше. из 1 таблицы выбирается а другие не могу подключить.
|
|
|
|
|
Ekho |
Суббота, 15 Марта 2008, 21:43
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
SELECT * FROM table1 WHERE name = '$name' UNION SELECT * FROM table2 WHERE name = '$name' UNION SELECT * FROM table3 WHERE name = '$name' UNION SELECT * FROM table4 WHERE name = '$name' UNION SELECT * FROM table5 WHERE name = '$name'
а вообще нет смысла использовать несколько таблиц одинакового содержания. Но это уже совсем другая история.
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
AlexKus |
Суббота, 15 Марта 2008, 22:07
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Спасибо а в 1 таблицу я не могу у меня выборка по котегориям идет
|
|
|
|
|
Ekho |
Воскресенье, 16 Марта 2008, 0:19
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
можешь =) если почитаешь теорию БД
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
AlexKus |
Воскресенье, 16 Марта 2008, 22:09
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
А можно еще вопросик? ) У меня при поиске появляется результат из нескольких строк я сделал листалку. но при нажатии на другую страничку появляется ошибка что данные для поиска пусты. на других страничках где я просто показываю картинки из котегорий листалка работает нормально но при поиске глючит. вот код: Код <?php $searchtable=$_POST['searchtable'];
$searchtype=$_POST['searchtype']; $searchterm=$_POST['searchterm'];
$searchterm= trim($searchterm);
if (!$searchtype || !$searchterm) { echo 'Вы не ввели параметры поиска. Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.'; exit; } if (!get_magic_quotes_gpc()) { $searchtype = addslashes($searchtype); $searchterm = addslashes($searchterm); }
require_once './php/conf.php';
if(!mysql_connect($_conf[mysql_host],$_conf[mysql_user],$_conf[mysql_passwd])){ die('Не удалось установить соединение с MySQL!'); }
if(!mysql_select_db($_conf[mysql_dbname])){ die('База данных не найдена!'); } $nums = 5; //количество на одну страницу
if (isset($_GET['page'])) { $page = intval($_GET['page']); } else { $page = 1; } //проверяем переменную
$query = "SELECT COUNT(*) AS `counter` FROM ".$searchtable.""; $sql = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_assoc($sql);
$elements = $row['counter'];
$pages = ceil($elements/$nums);
if ($page < 1) { $page = 1; } elseif ($page > $pages) { $page = $pages; }
$start = ($page-1)*$nums;
// когда у нас в таблице нет записей if ($start < 0) $start = 0; $query="select * from ".$searchtable." where ".$searchtype." like '%".$searchterm."%' LIMIT {$start}, {$nums}"; $sql = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_row($sql)) { echo "<div align=\"center\">"; echo <<<HTML
<table width="400" id="table3" height="100"> <tr> <td width="180" rowspan="3" valign="middle"><a href="showpicture.php?name=$row[2]"><img
src="$row[0]"></a></td> <td><p><strong><a href="showpicture.php?name=$row[2]">Название: $row[2]</a></td> </tr> <tr> <td></strong>ISBN: $row[1]</td> </tr> <tr> <td>Цена руб: $row[3]</td> <hr></tr> </table> HTML; echo '</p>'; }
// далее нам надо прицепить листалку
$neighbours = 6; $left_neighbour = $page - $neighbours; if ($left_neighbour < 1) $left_neighbour = 1;
$right_neighbour = $page + $neighbours; if ($right_neighbour > $pages) $right_neighbour = $pages;
if ($page > 1) { print ' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '"><сюда</a> '; }
for ($i=$left_neighbour; $i<=$right_neighbour; $i++) { if ($i != $page) { print ' <a href="?page=' . $i . '">' . $i . '</a> '; } else { // выбранная страница print ' <b>' . $i . '</b> '; } }
if ($page < $pages) { print ' <a href="?page=' . ($page+1) . '">туда></a> ... <a href="?page=' . $pages . '">конец</a> '; }
echo '<p>Найдено товара: '.$elements.'</center></p>'; mysql_close();
?>
|
|
|
|
|
Ekho |
Понедельник, 17 Марта 2008, 1:28
|
Veloman...
Профиль
Группа: WinCity Team
Сообщений: 1627
Регистрация: 22.02.2001
Из: Russia, Moscow
Пользователь №: 32
Конфигурация
Корпус: HP Compaq 8510w Процессор: Core2 Duo/Extreme Материнская плата: на чипсете Intel 945PM Оперативная память: 3 GB DDR667 Видеокарта: -- Жесткий диск (винчестер): 120GB 7200rpm Дисковод: Нет дисковода CD/DVD: DVD+-RW (DoubleLayer) Модем: внутренний Сетевой адаптер: Onboard гигабитный, Wi-Fi Intel Звуковая плата: не помню Монитор: 15 (1920x1200) Операционная система: Windows XP Pro Rus Прочее: Asus WL600g
|
Естественно, ведь при переходе на новую страницу php работает "с чистого листа". т.е. не помнит переменных $searchtable, $searchtype, $searchterm. Значит встает задача их как-то сохранить. Как вариант использовать сессии: ------------------------------------------------------------ Код $searchtable=$_POST['searchtable']; $searchtype=$_POST['searchtype']; $searchterm=$_POST['searchterm'];
$searchterm= trim($searchterm);
if (!$searchtype || !$searchterm) { echo 'Вы не ввели параметры поиска. Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.'; exit; } --- Заменить на: ----------------------------------------- Код if ( isset($_POST['searchtable']) ) { $_SESSION['searchtable'] = $searchtable = $_POST['searchtable']; $_SESSION['searchtype'] = $searchtype = $_POST['searchtype']; $_SESSION['searchterm'] = $searchterm = trim($_POST['searchterm']); } elseif ( isset($_SESSION['searchtable']) ) { $searchtable = $_SESSION['searchtable']; $searchtype = $_SESSION['searchtype']; $searchterm = $_SESSION['searchterm']; } else { $searchtable = false; $searchtype = false; $searchterm = false; }
if (!$searchtype || !$searchterm) { echo 'Вы не ввели параметры поиска. Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.'; exit; }
------------------------------------------------------- а вообще для начала загляни сюда: http://www.php.net/manual/ru/language.vari....predefined.php
--------------------
И эхо привычно отозвалось: "Мать-мать-мать..."
|
|
|
|
|
AlexKus |
Понедельник, 17 Марта 2008, 9:03
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Спасибо все работает. почитаю как нибудь
|
|
|
|
|
AlexKus |
Понедельник, 17 Марта 2008, 16:13
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Это сново я. решил воспользоваться подсказкой перенести все данные в 1 таблицу получилось так CREATE TABLE kotgoods ( id int unsigned not null, photo char(100) not null, ISBN char(13) not null primary key, name char(50) not null, price float(6,2), memo text not null); получилась такая табл id ... ... ... 1 ... ... ... 1 ... ... ... 2 ... ... 2 ... ... .. нужно сделать поиск по котегориям помогите кто-нибудь код search.php Код <form action="result.php" method=post> <font size="2">Выберите:</font><br /> <select name="id"> <option value="1"> Новинки</option> <option value="2"> Корпусная</option> <option value="3"> Из стекла</option> <option value="4"> Зеркала влагостойкие</option> <option value="5"> Зеркала в багете</option> <option value="6"> Дополнительно</option></select> <p> <font size="2">Выберите группу поиска:</font><br /> <select name="searchtype"> <option value="name"> По названию</option> <option value="ISBN"> По ISBN</option> <option value="price"> По цене</option></select> <p><font size="2">Введите информацию для поиска:</font><br /> <input name="searchterm" type="text" size="20"> <br /> <input type="submit" value="Найти"></p></form> код result.php Код <?php $id=$_POST['id']; $searchtype=$_POST['searchtype']; $searchterm=$_POST['searchterm'];
$searchterm= trim($searchterm);
if (!$searchtype || !$searchterm ) { echo 'Вы не ввели параметры поиска. Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.'; exit; } if (!get_magic_quotes_gpc()) { $searchtype = addslashes($searchtype); $searchterm = addslashes($searchterm); $id = addslashes($id); }
if(!mysql_connect($_conf[mysql_host],$_conf[mysql_user],$_conf[mysql_passwd])){ die('Не удалось установить соединение с MySQL!'); }
if(!mysql_select_db($_conf[mysql_dbname])){ die('База данных не найдена!'); } $result=mysql_query("select * from kotgoods where id = ?? ".$searchtype." like '%".$searchterm."%' "); ... ?>
|
|
|
|
|
AlexKus |
Суббота, 12 Апреля 2008, 9:40
|
Участник
Профиль
Группа: Участник
Сообщений: 23
Регистрация: 07.03.2008
Пользователь №: 22246
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
НУ помогите со скриптом, который выше плиз.
Сообщение отредактировал AlexKus - Суббота, 12 Апреля 2008, 9:41
|
|
|
|
|
|
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
|
0 Пользователей:
|
|
© Copyright by WinCity.Ru 2001 - 2008 | Обратная связьУслуги веб-хостинга предоставлены компанией MTW.RU
|
|