Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie z bazy wyniku oraz wyświetlenie
Giekuss
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.05.2012

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


Mam 2 tabelki w bazie danych:

Rezerwacje
id
roomId
i wiele innych

Sale
id
title
i inne

Potrzebuje pobrać nazwę sali, a nie numer id z formularza.
$message .= '<p>Wybrana sala: '.($_POST['roomId']).'</p>';

Chciałbym zamiast Id sali wyświetliło mi nazwę.
Da radę to jakoś łatwo zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
nospor
post
Post #2





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




Tak, LEFT JOIN w zapytaniu
PRzenosze
Go to the top of the page
+Quote Post
Giekuss
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.05.2012

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


  1. $sala="SELECT sale.title FROM `sale` LEFT JOIN `rezerwacje` on sale.rezerwacje = sale.id";

Ułożyłem takie zapytanie i jak teraz wyświetlić samą nazwe sali?
Go to the top of the page
+Quote Post
robertpiaty
post
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


Np tak jak na przykładzie 3 http://php.net/manual/en/mysqli.quickstart.statements.php
Go to the top of the page
+Quote Post
salfunglandyare
post
Post #5





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


Ale zapytanie zupelnie nie tak... echh... musisz powiązać te 2 tabele, czyli bardziej on sale.rezerwacje = rezerwacje.id where rezerwacje.id = ID_Z_POST, a zaloze sie, ze masz odwrotnie: sale.id = rezerwacje.sale_id, bo wiele rezerwacji do 1 sali... Poza tym w tym przypadku nie left join, tylko inner join.
Go to the top of the page
+Quote Post
Giekuss
post
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.05.2012

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


W bazie danych działa to tak:
1. Użytkownik wybiera przy rezerwacji sale -> sale są pobierane z tabeli sale.
2. I w tabeli roomId wyświetlany jest id od sali która została wybrana podczas rezerwacji.
3. Chcę to wysłać e-mailem
4. Zamiast ID wybranej sali interesuje mnie wyświetlić nazwę tej sali czyli pole title.

Go to the top of the page
+Quote Post
robertpiaty
post
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


  1. SELECT sale.title FROM `rezerwacje` LEFT JOIN `sale` ON rezerwacje.roomId = sale.id
Go to the top of the page
+Quote Post
salfunglandyare
post
Post #8





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


może tak:
  1. $nazwa_sali = '';
  2. $mysqli = new mysqli("localhost", "uzytkownik", "haslo", "nazwabazydanych");
  3. $zapytanie = $mysqli->prepare('select * from sale where id = ?');
  4. $zapytanie->bind_param('i',$_POST['roomId']);
  5. $zapytanie->execute();
  6. $zwrot = $zapytanie->get_result();
  7. while($wiersz = $zwrot->fetch_assoc()){
  8. $nazwa_sali = $wiersz['title'];
  9. }

Twoja nazwa sali jest w zmiennej $nazwa_sali (o ile był 1 rekord z zapytania, a najprawdopodobniej był)

//Edit: do @robertplaty - w tym przypadku dostanie wszystkie nazwy sali, dla których były rezerwacje lub null jeśli relacja nie przewidziała usunięcia rezerwacji przy usunięciu sali... dostaje tyle rekordów, ile było rezerwacji - powtarzających się lub nie, z null lub nie (IMG:style_emoticons/default/smile.gif)

Ten post edytował salfunglandyare 12.05.2015, 22:01:41
Go to the top of the page
+Quote Post
Giekuss
post
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.05.2012

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


  1. $query="SELECT sale.title FROM `rezerwacje` LEFT JOIN `sale` ON rezerwacje.roomId = sale.id";
  2. $this->db->sql_query($query);
  3. while($res = $this->db->sql_fetchrow()){
  4. //echo $res['roomId'];
  5. $message .= '<p>Wybrana sala: '.$res['roomId'].'</p>';
  6. }


Na ten moment mam tak w e-mailu teraz wyświetlają się wszystkie rezerwacje. To znaczy w bazie jest 54 wyniki to tyle razy pojawia się "Wybrana sala: " w e-mail i nie zwraca żadnej wartości, ani id, ani nazwy sali (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
salfunglandyare
post
Post #10





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


  1. $query="SELECT sale.title FROM `sale` where sale.id = ".(int)$_POST['roomID'];

To mniej wiecej to samo, co pisalem powyzej, ale dla Twojego kodu wystarczy. Przy wcześniejszym dostałeś dokładnie to, o czym pisałem w edit do @robertplaty (IMG:style_emoticons/default/smile.gif)
Aha, musisz zamiast $res['roomId'] dać $res['title']

Ten post edytował salfunglandyare 12.05.2015, 22:27:57
Go to the top of the page
+Quote Post
robertpiaty
post
Post #11





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


salfunglandyare masz rację miałem na myśli jeszcze where rezerwacje.id = {tutaj numer rezerwcji ale nie wstawiony bezpośrednio tylko za pomocą bind_param} ale chyba przez późną godzinę zapomniałem to dopisać. Zakładam że do każdej rezerwacji może być przypisane kilka sal.

Jeśli chcesz pobrać wszystkie rezerwacje które mają przypisane sale to:
  1. SELECT sale.title FROM `rezerwacje` LEFT JOIN `sale` ON rezerwacje.roomId = sale.id WHERE sale.id IS NOT NULL
Go to the top of the page
+Quote Post
salfunglandyare
post
Post #12





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


@robertpiaty (przepraszam za zmiane nicka wczesniej, u mnie pogrubione i wyglada jak l) - koledze @Glekuss chodzi chyba jednak o jedna, konkretna sale, akurat tabela rezerwacje w tym momencie nie gra roli... ale niech sie wypowie sam pytajacy (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Giekuss
post
Post #13





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.05.2012

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


Dziękuję zrobiłem (IMG:style_emoticons/default/biggrin.gif) Zgadza się chodziło o jedną konkretną sale ;D
Go to the top of the page
+Quote Post
robertpiaty
post
Post #14





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


Jeśli jest tak jak piszesz to nie ma sensu robić joina i trzeba zrobić tak jak Ty napisałeś.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 18:29