Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Porównywanie danych i wyświetlanie wartości
Forum PHP.pl > Forum > Przedszkole
Kicu
Witam

Mój problem wygląda następująco:

Tworzę pewien mały projekcik na studia, który polega na rezerwacji miejsc hotelowych. Sprawa wygląda tak, że w bazie, w tabeli hotel_pokoj, mam wprowadzone różne pokoje. Pola jakie tam mam to: nr_pokoju, liczba_miejsc, liczba_lozek, lazienka, media, balkon.
Osoba która wchodzi na stronę, ma do dyspozycji formularz, w którym po kolei wybiera liczbę miejsc, liczbę łóżek, czy ma być łazienka, media albo balkon.

Chciałbym teraz, aby po wypełnieniu takiego formularza, system sprawdzał i przypisywał dla danej rezerwacji numer pokoju, czyli pobierał wartość z nr_pokoju, pod warunkiem że pozostałe pola są zgodne z tymi, które podał klient w formularzu.

Jest ktoś w stanie pomóc? Mam nadzieję że wszystko wyjaśniłem w miarę jasno winksmiley.jpg
bartg
Pomóc czy zrobić za ciebie? smile.gif
Kicu
Huh, jednak udało mi się to zrobić. W sumie banalna sprawa się okazała. Zrobiłem to w ten sposób:

  1. select nr_pokoju from hotel_test, hotel_pokoj where
  2. hotel_test.lazienka = hotel_pokoj.lazienka and
  3. hotel_test.media = hotel_pokoj.media and
  4. hotel_test.balkon = hotel_pokoj.balkon and
  5. hotel_test.ilosc_lozek = hotel_pokoj.liczba_lozek and
  6. hotel_test.liczba_miejsc = hotel_pokoj.liczba_miejsc


Jednak jestem pewny że na tym nie skończą się moje problemy winksmiley.jpg


---------------------------
EDIT:

Czy mógłby mi ktoś pomóc z jeszcze jedną rzeczą? Otóż... udało mi się wyciągać wartość (tj. numer pokoju) dla danej rezerwacji, ale nie wiem jak teraz ten numer wprowadzić do bazy która się nazywa hotel_rezerwacja.

