使用PHP会话将数据从一个页面传递到另一个页面

使用PHP会话将数据从一个页面传递到另一个页面,php,mysql,database,session-cookies,Php,Mysql,Database,Session Cookies,我正在使用PHP中的会话。在这两页的顶部,我做了一个session_start();在其他事情之前 稍后,将从用于用信息填充页面的数据库中提取信息。现在我只使用20种不同的物品。第一个页面遍历数据库,并提供我期望的输出。一旦您选择了一个图像,它就会转到另一个页面,该页面应该有关于该对象的更多信息。问题是,新页面总是显示数据库中的最后一个对象。我会发布相关代码,希望有人能指出我的失败 <?php //initial page with list of objects session_st

我正在使用PHP中的会话。在这两页的顶部,我做了一个session_start();在其他事情之前

稍后,将从用于用信息填充页面的数据库中提取信息。现在我只使用20种不同的物品。第一个页面遍历数据库,并提供我期望的输出。一旦您选择了一个图像,它就会转到另一个页面,该页面应该有关于该对象的更多信息。问题是,新页面总是显示数据库中的最后一个对象。我会发布相关代码,希望有人能指出我的失败

<?php

//initial page with list of objects

session_start();

$_SESSION['listingID'] = $listingID;


?>

<!DOCTYPE HTML>
<html>
<head>
    <title>Some Title</title>
     <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
    <link rel="stylesheet" href="main.css" />

</head>
<body>

<!-- Wrapper -->
<div id="wrapper">

    <!-- Header -->
    <header id="header">
        <h1><a href="#" target="__blank">Some H1 that works fine</h1>
        <nav>
            <ul>
                <li><a href="#" target="__blank">Some link</a></li>
            </ul>
        </nav>
    </header>
</div>



</body>
</html>

<?php

try {
    $dbh = new PDO("mysql:host=$dbservername;dbname=$dbname", $dbusername, $dbpassword);
    //echo "Connection is successful!<br/>";
    $sql = "SELECT * FROM $tablename";
    $users = $dbh->query($sql);



    foreach ($users as $row) {
    extract($row);  
    $_SESSION['listingID'] = $listingID;
    echo "THIS IS listingID ". $listingID;
    echo '<div id="main" style="margin-bottom: 2em;">';
    echo '<article class="thumb">';
    echo '<a href="lake_full.php?'.$listingID.'" class="image"><img style="width:100%;height:100%;" src="' . $image . '" /></a>';
    echo "<h2>$address</br>$city, $state $zip</br>$$asking_price</h2>";
    echo '</article>';
    echo '</div>';  



   } // end foreach

$dbh = null;
}
catch (PDOexception $e) {
    echo "Error is: " . $e-> etmessage();
}


?>

一些头衔


下面的代码是我在新页面上使用的代码,它应该带来“id”或与第一页上选择的图像相关联的东西

 <?php

//lake_full.php
session_start();

$listingID = $_SESSION['listingID'];
echo "ID IS ".$listingID;

?>


    <!DOCTYPE HTML>
    <html>
    <head>
        <title>Some Title</title>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />

        <link rel="stylesheet" href="main.css" />

    </head>
    <body>

    <!-- Wrapper -->
    <div id="wrapper">

        <!-- Header -->
        <header id="header">
            <h1><a href="#">Some H1</h1>
            <nav>
                <ul>
                    <li><a href="#" target="__blank" class="icon fa-info-circle">Some Link</a></li>
                </ul>
            </nav>
        </header>



    </body>
    </html>

<?php

try {
    $dbh = new PDO("mysql:host=$dbservername;dbname=$dbname", $dbusername, $dbpassword);
    //echo "Connection is successful!<br/>";
    $sql = "SELECT listingID FROM $tablename";
    $users = $dbh->query($sql);

    echo "THIS ID IS ". $mls;

        echo '<div id="main" style="margin-top: 2em;">';
        echo '<article class="thumb">';
        echo '<a href="#" class="image"><img style="width:100%;height:100%;" src="' . $image . '" /></a>';
        echo "<h2>$address</br>$city, $state $zip</br>$$asking_price</h2>";
        echo '</article>';
        echo '</div>';

    $dbh = null;
}
catch (PDOexception $e) {
    echo "Error is: " . $e-> etmessage();
}



?>

一些头衔



您当前正在覆盖循环中每次迭代的
$\u会话['listingID']
,这意味着它将始终只包含最后一项

您应该使用查询字符串,而不是使用会话

更改第一个文件中的以下行:

echo '<a href="lake_full.php?'.$listingID.'" class="image"><img style="width:100%;height:100%;" src="' . $image . '" /></a>';

您当前正在覆盖循环中每次迭代的
$\u会话['listingID']
,这意味着它将始终只包含最后一项

您应该使用查询字符串,而不是使用会话

更改第一个文件中的以下行:

echo '<a href="lake_full.php?'.$listingID.'" class="image"><img style="width:100%;height:100%;" src="' . $image . '" /></a>';

在第一页上,您将使用
$listingID
设置会话。这个变量来自哪里?所有数据库变量都来自哪里?您还在try块中再次使用
$listingID
设置会话?我删除了所有mysql内容,这样就不会使代码混乱。发生的事情是,我可以回显所选房屋的ID或任何内容,但当我选择它时,新页面只反映数据库中的最后一个条目。我试图让它记住选中的房子,以便在下一页上显示所有信息。在
之前是否有空格字符
$listilingd
是否来自数据库?由于您使用的是
extract()。如果是这样的话,您将在每次迭代中覆盖会话变量,因此它将始终只包含最后一个。没有空格字符,只是它是如何复制到堆栈问题的。每个房子都有一个ID和一个列表ID。你可以在HTML的第一页上看到其他变量,它们工作正常。我只是有一个问题,试图存储选定的房子,以便它与其他信息一起显示在新页面上。无论选择什么,我现在只获取数据库中的最后一个房子。在您的第一页上,您使用
$listingID
设置会话。这个变量来自哪里?所有数据库变量都来自哪里?您还在try块中再次使用
$listingID
设置会话?我删除了所有mysql内容,这样就不会使代码混乱。发生的事情是,我可以回显所选房屋的ID或任何内容,但当我选择它时,新页面只反映数据库中的最后一个条目。我试图让它记住选中的房子,以便在下一页上显示所有信息。在
之前是否有空格字符
$listilingd
是否来自数据库?由于您使用的是
extract()。如果是这样的话,您将在每次迭代中覆盖会话变量,因此它将始终只包含最后一个。没有空格字符,只是它是如何复制到堆栈问题的。每个房子都有一个ID和一个列表ID。你可以在HTML的第一页上看到其他变量,它们工作正常。我只是有一个问题,试图存储选定的房子,以便它与其他信息一起显示在新页面上。我现在只得到数据库上的最后一栋房子,不管选择是什么。
if (!isset($_GET['listingID'])) {
    // If we didn't get an ID, we can't continue, so stop the script
    die('Invalid listing ID');
}

$listingID = $_GET['listingID'];

// ... the rest of the code...