5 Cze 2008, 12:36
dymekdan...@gmail.com

Witam
Mam w bazie danych dwie tabele, ktore lacze jak ponizej. W obydwu
tabelach wystepuje taka sama nazwa kolumny (nazwa) i mam problem z jej
wyswietleniem. Fragmencik kodu, ktory nie dziala:

      $sql = "SELECT * FROM tab1,tab2 WHERE
primary_key_tab1=foreign_key_tab2;";
      $result = mysql_query($sql)
      or die("Niepoprawne zapytanie: " . mysql_error());
      while ($row = mysql_fetch_array($result))
      {
            echo "Nazwa_tab1: ".$row['tab1.nazwa']."<br\n";
            echo "Nazwa_tab2: ".$row['tab2.nazwa']."<br\n";
      }

Jak zmusic php, zeby wyswietlil mi obydwa pola "nazwa"??




5 Cze 2008, 12:46
Lemat


Witam
Mam w bazie danych dwie tabele, ktore lacze jak ponizej. W obydwu
tabelach wystepuje taka sama nazwa kolumny (nazwa) i mam problem z jej
wyswietleniem. Fragmencik kodu, ktory nie dziala:

      $sql = "SELECT * FROM tab1,tab2 WHERE
primary_key_tab1=foreign_key_tab2;";
      $result = mysql_query($sql)
      or die("Niepoprawne zapytanie: " . mysql_error());
      while ($row = mysql_fetch_array($result))
      {
echo "Nazwa_tab1: ".$row['tab1.nazwa']."<br\n";
echo "Nazwa_tab2: ".$row['tab2.nazwa']."<br\n";
      }

Jak zmusic php, zeby wyswietlil mi obydwa pola "nazwa"??



print_r($row)

SELECT tab1.X as Y, tab2.X as Z FROM ...


5 Cze 2008, 14:32
Bolek

print_r($row)

SELECT tab1.X as Y, tab2.X as Z FROM ...



ja to robiłem przez SELECT (nazwy pól)  FROM tab1 LEFT JOIN tab2 ON
(tab2.id = tab1.id)

nie wiem tylko który jest wydajniejszy .

pozdrawiam


5 Cze 2008, 14:37
dymekdan...@gmail.com



| Witam
| Mam w bazie danych dwie tabele, ktore lacze jak ponizej. W obydwu
| tabelach wystepuje taka sama nazwa kolumny (nazwa) i mam problem z jej
| wyswietleniem. Fragmencik kodu, ktory nie dziala:

|       $sql = "SELECT * FROM tab1,tab2 WHERE
| primary_key_tab1=foreign_key_tab2;";
|       $result = mysql_query($sql)
|       or die("Niepoprawne zapytanie: " . mysql_error());
|       while ($row = mysql_fetch_array($result))
|       {
| echo "Nazwa_tab1: ".$row['tab1.nazwa']."<br\n";
| echo "Nazwa_tab2: ".$row['tab2.nazwa']."<br\n";
|       }

| Jak zmusic php, zeby wyswietlil mi obydwa pola "nazwa"??

print_r($row)

SELECT tab1.X as Y, tab2.X as Z FROM ...

--
Pozdrawiam
Lemat



Na to wpadlem, wymyslilem tez zeby przy wypisywaniu pol korzysac z
normalnego indeksowania tablicy, a nie z asocjacyjnego. Myslalem, ze
da sie to rozwiazac jakos z poziomu php, ale teraz widze, ze to po
prostu ograniczenie mysql_fetch_array() i nie da rady tego zrobic w
ten sposob. W kazdym razie dziekuje za pomoc




5 Cze 2008, 15:03
Lemat


| print_r($row)

| SELECT tab1.X as Y, tab2.X as Z FROM ...

ja to robiłem przez SELECT (nazwy pól)  FROM tab1 LEFT JOIN tab2 ON
(tab2.id = tab1.id)

nie wiem tylko który jest wydajniejszy .



które jest wydajniejsze złączenie tablic? NTG, sio na pl.comp.bazy-danych


5 Cze 2008, 15:27
dymekdan...@gmail.com

Myslalem, ze
da sie to rozwiazac jakos z poziomu php, ale teraz widze, ze to po
prostu ograniczenie mysql_fetch_array() i nie da rady tego zrobic w
ten sposob.



