Как отобразить изображение из таблицы MySQL на страницу PHP в формате таблицы?

0

Я работаю над загрузчиком изображений, в котором пользователь загружает изображение в базу данных mysql с помощью простой формы HTML/PHP.

Он работает, и теперь я хочу получить сохраненные изображения из MySQL в формате таблицы HTML. Но я не увенчался успехом. Я очень новичок в PHP. Я подключил текущий код... может кто-то, пожалуйста, помогите мне создать решение, которое отображает результат как красивую таблицу?

Я также хочу разрешить пользователю одновременно загружать несколько файлов/изображений и сохранять их в базе данных. Как это возможно?

Вот мой код:

$query = "SELECT * FROM ae_gallery";
$result = mysql_query($query) or die('Error, query failed');
 if(mysql_num_rows($result) == 0)
 {
echo "Database is empty <br>";
 }
else
{
 echo "<center><b><h1><u>WV Images</u></h1></b></center><br>";
 echo "E_Name &ndash; Job_Num &ndash; Reason &ndash; Time &ndash;Image<br><hr>";
while(list($E_Name,$Job_num,$ext,$image_time,$data,$Remarks,)=mysql_fetch_array($result))
  {
   echo "
   {$E_Name}
    &ndash;
   {$Job_num}
    &ndash;
    {$Model}
    &ndash;
    {$Reason}
    &ndash;
    {$image_time}
    &ndash;
    <a href='download.php?id={$id}'><img src='http://pagename/wv-images   /download.php?id={$id}' width='80' height='80' alt='{$title}' border='0'></a> 
   <br><hr>" ;
    }
    }
   ?>
  </body>
  </html>
  • 2
    лично я не помещал бы изображения / файлы в базу данных, но только в папку и держал бы связь в базе данных
  • 0
    @ In81Vad0 Я не знаю этот метод ... пожалуйста, если возможно, помогите мне, как это сделать. Я очень новичок в PHP.
Показать ещё 1 комментарий
Теги:
blob

1 ответ

1

Обычно вы загружаете изображение в файловую систему, обычно под именем файла, например 123.jpeg, где 123 является основным ключом строки базы данных, связанной с загруженным файлом. (Не доверяйте файлу с именем пользователя, чтобы сохранить файл.)

Вы можете загружать изображения в столбец BLOB в самой базе данных, а затем использовать download.php script для извлечения и выпивки:

<?php
    $result= mysql_query('SELECT imagedata FROM ae_gallery WHERE id='.intval($_GET['id']))
    if (mysql_num_rows($result)==0) {
        header('Status: 404 Not Found');
        exit();
    }
    $row= mysql_fetch_assoc($result);
    header('Content-Type: image/jpeg');
    echo $row['imagedata'];
// no PHP end-tag to avoid accidental whitespace being included in the output

Однако выполнение этого способа означает, что по умолчанию вы не получите кеширования. Вы должны добавить загрузку довольно сложной обработки заголовков кеширования, чтобы остановить ее повторную выборку изображения каждый раз. Веб-сервер, как правило, более эффективен для обслуживания статических данных.

Для страницы, которую вы указали, вы действительно хотите отобразить в <table>. Вам также нужно будет использовать htmlspecialchars() каждый раз, когда вы эхотете текстовое значение в HTML, иначе у вас будут проблемы с вложением HTML-кода и возможные уязвимости в области межсайтового скриптинга.

<?php
    function h($s) {
        echo htmlspecialchars($s);
    }

    $result= mysql_query('SELECT * FROM ae_gallery') or die('Error, query failed');
?>

<?php if (mysql_num_rows($result)==0) { ?>
    Database is empty <br/>
<?php } else { ?>
    <table>
        <tr>
            <th>E_Name</th>
            <th>Job_Num</th>
            <th>Model</th>
            <th>Reason</th>
            <th>Time</th>
            <th>Image</th>
        </tr>
        <?php while ($row= mysql_fetch_assoc($result)) { ?>
            <tr>
                <td><?php h($row['E_Name']); ?></td>
                <td><?php h($row['Job_Num']); ?></td>
                <td><?php h($row['Model']); ?></td>
                <td><?php h($row['Reason']); ?></td>
                <td><?php h($row['image_time']); ?></td>
                <td>
                    <a href="/uploaded-images/<?php h($row['id']); ?>.jpeg">
                        <img src="/uploaded-images/<?php h($row['id']); ?>.jpeg" alt="<?php h($row['title']); ?>"/>
                    </a>
                </td>
            </tr>
        <?php } ?>
    </table>
<?php  } ?>

Примечания:

  • Я определил функцию с коротким именем, чтобы не набирать столько echo htmlspecialchars().

  • Я предположил, что id и title являются столбцами в таблице. (Кажется, что они нигде не появляются в примере кода.)

  • Я предположил, что имена переменных, которые вы использовали, являются именами столбцов в таблице, поэтому использовали те же имена для доступа к $row. Лучше получить доступ к результатам запроса через именованные столбцы, а не полагаться на их порядок (который может измениться, если вы начнете изменять схему).

  • 0
    спасибо ... это работает.
  • 0
    Как разместить эскиз изображения вместо большого изображения, я думаю, что это можно сделать с помощью параметра ширины и высоты в теге img.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню