Отображение изображений в папке с помощью php - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть несколько изображений в папке и имя изображения в файле. Я хочу отображать изображения в соответствии с нажатыми кнопками.

    <!DOCTYPE html>
    <html>
    <head>
        <title>Your Album</title>
    </head>
    <body>
        <form method="post">
            <input type="submit" name="first" value="FIRST">    
            <input type="submit" name="previous" value="PREVIOUS">
            <input type="submit" name="next" value="NEXT">
            <input type="submit" name="last" value="LAST">
            <input type="submit" name="dele" value="DELETE">
        </form>
        <br>

    <?php
    $fp = fopen("imgname.csv","r");
    $line = fread($fp,filesize("imgname.csv"));
    $item = explode("\n", $line);
    $count;
    $sizecsv = sizeof($item);   
    if(isset($_POST['next'])) {
        $count++;
        echo "<img src='images/$item[$count]' width='250px'>";
        echo "<br>","Image No: ",$count+1;
    }
    if(isset($_POST['previous'])) {
        $count--;
        echo "<img src='images/$item[$count]' width='250px'>";
        echo "<br>","Image No: ",$count+1;
    }
    if(isset($_POST['first'])) {
        $count = 0;
        echo "<img src='images/$item[$count]' width='250px'>";
        echo "<br>","Image No: ",$count+1;
    }
    if(isset($_POST['last'])) {
        $count = $item[$sizecsv-1];
        echo "<img src='images/$item[$count]' width='250px'>";
        echo "<br>","Image No: ",$count+1;      
    }

?>
</body>
</html>

Это мой код. Я сохраняю имена изображений в массиве и пытаюсь манипулировать индексом в соответствии с нажатой кнопкой. Это работает для кнопки «ПЕРВЫЙ», но не для чего-либо еще. Я не понимаю проблемы. Если каждый раз, когда вы нажимаете кнопку, страница перезагружается, значение $ count теряется. Пожалуйста, дайте решение. Кроме того, я новичок в php, так что если вы можете сохранить его простым, это будет полезно. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Я предполагаю, что ваши данные CSV-файла представляют собой массив имен файлов, разделенных новой строкой, как показано ниже:

some-img-01.jpg
img-02.jpg
img-05.jpg
....

Пожалуйста, проверьте следующие коды. Я реструктурировал код для передачи состояния (если оно существует из предыдущего поста) между загрузками каждой страницы. Здесь я спроектировал цикл: от первого, если доходит до конца, и до следующего нажатия или переход до последнего, если предыдущий нажимается из первой позиции. Вы можете отключить эту функцию, закомментировав соответствующие строки (проверьте комментарии).

<?php
$current_index = isset($_POST['current_index'])? intval($_POST['current_index']) : 0;

$fp = fopen('imgname.csv', 'r');
$line = fread($fp, filesize('imgname.csv'));
fclose($fp);
$item = explode("\n", $line);
$sizecsv = sizeof($item);

$current_index = isset($_POST['current_index'])? intval($_POST['current_index']) : 0;

if ($current_index >= $sizecsv) $current_index = ($sizecsv - 1);
if ($current_index < 0) $current_index = 0;

if (isset($_POST['next'])) {
    $current_index++;
    // If reached end of the list, then clicked next, the index starts from firt again.
    // If you dont need this feature, then can comment the following line.
    if ($current_index >= $sizecsv) $current_index = 0;
}
if (isset($_POST['previous'])) {
    $current_index--;
    // If the indexin first image, but clicked the Previous button, then the index goes to last element.
    // If you dont need this feature, then can comment the following line.
    if ($current_index < 0) $current_index = ($sizecsv - 1);
}
if (isset($_POST['first'])) $current_index = 0;
if (isset($_POST['last'])) $current_index = ($sizecsv - 1);
?><!DOCTYPE html>
<html>
<head>
    <title>Your Album</title>
</head>
<body>
    <form method="post">
        <input type="text" name="current_index" value="<?php echo $current_index;?>"/>
        <input type="submit" name="first" value="FIRST"/>    
        <input type="submit" name="previous" value="PREVIOUS"/>
        <input type="submit" name="next" value="NEXT"/>
        <input type="submit" name="last" value="LAST"/>
        <input type="submit" name="dele" value="DELETE"/>
    </form>
    <br>

    <img src="images/<?php echo $item[$current_index];?>" width="250px"/>
    <br>, Image No: <?php echo ($current_index + 1);?>
</body>
</html>
0 голосов
/ 04 сентября 2018

Я бы сделал это в цикле.

$i = 1;
while($i<=100){
    $name = $i<10?"0".$i:$i;
    echo "<a href='images/".$item.".jpg' class='image'>
          <img src='images/thumbs/image".$name.".jpg' alt=''/>
          </a>";
    $i++;
}

Не уверен, сколько изображений вы просматриваете, но у меня установлено значение 100. Обязательно настройте соответствующим образом.

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