A jednak sie da :D Wystarczy
SELECT *, tab1.Nazwa AS nazwa1, tab2.Nazwa AS nazwa2 FROM tab1,tab2
[...]
while ($row = mysql_fetch_array($result))
      {
            echo "Nazwa_tab1: ".$row['nazwa1']."<br\n";
            echo "Nazwa_tab2: ".$row['nazwa2']."<br\n";
      }
Takiego wlasnie rozwiazania szukalem, ale troche czasu mi zajelo
wpadniecie, ze bedzie dzialala * i aliasy jednoczesnie :) Ale to juz
sie robi NTG :)


5 Cze 2008, 15:44
Piotr Keplicz


Na to wpadlem, wymyslilem tez zeby przy wypisywaniu pol korzysac z
normalnego indeksowania tablicy, a nie z asocjacyjnego. Myslalem, ze
da sie to rozwiazac jakos z poziomu php, ale teraz widze, ze to po
prostu ograniczenie mysql_fetch_array()



To wynika z tego, jaki wynik przekazuje serwer, mysql_fetch_array() nie ma
tu nic do gadania.

.pk.


5 Cze 2008, 16:51
dymekdan...@gmail.com



| Na to wpadlem, wymyslilem tez zeby przy wypisywaniu pol korzysac z
| normalnego indeksowania tablicy, a nie z asocjacyjnego. Myslalem, ze
| da sie to rozwiazac jakos z poziomu php, ale teraz widze, ze to po
| prostu ograniczenie mysql_fetch_array()

To wynika z tego, jaki wynik przekazuje serwer, mysql_fetch_array() nie ma
tu nic do gadania.

.pk.



"mysql_fetch_array() jest rozszerzoną wersją mysql_fetch_row(). Oprócz
zapisywania danych w indeksach numerycznych, zapisuje je też w
indeksach przyporządkowujących (asocjacyjnych), używając nazw pól jako
kluczy.

Jeżeli dwie lub więcej kolumn wyniku ma te same nazwy, ostatnia
kolumna będzie brana pod uwagę. Dostęp do innych kolumn o tej samej
nazwie jest możliwy jedynie przez indeksowanie numeryczne lub przez
stworzenie aliasa. Po stworzeniu aliasa nie można już odwoływać się do
danej kolumny używając jej prawdziwej nazwy (w tym przykładzie
używając 'pole')."

Zrodlo: http://pl2.php.net/mysql_fetch_array


6 Cze 2008, 01:13
pakalk


| Myslalem, ze
| da sie to rozwiazac jakos z poziomu php, ale teraz widze, ze to po
| prostu ograniczenie mysql_fetch_array() i nie da rady tego zrobic w
| ten sposob.

A jednak sie da :D Wystarczy
SELECT *, tab1.Nazwa AS nazwa1, tab2.Nazwa AS nazwa2 FROM tab1,tab2
[...]
while ($row = mysql_fetch_array($result))
      {
            echo "Nazwa_tab1: ".$row['nazwa1']."<br\n";
            echo "Nazwa_tab2: ".$row['nazwa2']."<br\n";
      }
Takiego wlasnie rozwiazania szukalem, ale troche czasu mi zajelo
wpadniecie, ze bedzie dzialala * i aliasy jednoczesnie :) Ale to juz
sie robi NTG :)



Cos Ty.. Da sie? Wyslij to na priv Lematowi, bo on ZUPELNIE CO INNEGO
probowal robic w pierwszej odpowiedzi na Twoje pytanie...


6 Cze 2008, 02:21
Piotr Keplicz


| To wynika z tego, jaki wynik przekazuje serwer, mysql_fetch_array() nie
| ma tu nic do gadania.
Jeżeli dwie lub więcej kolumn wyniku ma te same nazwy, ostatnia
kolumna będzie brana pod uwagę. Dostęp do innych kolumn o tej samej
nazwie jest możliwy jedynie przez indeksowanie numeryczne lub przez
stworzenie aliasa.



Tak, a teraz spójrz do wyniku tego typu zapytania w konsoli mysql.
Zobaczysz, że kolumny są nazwane w/g nazw pól, bez nazwy tabeli, więc i
mysql_fetch_assoc/array nie miałoby możliwości zachować się inaczej.

.pk.


6 Cze 2008, 05:30
dymekdan...@gmail.com



| Myslalem, ze
| da sie to rozwiazac jakos z poziomu php, ale teraz widze, ze to po
| prostu ograniczenie mysql_fetch_array() i nie da rady tego zrobic w
| ten sposob.

