0

いくつかのページで問題が発生しています: データベース (URL が保存されている) からすべての画像を一覧表示し、ユーザーに画像をクリックして別のページに移動させ、データベースから残りの情報を取得したい.

セッション変数を使用して画像の ID を送信し、それを他のページで使用して、表示する前にデータベースから情報を選択しています。私が抱えている問題は、クリックされた画像の変数からの実際の情報ではなく、データベースに最後に入力された詳細が常に表示されるように見えることです。

これがどこで間違っているのかわかりません。それ以来session_destroy()、最初の問題だと思っていた多くのコマンドを追加しましたが、問題は解決せず、コードを詰まらせるだけに見えます。

どんな助けや指示も大歓迎です。

これが私のコードです:

ページ 1 - セッションを介した変数の送信

<?php
//code to access database

$query = "SELECT * FROM releases";
$result = mysql_query($query);

if(!$result) die ("Database access failed: " .mysql_error());

$rows = mysql_num_rows($result);

  for ($j = 0 ; $j < $rows ; ++$j)

{

$row = mysql_fetch_row($result);



echo '<a href="test2.php"><img src="images/releases/' . $row[1] .'" id="' . $row [0] . '"/></a>';   
}
$id = $row [0]; //"row 0" is the auto increment of the database id.

if (isset($_SESSION ['id'])){
session_destroy();
}
session_start();
$_SESSION ['id']= $id;

mysql_close($db_server);
?>

ページ 2 - 変数を受け取り、それを使用してデータベースにアクセスします。

<?php

//code to access database

if (isset($_SESSION ['id'])){
    session_destroy();
}
session_start();
$id = $_SESSION['id'];
$query = "SELECT * FROM releases WHERE release_id = $id";
$result = mysql_query($query);

if(!$result) die ("Database access failed: " .mysql_error());

$row = mysql_fetch_row($result);


echo    "<img src='images/events/"  .$row[1] . "' width= '150' height= '150' />    <br />";
echo    "track title: "                 .$row[2] . "<br />";
echo    "artist: "              .$row[3] . "<br />";

session_destroy();
mysql_close($db_server);
?>
4

1 に答える 1

1

あなたのコードが何をしているか見てみましょう:

for ($j ...) {
   $row = mysql_fetch_row($result);
   ... do stuff with $row;
}
$id = $row[0];

$id ループが終了した後に設定します。つまり、クエリ結果から最後の項目フェッチのみを取得します。

ループ内で設定していたとしても$id、とにかく $_SESSION に SINGLE id を設定するだけです。

for ($j ...) {
  $id = $row[0];
  $_SESSION['id'] = $id;
}

ループが終了すると、$_SESSION が最後の ID になります。あなたがしていることはセッションを必要とせず、クエリ変数だけです:

for ($j ...) {
   $id = $row[0];
   echo "<a href='test.php?id=$id'>click me</a>";
                          ^^^^^^^---note the query string....
}

そして、test.php ページで:

$id = $_GET['id'];
于 2013-10-20T20:21:00.043 に答える