2015-12-10 3 views
0

Целью является то, что клиент загружает свое объявление в базу данных, которое запускает и отправляет электронное письмо для утверждения. Как только одобренное объявление будет отображаться в месте между установленными датами.Отображение конкретного изображения даты из базы данных

Я правильно написал код для отображения по дате и одобрения из области администрирования. Я просто не могу получить изображение для отображения.

В приведенном ниже коде подробно описывается процесс.

<?php 
include('mysql_connect.php');{ 

    $location='1'; 
    } 

$resultSet = $mysqli->query("SELECT * FROM adverts WHERE adloc = '$location' AND approval ='Y' "); 

if($resultSet->num_rows > 0){ 
    while($rows = $resultSet->fetch_assoc()) 
    { 
     $id = $rows ['id']; 
     $start = $rows ['start']; 
     $end = $rows ['enddate']; 
     $business = $rows ['business']; 
     $email = $rows ['email']; 
     $tel = $rows ['tel']; 
     $web = $rows ['web']; 
     $advert = $rows ['image']; 

    $Date = date('Y-m-d'); 
    $Date=date('Y-m-d', strtotime($Date));; 
    $DateBegin = date('Y-m-d', strtotime("$start")); 
    $DateEnd = date('Y-m-d', strtotime("$end")); 
} 

if (($Date > $DateBegin) && ($Date < $DateEnd)) 
    { 
     echo "ADVERT"; 
     echo '<img src="getad.php?id=$id">'; 

    } 
    else 
    { 
     echo "FILLER IMAGE"; 
    } 

} 
?> 

Код для файла getad.php выглядит следующим образом

if(isset($_GET['id'])) 
{ 

$id = mysqli_real_escape_string($_GET['id']); 
$query = mysqli_query("SELECT * FROM adverts WHERE id= '$id'"); 
while ($row = mysqli_fetch_assoc($query)) 
{ 
    $image = $row['image']; 
} 
header("content-type: image/jpeg"); 
echo $image; 
} 
else 
{ 
    echo "Error!"; 
} 
?> 

Я уверен, что не может быть далеко. Изображение представляет собой JPEG LONGBLOB в базе данных.

спасибо.

+2

Почему бы просто не загрузить изображение в каталог и не вставить путь к базе данных? –

+0

Почему дата не является частью запроса sql? Сделай это проще. MySQL имеет функции даты и времени. – developerwjk

+0

Я подумал о том, чтобы сделать это, и это мой обычный предпочтительный выбор, следовательно, ржавость с использованием этого метода. Я предпочел этот вариант по организационным причинам.Мы будем работать с большим количеством данных, и было бы неплохо сохранить все в одном месте. –

ответ

2

Во-первых, это не удается вам:

$id = mysqli_real_escape_string($_GET['id']); 
$query = mysqli_query("SELECT * FROM adverts WHERE id= '$id'"); 

Обе эти функции требуют подключения к базе данных передаются и в качестве первого параметра:

$id = mysqli_real_escape_string($mysqli, $_GET['id']); 
$query = mysqli_query($mysqli, "SELECT * FROM adverts WHERE id= '$id'"); 

Ссылки:

Однако, возможно, потребуется использовать base64_decode:

header("content-type: image/jpeg"); 
echo base64_decode($image); 

или

echo '<img src="data:image/gif;base64,' . $image . '" />'; 

Ниже приведен пример заимствован из https://stackoverflow.com/a/20564797/

$db = mysqli_connect("localhost","root","","DbName"); //keep your db name 
$sql = "SELECT * FROM products WHERE id = $id"; 
$sth = $db->query($sql); 
$result=mysqli_fetch_array($sth); 
echo '<img src="data:image/jpeg;base64,'.base64_encode($result['image']).'"/>'; 

Для целей отладки:

Добавить error reporting в верхней части файла (ов), который поможет найти ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

Sidenote: Отображение ошибок не должно быть сделано только в постановке, и никогда производства.

  • А также or die(mysqli_error($mysqli)) до mysqli_query().
+0

Спасибо @Fred -ii- 'code'if (($ Date> $ DateBegin) && ($ Date <$ DateEnd)) { echo" ADVERT "; $ sql = "SELECT * FROM рекламы WHERE id = $ id"; $ sth = $ db-> query ($ sql); $ result = mysqli_fetch_array ($ sth); echo ''; \t прочее { echo "FILLER IMAGE"; } 'code' Я изменил это, как указано выше. Он все еще повторяет ADVERT, однако даже не отображает сломанное изображение, как раньше. –

+0

@ JamesParsons приветствую вас. Можете ли вы добавить отчет об ошибках и проверку ошибок, чтобы узнать, что из этого получилось? Я сделал редактирование своего ответа с этим и не уверен, что вы его видели. –

+0

Извините, совершенно новый здесь, havent вполне понял, как публиковать все! –