2015-03-16 4 views
0

Я делаю систему проката автомобилей в школе, и у меня возникла проблема, которую я не могу исправить.PHP - что здесь не так?

Когда я завершил свой запрос, чтобы попросить все автомобили, соответствующие поиску пользователей, у меня есть buttun, они могут щелкнуть, чтобы арендовать этот автомобиль, и перенаправляет их на другую страницу. Допустим, вы хотите взять напрокат Ferrari 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() устанавливается только так вы знаете.

+3

Что вы имеете в виду _what i Вы здесь не ошибаетесь? Вы говорите нам, что не так, и мы поможем вам решить его. – bcesars

+0

@bcesars он находится в описании. Прямо перед примером xss и SQL injection ... – AD7six

+0

Плохой выбор слов с моей стороны :( –

ответ

1

@db inns66 является правильным, вы несовместимы со своими сеансовыми и пост-переменными, и это может вызвать проблемы.

Кроме того, удар в темноте здесь ...

Когда вы делаете:

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 [ «имя»] всегда будет содержать марку и модель автомобиля, которая находится в последней строке запроса (в данном случае, строка 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>" 
    ?> 
... 

Закройте форму в первом эхо выписка:

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

После добавления этого на мою страницу перенаправления я получаю эту ошибку: Ошибка синтаксиса: ошибка синтаксиса, неожиданный '' (T_ENCAPSED_AND_WHITESPACE), ожидающий идентификатор (T_STRING) или переменная (T_VARIABLE) или номер (T_NUM_STRING) –

+0

Извините, не парень PHP, я отредактировали последний блок, попробуйте, что –

+0

IT работает сейчас, но я все еще получаю Opel Corsa xD –

0

Для начала, не могли бы вы попробуйте изменить $ _SESSION [имя] в $ _SESSION [ "имя"]

Кроме того, я заметил, в создании вашего SQL у вас есть пункты, как

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

Так как «по» является хэш-ключ значение, которое вы ищете, я бы попытаться изменить те, чтобы больше походить

... Sted= '" . $_POST["by"] . "' AND  
Смежные вопросы