Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]problem z porównaniem i pobraniem z bazy
Forum PHP.pl > Forum > Przedszkole
pablo_83
witam,
mam problem z porównaniem i zwróceniem rekordów z bazy. Mam formularz który wypełnia użytkownik wpisuje Markę i rocznik sprawdza czy dane auto istnieje w bazie i ma zwrócić jego szczegóły. Sprawdzenie odbywa się, tylko mam gdzieś błąd
ponieważ jeśli jest więcej rekordów odpowiadających zapytaniu wyświetla tylko pierwszy pasujący i powtarza go tyle razy ile jest róznych pasujących rekordów. Np w bazie jest 6 Fordów z rocznika 1995 (fiesta '95, fiesta '95, mondeo '95, mondeo '95,mondeo '95, fiesta '95). Po wpisaniu w formularzu Ford 1995 wyświetla tylko pierwszego forda i powtarza go 6 razy. A powinien wyświetlić wszystkie Fordy z rocznika '95 proszę o pomoc. Mam jeszcze pytanie czy można dać takie zapytanie do bazy żeby wyszukać rekord po czterech wartościach (Marka, Model, Rocznik, Pojemność)? Wtedy mogę precyzyjnie sprawdzić czy dane auto istnieje w bazie
  1. <?php
  2. require_once('db_connect.php');
  3. $mail = $_POST['mail'];
  4. $marka = $_POST['marka'];
  5. $model =$_POST['model'];
  6. $rocznik = $_POST['rocznik'];
  7. $pojemnosc = $_POST['pojmenosc'];
  8.  
  9. if (!isset($_POST['check']))
  10. {
  11.  
  12. }
  13. else {
  14. connect_db();
  15. $zapytanie1 = "SELECT Marka, Rocznik FROM Auto_rodzaj WHERE Marka = '$marka' && Rocznik = '$rocznik'";
  16. $wynik1 = mysql_query($zapytanie1);
  17. $ile = mysql_num_rows($wynik1);
  18. if ($ile > 0){
  19.    echo 'takie auto istnieje już w bazie i to są jego szczegóły :<br>';
  20.    
  21.     for($i=0; $i<$ile; $i++)
  22.   {
  23.       $row = mysql_fetch_array($wynik1);
  24.    
  25.    $zapytanie2 = "SELECT * FROM Auto_rodzaj WHERE Rocznik = '$rocznik'";
  26.    $wynik2 = mysql_query($zapytanie2);
  27.    $row = mysql_fetch_array($wynik2);
  28.    
  29.    
  30.    
  31.    echo''.$row['Marka'].'<br>'.$row['Model'].'<br>'.$row['Rocznik'].'<br>'.$row['Pojemnosc'].'<br>'.$row['IdAuta'].'<br>';
  32.    }}
  33.    
  34. else {
  35.        echo 'Takie auto nie istnieje w bazie';
  36. }
  37. }
  38.  
  39. echo '<form action="check.php" method="post">
  40. <input type="text" name="mail">E-mail
  41. <input type="text" name="marka">Marka
  42. <input type="text" name="model">Model
  43. <input type="text" name="rocznik">Rocznik
  44. <input type="text" name="pojemnosc">Pojemność
  45. <input type="submit" name="check" value="Sprawdź">
  46. </form>';
  47. ?>
nospor
przeciez za kazdym razem w petli wykonujesz na nowo ten kod:
  1. <?php
  2. $zapytanie2 = "SELECT * FROM Auto_rodzaj WHERE Rocznik = '$rocznik'";
  3.   $wynik2 = mysql_query($zapytanie2);
  4.   $row = mysql_fetch_array($wynik2);
  5. ?>

ktory za kazdem obrotem petli zwraca ci zawsze ten sam rekord. Po co ty to wogole robisz? Przeciez dane pobierasz juz w pierwszym zapytaniu
piotrooo89
daj tak:

  1. <?php
  2. $zapytanie1 = "SELECT * FROM Auto_rodzaj WHERE Marka = '".$marka."' && Rocznik = '".$rocznik."'";
  3. $wynik1 = mysql_query($zapytanie1);
  4. $ile = mysql_num_rows($wynik1);
  5. if ($ile > 0)
  6. {
  7.    echo 'takie auto istnieje już w bazie i to są jego szczegóły :<br>';
  8.    while ($row = mysql_fetch_array($wynik1))
  9.    {
  10.    echo $row['Marka'].'<br>'.
  11.    $row['Model'].'<br>'.
  12.    $row['Rocznik'].'<br>'.
  13.    $row['Pojemnosc'].'<br>'.
  14.    $row['IdAuta'].'<br>';
  15.    }
  16. }
  17. else
  18. {
  19. echo 'Takie auto nie istnieje w bazie';
  20. }
  21. ?>


Cytat
Mam jeszcze pytanie czy można dać takie zapytanie do bazy żeby wyszukać rekord po czterech wartościach (Marka, Model, Rocznik, Pojemność)?


tak można. dodajesz albo AND albo OR do kryteriów wyszukiwania.
pablo_83
dzięki. Mam jeszcze takie pytanko bo teraz wyświetla tylko Marka i rocznik (wiem, jak dodam w zapytaniu rocznik i pojemność to też je wyświetli) a co z id? użytkownik nie wprowadza id w formularzu a glównie o jego wyświetlenie mi chodzi. Jak zrobić żeby zostało wyświetlone? Mam jakoś zmienną id utworzyć czy jak bo nie wiem za bardzo.
PanGuzol
Poczytaj sobie o składni zapytania SELECT, pole które chcesz pobrac wypisujesz pomiędzy SELECT a FROM, jeśli chcesz wsyzstkie to dajesz *.
pablo_83
znam zapytanie select, biggrin.gif

nie sprawdzałem tego bo wydawało mi się że jest to za proste żeby zadziałało biggrin.gif sam się zniszczyłem .
dzieki wielkie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.