Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] 'Kropka' jako fragment kodu, a nie jako znacznik kończący część zawierającą PHP. / Problem z AS.
pawel.ad
post 9.03.2010, 14:18:13
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


Witam.

Odpowiedź zapewne będzie banalna, ale nie mam pojęcia jak sformułować zapytanie do Googla, albo zatytułować wątek.

Mianowicie chce wyświetlić:
  1. echo "<h2>".$wiersz[teams.name]."</h2>"

tak, żeby pokazywało mi 'name' z bazy 'teams', a nie z bazy 'players';

Tylko że ta kropka w 'teams.name' jest uznawana za koniec kodu PHP.
Wiem czemu jest źle, ale nie wiem jak to poprawić.

Jak powinno się to poprawnie napisać?

Ten post edytował pawel.ad 9.03.2010, 17:10:20
Go to the top of the page
+Quote Post
nospor
post 9.03.2010, 14:24:52
Post #2





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




do tekstow uzywa sie apostrofow...
'teams.name'

a pozatym zrob sobie
print_r($wiersz);
bo na 99% nie masz tam indexu teams.name tongue.gif


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

"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
phpion
post 9.03.2010, 14:29:56
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Tak jak pisze ~nospor + rada ode mnie: nadawaj aliasy kolumnom. Przykładowo:
  1. SELECT teams.name, players.name AS player_name ...

no a potem:
  1. $wiersz['player_name']
Go to the top of the page
+Quote Post
pawel.ad
post 9.03.2010, 14:39:10
Post #4





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


A więc:
  1. echo "<h2>".$wiersz['teams.name']."</h2>"

nie działa(nic nie wyświetla).
  1. print_r($wiersz);
  2. print_r($wiersz[teams.name]);
  3. print_r($wiersz['teams.name']);

także nie...

Aliasy były by dobre, ale jak je nadać gdy wybieram wszystkie kolumny?

BTW: Daje cały kod:
  1. $id=$_GET['id'];
  2.  
  3. require "connection.php";
  4.  
  5.  
  6. # Wydobywamy Imię, nazwisko i nazwę drużyny.
  7. $zapytanie = "SELECT `players` . * , `teams` . * FROM `teams` , `players` WHERE players.team_id = $id AND teams.id = $id ORDER BY `lastname`";
  8. $wynik = mysql_query($zapytanie);
  9.  
  10. if($wynik and $id) {
  11.  
  12. mysql_num_rows($wynik);
  13.  
  14. $team = mysql_fetch_array($wynik);
  15.  
  16. echo "<h2>".$team[teams.name]."</h2>";
  17.  
  18. while($wiersz = mysql_fetch_array($wynik)) {
  19. echo "<p class=\"player\"><a href=\"stats.php?team_id=".$wiersz[players.name]."&player=".$wiersz[players.lastname]."\">".$wiersz[players.name]."&nbsp;&nbsp;".$wiersz[players.lastname]."</a></p>";
  20. }
  21.  
  22. }
  23. else include ('allteam.php');
Go to the top of the page
+Quote Post
nospor
post 9.03.2010, 14:52:43
Post #5





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




a gdzies ty te:
print_r($wiersz);
dal? Ma to byc w petli, gdzie iterujesz po wynikach


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

"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
phpion
post 9.03.2010, 14:59:41
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(pawel.ad @ 9.03.2010, 12:39:10 ) *
Aliasy były by dobre, ale jak je nadać gdy wybieram wszystkie kolumny?

Z tego co się orientuję to nie ma na to prostego sposobu. Musisz po prostu wyszczególnić wszystkie kolumny, które pobierasz nadając im przy tym odpowiednie aliasy. Możesz oczywiście zrobić sobie do tego funkcję, która pobierze wszystkie nazwy kolumn z danej tabeli i zwróci ich nazwy z przedrostkiem będącym nazwą tabeli. Jeśli chcesz w to pójść to przydatne okaże się DESCRIBE.
Go to the top of the page
+Quote Post
sadistic_son
post 9.03.2010, 15:49:45
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Spróbuj tak:
  1. $id=intval($_GET['id']);
  2. require "connection.php";
  3. Wydobywamy Imię, nazwisko i nazwę drużyny.
  4. $zapytanie = "SELECT `players` . * , `teams` . * FROM `teams` , `players` WHERE players.team_id =".$id." AND teams.id = $id ORDER BY `lastname`";
  5. $wynik = mysql_query($zapytanie);
  6. if($wynik and $id) {
  7. mysql_num_rows($wynik);
  8. $team = mysql_fetch_array($wynik,MYSQL_NUM);
  9. echo '<h2><pre>';
  10. //zamiast np. $team['team.name'] uzyj odpowiadajacego mu numeru kolumny z bazy danych. Czyli np jesli kolumna name jest pierwsza w tabeli team to $team[0].
  11.  
  12. print_r($team[0]);
  13. echo'</pre></h2>';
  14. while($wiersz = mysql_fetch_array($wynik,MYSQL_NUM)) {
  15.  
  16. //tutaj analogicznie tez uzywaj numeracji kolumn pamietajac ze pierwszy element to 0.
  17. echo "<p class=\"player\"><a href=\"stats.php?team_id=$wiersz[1]&player=$wiersz[2]\">$wiersz[3]&nbsp;&nbsp;$wiersz[4]</a></p>";
  18. }
  19.  
  20. }
  21. else include ('allteam.php');


Ten post edytował sadistic_son 9.03.2010, 15:57:33


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
pawel.ad
post 9.03.2010, 16:56:36
Post #8





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


~sadistic son, wpadłem na to samo, ale stwierdziłem że aliasy są bardzie praktyczne;

próbuje więc:
  1. SELECT `players`.`id`, `players`.`name`, `players`.`lastname`, `players`.`team_id`, `teams`.`id`, `teams`.`name`
  2. AS p_id, p_name, p_lastname, p_teamid, t_id, t_name
  3. FROM `teams`, `players`
  4. WHERE ((`players`.`team_id` = $id) AND (`teams`.`id` = $id))
  5. ORDER BY `lastname`

ale za każdym razem jak próbuje wykonać te zapytanie w phpmyadmin, wyświetla mi błąd:
#1054 - Unknown column 'p_name' in 'field list'
Z kolei gdy usuwam "AS ..." wszystko jest OK.

Jak powinno wyglądać to zapytanie, żeby przypisało aliasy?

EDIT:
BTW. powinno się pisać FROM `teams`, `players` czy FROM teams, players, bo spotkałem się w kursach z oboma sposobami zapisu, i zastanawiam się który jest poprawny.

Ten post edytował pawel.ad 9.03.2010, 17:00:28
Go to the top of the page
+Quote Post
l3l0
post 9.03.2010, 17:09:39
Post #9





Grupa: Zarejestrowani
Postów: 94
Pomógł: 16
Dołączył: 24.07.2009
Skąd: Gdańsk

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


  1. SELECT `players`.`id` AS p_id , `players`.`name` AS p_name, `players`.`lastname` AS p_lastname, `players`.`team_id` AS t_id, `teams`.`name` AS t_name
  2. FROM `teams`
  3. INNER JOIN `players` ON `players`.`team_id` = `teams`.`id`
  4. WHERE `teams`.`id` = $id
  5. ORDER BY `lastname`


Ten post edytował l3l0 9.03.2010, 17:13:42
Go to the top of the page
+Quote Post
pawel.ad
post 9.03.2010, 19:31:10
Post #10





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


Dziękuje bardzo za wszystkie odpowiedzi.

Można zamknąć.
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: 14.07.2025 - 20:06