Здравствуйте!
У меня картинки выгружаются из БД с помощью следующего скрипта:
<?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 какая-то ошибка! Вместо картинки выводится ерунда. В чём дело?
Хоть и давний пост, но все ж отвечу.
Дело в том, что header("Content-type:image/jpeg"); задает mime-тип для всего потока, генерируемого php. В данном случае поток это html-код, что в принципе неверно для данного типа.
если в поле photo в базе хранится лишь ссылка на картинку, то правильнее было бы написать так:
А вообще говоря, хранить картники в MySQL не надо
Согласен, но все ж таки встречаются некоторые маргиналы, которые любят все пихать в БД, независимо от того насколько хорошо эта бд с таким типом данных работает.
zeroku, бесполезно. Проще расстрелять на месте.
Профи помогите чайнику у меня БД. при поиске появляется так:
картинка название
картинка название
нужно сделать чтобы при нажатии на картинку открывалась другая страница с этой же картинкой и ее описанием.
БД уже готово осталось только написать запрос.
Вот код страницы которая должна выбрать нужную картинку, на которыю я клацаю:
<?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 ...>>> помогите какой скрипт нужен для этого.
список ссылок на картинки у тебя должен выглядеть приблизительно так
<a href="showpicture.php?name=picture1">picture1</a>
...
<a href="showpicture.php?name=pictureN">pictureN</a>
по ссылке открывается файл showpicture.php (т.е. тот код, который ты привел)
а вот чтобы получить ?name=picture1 нужно в php написать следующее
$name = $_GET['name'];
СПАСИБО а что на счет навигаторов?
приблизительно так:
страницы <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");
.... далее по вкусу =)
спасибо щас попробую
Это сново я. Я наверно покажусь полным чайником но у меня ничего не получается может вы мне подредактируете прямо в скрипте сам код а?
Начальный код 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();
?>
Ничего страшного, все мы были новичками.
--- 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 создаешь изображения и/или выводишь их.
вообще я 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();
?>
пасибо тебе 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");
--- ---
это не работает или я не допер как оно работает.
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");
это не работает я не понимаю почему помоги а?
Кто нибудь помогите доделать скрипт. Открывается страничка внизу номера других страничек 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();
?>
тема постраничного вывода уже затрагивалась на форуме http://www.wincity.ru/index.php?showtopic=10413&hl=%EF%EE%F1%F2%F0%E0%ED%E8%F7%ED%FB%E9%2B%E2%FB%E2%EE%E4, там вроде толково объяснили.
Спасибо я нашел эту тему у меня уже другая проблеиа. В этой частью скрипта я выбираю строчку из таблицы. Как мне сделать чтобы выбирать из нескольких таблиц. Помогите начинающему Плиз.
if ( !isset($_GET["name"]) || !$_GET["name"]) die('Ошибка: не передано название картинки');
$name = mysql_escape_string($_GET["name"]);
$result = mysql_query("select * from dop WHERE name = '$name'");
Что значит из нескольких таблиц?
расскажи подробнее. заодно приведи структуру таблиц
У меня 5 таблиц 1,2,3,4,5 в них одинаковые названия столбцов photo, name, isbn, price.
Делаю поиск, выходит результат:
картинка название
картинка название
картинка название
картинка название
я нажимаю на картинку, открывается та же катртинка с ее описанием.
Мне надо выбрать 1 название из нескольких таблиц. код я приводил выше. из 1 таблицы выбирается а другие не могу подключить.
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'
а вообще нет смысла использовать несколько таблиц одинакового содержания. Но это уже совсем другая история.
Спасибо а в 1 таблицу я не могу у меня выборка по котегориям идет
можешь =) если почитаешь теорию БД
А можно еще вопросик? )
У меня при поиске появляется результат из нескольких строк я сделал листалку. но при нажатии на другую страничку появляется ошибка что данные для поиска пусты. на других страничках где я просто показываю картинки из котегорий листалка работает нормально но при поиске глючит. вот код:
Естественно, ведь при переходе на новую страницу php работает "с чистого листа". т.е. не помнит переменных $searchtable, $searchtype, $searchterm.
Значит встает задача их как-то сохранить.
Как вариант использовать сессии:
------------------------------------------------------------
Спасибо все работает. почитаю как нибудь
Это сново я. решил воспользоваться подсказкой перенести все данные в 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
НУ помогите со скриптом, который выше плиз.
выводит все без индекса id.
id = $id не проверяет почемуто
а может у меня ошибка в самой базе?
Проверь правильно ли у тебя заполнено поле id в таблице kotgoods (т.е. соответствуют ли значения поля значениям поля id из таблицы kot).
ещё можно проверить правильность SQL-запроса:
проверил в sql все соответствует но при запросе ничего не выводит
попробуй так:
может я не так переменную указал?
$id=$_POST['id'];
string(57) "SELECT * FROM kotgoods WHERE id = AND name LIKE '%1%' "
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in D:\localhost\www\result.php on line 129
это?
именно.
В данном случае видно, что в переменную $id ничего не присвоилось.
Почему, сказать не могу.
можно ещё посмотреть что в $_POST вообще записалось:
var_dump($_POST);
и че же мне делать?
вот то что в $_POST
string(57) "SELECT * FROM kotgoods WHERE id = AND name LIKE '%1%' " array(3) { ["searchtable"]=> string(3) "new" ["searchtype"]=> string(4) "name" ["searchterm"]=> string(1) "1" }
Что делать? Для начала учить HTML!!!!
элемент SELECT должен иметь закрывающий тэг
Там тебе повезло, сработало.
а здесь из-за незакрытых тегов не работает.
УЧИ МАТЧАСТЬ!
P.S. http://stepbystep.htmlbook.ru/
это тот же стрипт поиска я его редактирую
Помогите пожалуста. Кнопка добавить работает, все добавляется, а удалить не работает.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)