0

次/前のボタンを使用してフォト ギャラリーを循環しようとしています。ユーザーが写真をクリックすると、拡大されます。次をクリックすると、次の写真に移動するはずです。ユーザーが写真を選択した直後に送信ボタンをクリックすると、次の写真が拡大されます。ただし、送信 (次へ) をもう一度クリックしても、$index 変数は更新されません。その理由は、一度設定すると初めてisset($_POST['myNext')false と評価されるためです。では、ボタンをクリックするたびに $index を更新するにはどうすればよいでしょうか。PHPで可能なはずなので、これにjavascriptを使用したくありません。また、理解できないJSをコピーして貼り付けたくありません。オンラインで答えを探しましたが、JS なしでは何も見つかりませんでした。画像を含むディレクトリをスキャンするコードは省略しました。ありがとうございました。

 <?php

for($i = 0; $i < count($thumbArray); $i++)
{
    $currentIndex = $thumbArray[$i];
    echo '<div class = "img"> <a href ="?original_selection='.$currentIndex.'"> <img src="'.$dir.$thumbArray[$i].'" alt="Picture" height = "100" width = "100" /> </a> </div>';
}

if(isset($_GET['original_selection'])) 
{
    $original_selection = $_GET['original_selection'];
}

for($i = 0; $i < count($thumbArray); $i++)
{
    if($thumbArray[$i] == $original_selection)
        $index = $i;
}       

?>  

<html>
    <head><title>Single</title></head>

    <body>
     <?php

        if(isset($_POST['myNext']))
        {
            echo 'index: '.$index;
            $index++;
        }



    ?>

    <div class = "img"> <img src="<?= $dir.$thumbArray[$index] ?>" alt = "Picture" height = "500" width = "500" /></div>

    <form name="NextForm" method="post">


      <br />

      <input type="submit" name="myNext" value="Next"/>



    </form>


        <h1>hi</h1>





    </body>

    </html>
4

1 に答える 1

0

if(isset($_POST['myNext'])) の前に $index を出力しようとしましたか?

form タグに action パラメータがありません:

<form name="NextForm" method="post" action="">

^ そうすることでフォームデータが同じページに送られます。

これは非常に非効率的なコードのように思えますが、正直に言うと許されています。

for($i = 0; $i < count($thumbArray); $i++)
{
    if($thumbArray[$i] == $original_selection)
        $index = $i;
}

なんでそんな検索するの?値が見つかった後も検索を続けるだけでなく、このための php 関数、つまりarray_searchが既に存在します。また、php でそのようにループする必要はありません。foreachループを使用するだけです。上記で試したことが本当に必要な場合は、「break;」を使用する必要がありました。if の中。

これの代わりに:

echo 'index: '.$index;
$index++;

これを行うことができました:

echo 'index: '.$index++;

編集:

サムアレイはどこに保存しますか? データベースを使用してファイルの名前を保存し、たとえばグループ ID 番号、ID などを指定した場合、これはすべてはるかに簡単で効率的になります。

于 2013-11-06T06:46:49.820 に答える