PHP - 这里有什么问题?

时间:2015-03-16 20:46:20

标签: php

我正在学校制作汽车租赁系统,我遇到了一个我无法解决的问题。

当我完成查询以询问所有匹配用户搜索的汽车时,我有一个按钮,他们可以点击租用该汽车并将其重定向到另一个页面。假设你想租一辆法拉利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()函数就知道了。

2 个答案:

答案 0 :(得分:1)

@ 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 [&#39; name&#39;]将始终包含查询最后一行中汽车的品牌和型号(在本例中为第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>
...

答案 1 :(得分:0)

对于初学者,你能尝试改变吗?      $ _SESSION [名] 至      $ _SESSION [&#34;名称&#34;]

另外,我注意到在构建SQL时你有像

这样的子句
...  Sted= '$_POST[by]' AND  ...

自&#34; by&#34;是您正在寻找的值的哈希键,我尝试将其更改为更像

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