| A jednak sie da :D Wystarczy
| SELECT *, tab1.Nazwa AS nazwa1, tab2.Nazwa AS nazwa2 FROM tab1,tab2
| [...]
| while ($row = mysql_fetch_array($result))
|       {
|             echo "Nazwa_tab1: ".$row['nazwa1']."<br\n";
|             echo "Nazwa_tab2: ".$row['nazwa2']."<br\n";
|       }
| Takiego wlasnie rozwiazania szukalem, ale troche czasu mi zajelo
| wpadniecie, ze bedzie dzialala * i aliasy jednoczesnie :) Ale to juz
| sie robi NTG :)

Cos Ty.. Da sie? Wyslij to na priv Lematowi, bo on ZUPELNIE CO INNEGO
probowal robic w pierwszej odpowiedzi na Twoje pytanie...



Aliasy to i ja znalem, nie wiedzialem tylko, ze mozna do nich dorzucic
gwiazdke i tez bedzie dzialalo. Potrzebuje akurat w tym miejscu
wszystkich kolumn, a nie chcialem ich wymieniać.


6 Cze 2008, 05:33
dymekdan...@gmail.com



| To wynika z tego, jaki wynik przekazuje serwer, mysql_fetch_array() nie
| ma tu nic do gadania.
| Jeżeli dwie lub więcej kolumn wyniku ma te same nazwy, ostatnia
| kolumna będzie brana pod uwagę. Dostęp do innych kolumn o tej samej
| nazwie jest możliwy jedynie przez indeksowanie numeryczne lub przez
| stworzenie aliasa.

Tak, a teraz spójrz do wyniku tego typu zapytania w konsoli mysql.
Zobaczysz, że kolumny są nazwane w/g nazw pól, bez nazwy tabeli, więc i
mysql_fetch_assoc/array nie miałoby możliwości zachować się inaczej.

.pk.



Mialem jakas cicha nadzieje, ze mysql_fetch_array automatycznie
zmienia nazwy tych kolumn, tylko nie wiedzialem na co ;)


8 Cze 2008, 17:55
pakalk




| Myslalem, ze
| da sie to rozwiazac jakos z poziomu php, ale teraz widze, ze to po
| prostu ograniczenie mysql_fetch_array() i nie da rady tego zrobic w
| ten sposob.

| A jednak sie da :D Wystarczy
| SELECT *, tab1.Nazwa AS nazwa1, tab2.Nazwa AS nazwa2 FROM tab1,tab2
| [...]
| while ($row = mysql_fetch_array($result))
|       {
|             echo "Nazwa_tab1: ".$row['nazwa1']."<br\n";
|             echo "Nazwa_tab2: ".$row['nazwa2']."<br\n";
|       }
| Takiego wlasnie rozwiazania szukalem, ale troche czasu mi zajelo
| wpadniecie, ze bedzie dzialala * i aliasy jednoczesnie :) Ale to juz
| sie robi NTG :)

| Cos Ty.. Da sie? Wyslij to na priv Lematowi, bo on ZUPELNIE CO INNEGO
| probowal robic w pierwszej odpowiedzi na Twoje pytanie...

Aliasy to i ja znalem, nie wiedzialem tylko, ze mozna do nich dorzucic
gwiazdke i tez bedzie dzialalo. Potrzebuje akurat w tym miejscu
wszystkich kolumn, a nie chcialem ich wymieniać.



aha.. a to duzy phpoowy problem... no a czasu zabiera przetestowanie,
ze hoho...


nowy php nowy problem ;)
fputs problem z parametrem 'w'
biblioteka gd - problem z 'imagecreate'
PHP i w2k - Big Brother...tfuu....Big problem :))
PHP z apache i problem dostepu userow poza 'public_html' ...
Niby proste, a... <img src="'.$zdjecie.'"... ale jest problem
PHP + MySQL + ,,Best viewed with any browser'' -- czy to mozliwe?
  • trojkolorowe latwe w przygotowaniu teczowe
  • straznik portalu
  • gynalgin a antykoncepcja
  • tamagotchi conections
  • katowice gielda kolejka
  • charakterystyka wietnamu
  • lekcja religii w szkolach
  • neE0F7E0F2FC EFEEF0EDEE F4EBE5F8 ECoEBFCF2F4E8EBFCECFB EFEEF0EDEE
  • bluetooth sim access
  • Zestawienie wypowiedzi z for internetowych ; Index