|
|
|
| Суть проблемы такова. Есть БД куда заносятся картинки пользовательские через blob. И так же потом вытаскиваются. Так вот помещаются они туда замечательно а когда начинаешь их вытаскивать
include "inc/config.php";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
$sql="SELECT small_pic FROM 'foto' WHERE 1 ORDER BY 'id' ASC";
$result = mysql_db_query($dbname,$sql);
while($row = mysql_fetch_row($result)) {
header("Content-type: image/jpeg");
echo $a = base64_decode($row[0]);
echo $a = base64_decode($row[1]);
echo $a = base64_decode($row[2]);
echo $a = base64_decode($row[3]);
......
php говорит что $row[1] $row[2] $row[3] и тд не существует. Просто не ГРУЗЯТСЯ. Зато $row[0] грузиться. Захожу в базу там все заечательно все лежит как должно и быть | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 13:37)
| | SELECT small_pic FROM
Вы вытаскиваете только small_pic
Он-то и попадает в row[0]
Между прочим 5 картинок таким способом отобразить не удастся.
Один вызов - один документ. | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 13:41)
| | нет small_pic содержит в себе еще до матери картинок | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 13:37)
| | у меня не получается вывестит все остальные row[1] row[2] и тд. | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 13:44)
| | В любом случае, одно поле resultset-а попадает в один элемент массива.
Вы бы привели структуру таблицы и операторы добавления.
А то так непонятно, что у Вас там творится. | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 13:47)
| | стурктура таблицы
id small_pic big_pic content
в id храниться id, small_pic превьюшки, big_pic хранятся сами фотки, content описание к ним. | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 13:51)
| | Да забыл small_pic and big_pic this is BLOB | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 13:52)
| | Как-то так...
<?
include "inc/config.php";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
$id = @intval($_GET['id']);
$mode = @intval($_GET['mode']);
$filter = $id ? " and id = $id " : '';
switch($mode)
{
case 0: $sel = 'id, content'; break;
case 1: $sel = 'small_pic'; break;
case 2: $sel = 'big_pic'; break;
}
$sql = "SELECT $sel FROM foto WHERE 1 $filter ORDER BY 'id' ASC";
$result = mysql_query($sql);
if(!$result) die("error in $sql:".mysql_error());
if($mode == 0 && $id == 0)
while($row = mysql_fetch_row($result))
{
$r_id = $row[0];
$r_content = htmlspecialchars($row[1]);
echo "<hr><a href=?mode=2&id=$r_id>"
. "<img src=?mode=1&id=$r_id></a><br>$r_content<br>\r\n";
}
else if($id != 0 && $mode != 0)
{
$row = mysql_fetch_row($result);
if($row === false)
echo "No picture N $id";
else
{
header("Content-type: image/jpeg");
echo $row[0];
}
}
?>
|
| |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 13:52)
| | вы же запускаете цикл.
надо писать так
<?
include "inc/config.php";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
$sql="SELECT small_pic FROM 'foto' WHERE 1 ORDER BY 'id' ASC";
$result = mysql_db_query($dbname,$sql);
header("Content-type: image/jpeg");
while($row = mysql_fetch_row($result)) {
$a = base64_decode($row[0]);
echo "$a<br>";
}
?>
|
все картинки будут вытаскиваться сверху вниз идти.
хотя я бы сам запрос к базе все таки подругому построил, ну да это кому как нравится. | |
|
|
|
|
|
|
|
для: novik_06
(20.07.2006 в 14:15)
| | нет дело не в этом он просто не находит row[1] row[2] row[3]! Выводит только row[0]. Вот в чем дело | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 14:24)
| | если Вы выполните такой запрос:
SELECT small_pic FROM foto WHERE 1 ORDER BY id ASC
| то увидите, что он вернет 1(один) столбец. А не 4.
Соответственно, определяется только row[0].
Было б 4 столбца, определилось бы еще row[1], row[2], row[3]. | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 14:39)
| | ну и как это теперь сделать? | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 14:42)
| | Примерно как я сказал в 20.07.2006 в 13:52
Я исправил там ошибки - можете попробовать взять код еще раз | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 14:59)
| | Он возвращает 1 столбец и 4 строки так что с запросом все впорядке! | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 15:07)
| | Четыре строки таблицы будут возвращаться последовательно в цикле
while($row = mysql_fetch_row($result))
{
echo $row[0];
}
|
Оператор echo $row[0]; выполнится 4 раза и выдаст каждый из четырех элементов нулевого столбца по очереди.
Применительно к данным типа image/jpg это ничем хорошим не кончится, но это уже проблема другого рода. | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 15:33)
| | не работает выдает только row[0] | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 16:15)
| | Если Вы хотите, чтобы в массиве row оказались все строки результата, писать надо так:
$sql="SELECT content FROM 'foto' WHERE 1 ORDER BY 'id' ASC";
$res = mysql_query($sql); $row = array();
while($col = mysql_fetch_row($res))
$row[] = $col[0];
print_r($row);
|
| |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 16:30)
| | Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr/home/aw154/www/staff/create_img.php on line 7
ВОт что на это он отвечает | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 16:30)
| | Апострофы вокруг id и foto надо убрать.
А лучше переписать код вот так:
<?
$sql="SELECT content FROM foto WHERE 1 ORDER BY id ASC";
$row = array();
$res = mysql_query($sql) or die("Error in $sql: ".mysql_error());
while($col = mysql_fetch_row($res))
$row[] = $col[0];
print_r($row);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 16:43)
| | теперь пишет вот так Array ( [0] => foto1 [1] => foto2 ) | |
|
|
|
|
|
|
|
для: zepter
(20.07.2006 в 16:52)
| | Значит у Вас только две строки в таблице.
А не четыре.
echo count($row); выведет двойку. Вы же этого добиваетесь? | |
|
|
|
|
|
|
|
для: Trianon
(20.07.2006 в 16:53)
| | Я так и нихера и не понял.НО СПАСИБО ТЕБЕ БОЛЬШУЩЕЕ У МЕНЯ ВСЕ ЗАРАБОТАЛО | |
|
|
|