|
|
|
|
|
для: juliya
(02.03.2006 в 10:28)
| | В Вашем же коде ошибка здесь:
" ..., '$HTTP_POST_VARS[surname]', NOW()..."
| Если Вы хотите подставить в строку значение из элемента массива, следует писать либо явно указывая контекст подстановки фигурными скобками:
" ..., '{$HTTP_POST_VARS['surname']}', NOW()..."
| либо отказаться от подстановки вообще и сцепить строку из кусочков:
" ..., '" . $HTTP_POST_VARS['surname'] . "', NOW()..."
| В любом случае константу surname надо брать в кавычки.
Я решил, что поскольку слэши и кавычки экранировать все равно придется, то проще сцепить. | |
|
|
|
|
|
|
|
для: juliya
(02.03.2006 в 15:32)
| |
<?php
include "connect_db.php";
$f_id = 0;
if(isset($_GET['f_id']))
$f_id += $_GET['f_id'];
if($f_id != 0)
{
header ("Content-type: image/jpeg");
$res=mysql_query(" SELECT f_photo FROM vsm_notebook WHERE f_id = $f_id ");
if(($row=@mysql_fetch_array($res)) != 0)
echo $row['f_photo'];
exit;
}
?>
<html><body>
<?php
if(isset($_REQUEST['del'])&&count($_REQUEST['del']))
{
$selected = implode(',',$_REQUEST['del']);
$query = "DELETE from vsm_notebook WHERE f_id IN ($selected)";
$result = mysql_query($query);
if (!$result)
echo "Error on delete: " .mysql_error();
}
if(isset($_FILES['photo']['tmp_name']))
{
$buffer = file_get_contents($_FILES['photo']['tmp_name']);
$query = "INSERT INTO vsm_notebook (f_surname, f_date_time, f_photo)VALUES('"
.mysql_escape_string($_POST['surname'])."', NOW(),'"
.mysql_escape_string($buffer)."')";
$result = mysql_query($query);
if (!$result)
echo "Error on insert: " .mysql_error();
}
$result=mysql_query(" SELECT f_id,f_surname, f_date_time FROM vsm_notebook");
if($result == 0)
echo "error in select:". mysql_error();
$total = 0;
while(($row=mysql_fetch_array($result)) != 0)
{
if(!$total++)
echo "<form method=post>";
$f_id = $row['f_id'];
$f_surname = $row['f_surname'];
$f_date_time = $row['f_date_time'];
echo ""
. "<input type=checkbox name=del[] value=$f_id />"
. "<a target=_blank href='?f_id=$f_id'>$f_date_time</a> "
. "<img src='?f_id=$f_id' />"
. htmlspecialchars($f_surname)
. "<br/>\r\n";
}
if($total)
echo "<input type=submit value='Delete selected rows'></form>\r\n";
echo "Total: $total rows";
}
?>
<form method=post enctype=multipart/form-data >
Photo: <input type=file name=photo />
Surname: <input name=surname>
<input type=submit value="Add to gallery" /></form>
</body></html>
|
Это в любом случае учебный пример. Код не защищен от атак. | |
|
|
|
|
|
|
|
для: juliya
(02.03.2006 в 15:04)
| | Структура таблицы вот:
CREATE TABLE vsm_notebook (
f_id tinyint(10) NOT NULL auto_increment,
f_surname varchar(100) default NULL,
f_date_time datetime NOT NULL default '0000-00-00 00:00:00',
f_photo blob,
UNIQUE KEY id (f_id)
) TYPE=MyISAM;
|
Вобщем полей много, т.к. у меня это записная книжка. А как заносятся в базу показано выше | |
|
|
|
|
|
|
|
для: juliya
(02.03.2006 в 15:04)
| | Вы бы показали, на что смотреть...
echo "Error"; заменили бы на echo "Error on INSERT: " . mysql_error();
Структуру таблицы бы привели. Вслепую тут ничего не подскажешь. | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2006 в 13:15)
| | Да у меня ведь даже и без фоток данные не хотят в базу ложиться. Посмотрите, плиз, что не так | |
|
|
|
|
|
|
|
для: juliya
(02.03.2006 в 10:28)
| |
$buffer = addslashes($buffer);
$query = "INSERT INTO vsm_notebook (f_id, f_surname, f_date_time, f_photo) VALUES
('', '$HTTP_POST_VARS[surname]', NOW(), '".mysql_escape_string($buffer)."')";
|
Не многовато ли эскейпов для одной фотографии?
Наверное имеет смысл оставить что-то одно - либо addslashes либо mysql_escape_string? | |
|
|
|
|
|
|
|
для: juliya
(02.03.2006 в 10:28)
| | Вывести сразу несколько изображений в цикле не получиться, для этого следует придерживаться алгоритма представленного в теме http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=5173 | |
|
|
|
|
|
|
| Всем доброго утра! Вчера положились сами картинки в базу, но оттуда выводится абракадабра на экран. А сегодня еще и ошибка при добавлении записи в базу. Помогите разобраться где ошибка.
Добавляю в базу так:
include "connect_db.php";
ini_set("max_execution_time",999999);
$photo = $_FILES['photo']['tmp_name'];
$file = fopen($photo, "r");
$buffer = fread($file, filesize($photo));
fclose($file);
if (empty($error))
{
$buffer = addslashes($buffer);
$query = "INSERT INTO vsm_notebook (f_id, f_surname, f_date_time, f_photo) VALUES
('', '$HTTP_POST_VARS[surname]', NOW(), '".mysql_escape_string($buffer)."')";
$result = mysql_query($query);
if ($result)
{
echo "Add\n";
}
else
{
echo "Error\n";
}
}
|
Вобщем мне тенерь всегда пишет, произошла ошибка при добавлении записи в базу (Error). Может с синтаксисом что не так?
А вывожу из базы изображение так:
while ($row = mysql_fetch_array($result))
{ $id = $row["f_id"];
$surname = $row["f_surname"];
$photo= $row["f_photo"];
$date_time=$row["f_date_time"];
if (!empty($photo))
{
//header("Content-Type: image/jpeg");
print $photo;
}
?>
|
Может в print надо не так писать? | |
|
|
|
|