簡體   English   中英

PHP-這是怎么了?

[英]PHP - what is wrong here?

我正在學校制作租車系統,遇到了無法解決的問題。

當我完成查詢以查詢所有與用戶搜索匹配的汽車時,我有一個按鈕,他們可以單擊以租用那輛汽車,它將它們重定向到另一頁。 假設您想租借法拉利F12,然后點擊租借。 當您轉到另一頁時,無論我選擇什么車,它都會顯示“ Rent Opel Corsa”。 可能只是我這邊的一個愚蠢的疏忽。

這是搜索功能

    function søk(){
    define('DB_HOST', 'db-kurs.hit.no');
define('DB_NAME', 'v15gdb1');
define('DB_USER','v15g1');
define('DB_PASSWORD','pw1');

 $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Kunne ikke koble til MySQL: " . mysql_error()); 
 $db=mysql_select_db(DB_NAME,$con) or die("Kunne ikke koble til MySQL: " . mysql_error());

 $sql =  mysql_query("SELECT * FROM Biler WHERE  Sted= '$_POST[by]' AND Merke = '$_POST[biler]'");
 $resultat = $sql;
 $mld = "Du har valgt å søke etter en <b>$_POST[biler]</b> i <b>$_POST[by]</b>.";

 if ($_POST['by'] == 'Alle'){
     $sql =  mysql_query("SELECT * FROM Biler WHERE Merke = '$_POST[biler]'");
      $resultat = $sql;
      $mld = "Du har valgt å søke etter en <b>$_POST[biler]</b> i <b>alle</b> byer.";
 }

  if ($_POST['biler'] == 'Alle'){
     $sql =  mysql_query("SELECT * FROM Biler WHERE Sted= '$_POST[by]' ");
      $resultat = $sql;
      $mld = "Du har valgt å søke etter <b>alle</b> bilene i <b>$_POST[by]</b>.";
 } 

   if ($_POST['by'] == 'Alle' and $_POST['biler'] == 'Alle'){
     $sql =  mysql_query("SELECT * FROM Biler");
      $resultat = $sql;
      $mld = "Du har valgt å søke etter <b>alle</b> bilene i <b>alle</b> byene.";
 }

   echo "<div id='søkmld'>$mld Husk at du må logge inn for å leie en bil.</div>";

 while($row = mysql_fetch_array($resultat, MYSQL_ASSOC))
 {

  $merke = $_SESSION['merke'] = $row['Merke'];
  $modell = $_SESSION['modell'] = $row['Modell'];
  $reg = $row['RegNr'];
  $pris = $row['Dagspris'];
  $sted = $row['Sted'];
  $status = $row['erLedig'];
  $bilde = $row['Bilde'];

  $_SESSION['name'] = $merke. " " .$modell;


   echo"   <div id='bilsøk'>
   <div id='biltype'><h3> $merke $modell</div>
   <div id='lei'>
   <form method='POST' action='leibil.php' name='leibil'>";
   if(isset($_SESSION['brukerID'])){
    echo"<input type='submit' value='Lei Nå' name='lei $merke $modell'> 
    </div>
   <div id='bilsøktxt'>
   <table>
    <tr>
        <td>RegNr:</td>
        <td>$reg</td>
    </tr>
    <tr>
        <td>Pris:</td>
        <td>$pris</td>
    </tr>
    <tr>
        <td>Sted:</td>
        <td>$sted</td>
    </tr>
    <tr>
        <td>Status:</td>
        <td>";
        if ($status == 1){
        echo'Ledig';}
        if ($status == 0){
        echo'Utleid';}
        echo "</td>
    </tr>
    </table>
      </div>
      <div id='søkimg'><center><img src='images/cars/$bilde.jpg'></center></div>
    </div>
  ";
}
}}

這是您重定向到的頁面上的div:

<div id="hoved">
    <?php
    echo"<h1>Lei $_SESSION[name]</h1>"
    ?>  
<?php
    status();
?>      <hr/>
</div>  

就這樣就可以設置Status()函數。

@ dbinns66是正確的,您與會話和發布變量不一致,這可能會導致問題。

還有,這里暗中有刺...

當您這樣做時:

while($row = mysql_fetch_array($resultat, MYSQL_ASSOC))

如果您有多於1行會怎樣?

假設您的查詢返回2行。 當您這樣做時:

$merke = $_SESSION['merke'] = $row['Merke'];
$modell = $_SESSION['modell'] = $row['Modell'];
...
$_SESSION['name'] = $merke. " " .$modell;

$ _SESSION ['name']將始終包含查詢最后一行(在本例中為第2行)中汽車的品牌和型號。

無論如何...

要解決此問題,請嘗試添加:

...
echo"<input type='submit' value='Lei Nå' name='lei $merke $modell'> 
     <input type='hidden' value='$merke $modell' name='makeAndModel'>
...

在您的重定向頁面(leibil.php)中:

<div id="hoved">
    <?php
    echo"<h1>Lei " . $_POST['makeAndModel'] . "</h1>"
    ?>
...

在第一個echo語句中關閉表單:

...
  <div id='søkimg'><center><img src='images/cars/$bilde.jpg'></center
</div>
</form>
...

首先,您可以嘗試將$ _SESSION [name]更改為$ _SESSION [“ name”]

另外,我注意到在構建SQL時,您有類似

...  Sted= '$_POST[by]' AND  ...

由於“ by”是您要查找的值的哈希鍵,因此我嘗試將其更改為更像

... Sted= '" . $_POST["by"] . "' AND    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM