Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] 'Kropka' jako fragment kodu, a nie jako znacznik kończący część zawierającą PHP. / Problem z AS.
Forum PHP.pl > Forum > Przedszkole
pawel.ad
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ć?
nospor
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
phpion
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']
pawel.ad
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');
nospor
a gdzies ty te:
print_r($wiersz);
dal? Ma to byc w petli, gdzie iterujesz po wynikach
phpion
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.
sadistic_son
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');
pawel.ad
~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.
l3l0
  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`
pawel.ad
Dziękuje bardzo za wszystkie odpowiedzi.

Można zamknąć.
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.