2016-11-23 2 views
0

PHP로 세션을 사용하고 있습니다. 두 페이지의 맨 위에는 session_start(); 다른 것보다 먼저.PHP 세션을 사용하여 한 페이지에서 다른 페이지로 데이터 보내기

나중에 정보를 페이지에 채우는 데 사용되는 데이터베이스에서 정보가 추출됩니다. 지금은 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(); 
} 



?> 
+0

첫 번째 페이지에서 세션을'$ listingID'으로 설정합니다. 그 변수는 어디에서 오는 것입니까? 그리고 모든 데이터베이스 변수는 어디에서 왔습니까? 또한 try 블록에서'$ listingID'를 사용하여 세션을 다시 설정합니까? –

+0

코드가 복잡하지 않도록 모든 mysql 항목을 제거했습니다. 무슨 일이 일어나고있는가? 내가 선택한 집에 대해 ID 등을 반향시킬 수는 있지만 선택하면 새 페이지는 데이터베이스의 마지막 항목 만 반영합니다. 어느 집이 선택되었는지 기억하도록 노력하고있어 다음 페이지에 그 정보를 모두 보여줄 수 있습니다. – TomG103

+0

* "새 페이지"*에' Phil

답변

4

현재 항상 마지막 항목이 포함됩니다 것을 의미 루프에 각각의 반복에 $_SESSION['listingID']을 덮어 쓰기합니다.

세션을 사용하는 대신 쿼리 문자열을 사용해야합니다.

변경 첫 번째 파일에 다음 행 :

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

대신 세션을 사용 lake_full.php에 지금

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

,

에, 당신은 지금 세계 - 슈퍼 $_GET 사용하여 ID를 얻을 수 있습니다 :

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...