Kod wygląda tak:

  1. $wynik = mysql_query("select hotel_pokoj.nr_pokoju from hotel_test, hotel_pokoj where
  2. hotel_test.lazienka = hotel_pokoj.lazienka and
  3. hotel_test.media = hotel_pokoj.media and
  4. hotel_test.balkon = hotel_pokoj.balkon and
  5. hotel_test.ilosc_lozek = hotel_pokoj.liczba_lozek and
  6. hotel_test.liczba_miejsc = hotel_pokoj.liczba_miejsc");
  7.  
  8. $wiersz=mysql_fetch_array($wynik);
  9. echo $wiersz['nr_pokoju']."<br>";
  10.  
  11.  
  12. $sql_2 = " insert into hotel_rezerwacja set nr_pokoju='$wiersz', data_przyjazdu='$data_przyjazdu', data_wyjazdu='$data_wyjazdu', id_goscia='$costam', sniadanie='$sniadanie', kwota='30,00' ";
  13.  
  14.  
  15. $exec = mysql_query($sql_2, $connection);




Niestety w miejscu gdzie powinien być numer pokoju, wstawia mi "Arr".

Próbowałem też bezpośrednio wstawić wynik:

  1. $sql_2 = " insert into hotel_rezerwacja set nr_pokoju='$wynik', data_przyjazdu='$data_przyjazdu', data_wyjazdu='$data_wyjazdu', id_goscia='$costam', sniadanie='$sniadanie', kwota='30,00' ";


Jednak w tym wypadku mam wstawia mi "Res" a nie "Arr" ani tym bardziej numer pokoju.
tehaha
zrób print_r($wiersz), to rozumiesz o co chodzi, $wiersz to tablica z wynikami dlatego pojawia się array(), nr pokoju to będzie tak jak z resztą sam napisałeś
  1. $nr_pokoju = $wiersz['nr_pokoju']
i podstaw to do zapytania

poza tym masz nie poprawną składnię pomieszałeś UPDATE i INSERT INTO, zobacz manual http://dev.mysql.com/doc/refman/5.1/en/insert.html

dodatkowo zrób:
  1. $exec = mysql_query($sql_2, $connection) or die(mysql_error());
aby sprawdzić czy zapytanie zostało poprawnie skonstruowane i nie zawiera błędów
Kicu
Pozwoliłem sobie powrócić jeszcze do tego tematu. Nie bardzo widzę sens zakładania nowego. Jeśli źle robię, to proszę mnie upomnieć smile.gif

Najpierw przedstawię kod:

  1. <?php
  2. $imie = $_POST["imie"];
  3. $nazwisko = $_POST["nazwisko"];
  4. $adres = $_POST["adres"];
  5. $miejscowosc = $_POST["miejscowosc"];
  6. $telefon = $_POST["telefon"];
  7. $email = $_POST["email"];
  8. $id_apartamentu = $_POST["id_apartamentu"];
  9. $data_przyjazdu = $_POST["data_przyjazdu"];
  10. $data_wyjazdu = $_POST["data_wyjazdu"];
  11. $ilosc_lozek = $_POST["ilosc_lozek"];
  12. $ilosc_miejsc = $_POST["ilosc_miejsc"];
  13. $sniadanie = $_POST["sniadanie"];
  14.  
  15. if ((!$imie) || (!$nazwisko) || (!$adres) || (!$miejscowosc) || (!$telefon) || (!$email) || (!$data_przyjazdu) || (!$data_wyjazdu) || (!$id_apartamentu))
  16. {
  17. echo "Nie wypełniono wymaganych pól. Proszę spróbować ponownie.<br>";
  18. }
  19.  
  20.  
  21. $base=mysqli_connect('localhost', 'nazwa', 'pass','baza');
  22.  
  23. $base->query('SET character_set_connection=utf8');
  24. $base->query('SET character_set_client=utf8');
  25. $base->query('SET character_set_results=utf8');
  26.  
  27. $query="Select cena From hotel_apartament where id_apartamentu='$id_apartamentu'";
  28. $result=mysqli_query($base,$query);
  29.  
  30. $sql = " insert into hotel_klient set imie='$imie', nazwisko='$nazwisko', adres='$adres', miejscowosc='$miejscowosc',telefon='$telefon', email='$email'";
  31.  
  32.  
  33.  
  34. $row=mysqli_fetch_assoc($result);
  35. $wynik=$row['cena'];
  36.  
  37.  
  38. $result = @mysqli_query($base, $sql)
  39. or die("Zapytanie chybione");
  40.  
  41.  
  42. $rezerwacja = ((strtotime($data_wyjazdu)-strtotime($data_przyjazdu))/86400);
  43.  
  44. if($sniadanie == 'tak')
  45.  
  46. {
  47. $opcja = '10' * $rezerwacja;
  48. }
  49. $zaplata = $rezerwacja * $wynik + $opcja;
  50.  
  51.  
  52. $sql_1 = " insert into hotel_rezerwacja set id_apartamentu='$id_apartamentu', id_goscia='$goscid', data_przyjazdu='$data_przyjazdu', data_wyjazdu='$data_wyjazdu', sniadanie='$sniadanie', kwota='$zaplata'";
  53.  
  54. $exec = mysqli_query($base, $sql_1) or die(mysql_error());
  55.  
  56.  
  57. if ($result)
  58. {
  59. echo $ostatnie_id;
  60.  
  61. echo '<br><br><br><center><font class="powiadomienia">Rezerwacja została dodana pomyślnie. Dziękujemy.</font>';
  62. echo '<br><br><font class="powiadomienia">Czas rezerwacji: ';
  63. echo $rezerwacja;
  64. echo ' dni. Kwota do zapłaty: ';
  65. echo $zaplata;
  66. echo ' zł. <br><br><br> <a class="powiadomieniaa" href="rezerwacja.php">dodaj kolejną rezerwację</a> </font></center>';
  67. }
  68.  
  69. mysqli_close($base);
  70.  
  71. ?>


Jak widać, skrypt pobiera z formularza kilka wartości, po czym wprowadza niektóre dane do tabeli hotel_klient. Tutaj wszystko działa okej. Jednak chcę, aby zarazem wprowadzało mi wybrane wartości do tabeli hotel_rezerwacja i tutaj pojawia się problem.
Jak widać, dla id_goscia, powinno wprowadzać wartość '$goscid', której obecnie nie ma. Ta wartość powinna równać się ID gościa, który został chwilę wcześniej wprowadzony. Nie wiem jednak jak wyciągnąć dopiero co wprowadzone ID.
W tabeli hotel_klient, 'id_goscia' jest auto increment, oraz utworzona jest relacja między tą tabelą, a tabelą hotel_rezerwacja.


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

EDIT:

To forum mi chyba szczęście przynosi, bo szukam informacji godzinami, znaleźć nie mogę, a w ciągu kilkunastu minut od napisania posta, znajdę to czego mi trzeba smile.gif

W ten oto sposób balany to rozwiązałem:
  1. $goscid = mysqli_insert_id($base);
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.