2013-06-19 10 views
-2

Это мой код (добавление новостей в db).Изображения из базы данных

if(!empty($_FILES['img']['name'])){ 
    $extension = end(explode(".",$_FILES['img']['name'])); 

    $name = $_FILES['img']['name']; 
    $size = $_FILES['img']['size']; 

    if(file_exists("views/admin/uploads/".$name)){ 
     $errors[] = "File with this name already exists!"; 
    } 

    if($extension != "jpg" && $extension != "png" && $extension != "gif" && $extension != "JPG"){ 
     $errors[] = "Unknown file format!"; 
    } 
} 

if(count($errors)==0){ 
    $query = mysql_query("INSERT INTO `avetisyan`.`$category` (`id`, `category`, `sub_category`, `news_category`, `title`, `img`, `short_content`, `content`, `date`, `lang`) VALUES (NULL, '$category', '$sub_category', '$news_category', '$title', '$name', '$short_content', '$long_content', '$date', '$lang')"); 
    move_uploaded_file($_FILES['img']['tmp_name'],"views/admin/uploads/".$name); 
    echo "<h2 align=\"center\">Successfully added!</h2>"; 
} 
else{ 
    print "<h3>Errors!</h3><ul><li>".join("</li><li>",$errors)."</li></ul>"; 
} 

Как вы видите, название изображения переходит в базу данных, и изображение переходит в/просмотров/администратор/загрузки/..

Какой это правильный путь, чтобы показать эту фотографию в новостях? Как?

+3

'' тег с 'путь/к/закачанный/изображения .ext' как его 'src' – tomexsans

+0

, вам нужно проверить, есть ли (file_exists (" views/admin/uploads /".$ name)), тогда по мере исправления пути вы можете указать конкат путь и имя и можете получить доступ к изображению. –

+0

Из соображений безопасности вы можете проверить имя изображения до его сохранения в базе данных. Это может быть уязвимым для SQLi и XSS. – NemanjaLazic

ответ

0
<?php $name = getImageNameFromDB(); ?> 
<img src="<?php echo $name; ?>"/> 

Обязательное примечание: mysql_ * методы устарели и не должны использоваться. Кроме того, ваш код может быть уязвим для SQL Injection атак. Рассмотрим фильтр, который вы вводите или даже лучше, перейдя на подготовленные заявления.

0

Выполните запрос, чтобы получить все записи, через цикл записи и сделать что-то вроде этого

<?php 
    $query = mysql_query("SELECT * FROM `table_name`"); 

    if(mysql_num_rows($query) > 0) 
    { 
     for($i=0; $i<mysql_num_rows($query); $i++) 
     { 
      $row = mysql_fetch_array($query); 
      echo '<img src="views/admin/uploads/'.$row['img'].'" />'; 
     } 
    } 
?> 

SIDE ПРИМЕЧАНИЕ:

mysql extension is deprecated as of PHP 5.5.0, and will be removed in the future. 
Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an 
API guide and related FAQ for more information. Alternatives to this function include: 
0
<?php 
$image_query = 'select * from `avetisyan`.`$category`'; 
$img = mysql_query($image_query); 
while($get_items = mysql_fetch_array($img)) 
{ 
    echo '<div id="images">'; 
    echo '<b>'.$get_items['title'].'</b>'; 
    echo '<br><img src="uploads/'.$get_items['img'].'">'; 
    echo '</div>'; 
} 
?> 

с выше код использования правильного стиля CSS, чтобы показать изображение

1

move_uploaded_file ($ _ FILES [ 'IMG'] [ 'tmp_name'], "просмотров/админ/добавления /".$ имя);

Вы можете иметь это «просмотр/админ/загрузки» в конфигурационном файле и извлечь его из конфигурации, а затем конкатенация с именем файла изображения «$ имени»»во время загрузки файлов

Иметь отдельную функцию, которая дает путь к изображению , в вашем случае «/ views/admin/uploads» Извлечь данные из базы данных и получить цикл результатов для получения полного пути к изображению

0

Вы получаете имя из базы данных и эхо в качестве источника в теге. Для примера, если вы показываете список коротких новостных статей в категории $ категории с их изображениями (в очень минималистичный макет):

$res = mysql_query("SELECT * FROM avetisyan".$category); 

echo("<table>"); 

while ($row = mysql_fetch_assoc($res)) { 
    echo("<tr>"); 
    echo("<td>"); 
    echo("<img src=\"views/admin/uploads/".$row['img']."\">"); 
    echo("</td>"); 
    echo("<td>"); 
    echo($row['short_content']); 
    echo("</td>"); 
    echo("</tr>"); 
} 

echo("</table>"); 
Смежные вопросы