получить список изображений из папки в php и заполнить теги src изображения - PullRequest
0 голосов
/ 20 марта 2012

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

<?php
 $hote = 'localhost';
 $base = '*****';
 $user = '*****';
 $pass = 'testuser2012';
 $cnx = mysql_connect ($hote, $user, $pass) or die(mysql_error ());
 $ret = mysql_select_db ($base) or die (mysql_error ());
 $image_id = mysql_real_escape_string($_GET['ID']);
 $sql = "SELECT image FROM image_upload WHERE ID ='$image_id'";
 $result = mysql_query($sql);
 $image = mysql_result($result, 0);

 header('Content-Type: text/html');
 echo '<img src="' . $image . '"/>';
 exit;
 ?>

Но, возможно, мне следует объяснить полную функциональность: мне нужно, чтобы пользователь загружал свои изображения в свою папку, а затем, когда вызывается галерея изображений PHP,заполните его этими изображениями из этой папки.Я не уверен, правильно ли я поступаю, стоит ли читать список файлов из папки?ИЛИ запишите имена в БД и извлеките их оттуда ... вот в чем моя проблема. Вышеприведенный код - это то, что я пытался использовать, и хотя он вернет имя файла, он не отобразит его в теге ....не уверен, где моя неумелость лежит:)

HTML, который я пытаюсь заполнить, выглядит следующим образом:

<div class="slide">
                <div class="image-holder">
                   <img src="img/asoft_table.jpg" alt="" /> 
                </div>
                <div class="info">

                    <p>Morbi a tellus lorem, id scelerisque ligula. Maecenas vitae turpis et.</p>
                </div>
            </div>
            <div class="slide">
                <div class="image-holder">
                    <img src="img/soft_table.jpg" alt="" />
                </div>
                <div class="info">

                    <p>Sed semper, lorem ac lobortis bibendum, magna neque varius augue, vel accumsan.</p>
                </div>
            </div>
            <div class="slide">
                <div class="image-holder">
                    <img src="img/living_room2.jpg" alt="" />
                </div>

1 Ответ

1 голос
/ 20 марта 2012

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

$result = mysql_query("SELECT * FROM Images");

while($row = mysql_fetch_array($result)) {
  echo "<img src='/path/to/images/".$row['image_name']."'/>";
}

Чтобы разобраться, что именно здесь происходит - по сути, запрос MySQL хранится в $result. Затем я создаю цикл while, который циклически перебирает массив, возвращенный из запроса MySQL. Этот массив будет выглядеть примерно так:

  0 => 'id' => 1, 
       'file_name' => 'foo.jpg',
       'file_size' => '36.6 kb',
       'time_stamp' => '14/01/02',
  1 => 'id => 2,
       'file_name' => 'bar.jpg',
       'file_size' => '12.8 kb',
       'time_stamp' => '14/01/03'

Для каждого индекса while выведет свой вложенный массив. В этом случае это будет строка базы данных. Затем я бы хотел echo выделить тег изображения для каждой строки базы данных и добавить имя тега к тегу.

В своем HTML вы создали блок элементов для каждого изображения. Так что на статической странице, если у вас есть 100 изображений, вам придется повторять этот блок HTML 100 раз. С программированием вам не нужно этого делать. В моем примере MySQL вернет большой array, который содержит каждое из ваших изображений и их строки. Таким образом, если у вас есть таблица с 100 изображениями, ваш array будет иметь 100 элементов, и, таким образом, ваш цикл while будет проходить и распечатываться 100 раз. Следуйте

Итак, используя ваш HTML, ваш код будет выглядеть следующим образом:

<? while($row = mysql_fetch_array($result)) ?>

<div class="slide">
  <div class="image-holder">
    <? echo "<img src='img/".$row['image_name']."' alt='' />"; ?>
  </div>
  <div class="info">
    <p>
      <? echo $row['image_description']; ?>
    </p>
  </div>
</div>

<? endwhile; ?>

Итак, как вы можете видеть, вы создаете один блок HTML, и PHP будет проходить по нему и заполняться для вас на основе возвращаемых переменных.

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

+----+-----------+-----------+------------+
| id | file_name | file_size | time_stamp |
+----+-----------+-----------+------------+
| 1  | foo.jpg   |  36.6 kb  | 14/01/02   |
+----+-----------+-----------+------------+

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

Редактировать: Вы также можете проверить Tizag , который содержит исчерпывающие учебные пособия и ресурсы для тех, кто изучает PHP.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...