Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]problem z porównaniem i pobraniem z bazy
pablo_83
post 22.06.2009, 12:45:15
Post #1





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
nospor
post 22.06.2009, 12:52:19
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
piotrooo89
post 22.06.2009, 12:59:33
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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.


--------------------
Go to the top of the page
+Quote Post
pablo_83
post 22.06.2009, 13:10:09
Post #4





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
PanGuzol
post 22.06.2009, 13:36:41
Post #5





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

Ostrzeżenie: (0%)
-----


Poczytaj sobie o składni zapytania SELECT, pole które chcesz pobrac wypisujesz pomiędzy SELECT a FROM, jeśli chcesz wsyzstkie to dajesz *.


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
pablo_83
post 22.06.2009, 13:43:02
Post #6





Grupa: Zarejestrowani
Postów: 200
Pomógł: 16
Dołączył: 11.01.2009
Skąd: wrocław

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.07.2025 - 20:48