Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dwie takie same tabele
Forum PHP.pl > Forum > Przedszkole
st4chu
Zastanawiałem się nad tym co zrobić w przypadku dwóch kolumn mający taki sam tytuł.
Oto zapytanie SQL:
  1. SELECT t.threadid, t.lastpostid, t.title, t.lastpost, t.lastposter, t.views, t.replycount, t.forumid, f.title
  2. FROM ".PREFIX_FORUM."thread t
  3. LEFT JOIN ".PREFIX_FORUM."forum f ON t.forumid = f.forumid
  4. ORDER BY t.lastpost DESC
  5. LIMIT 0,".$maxlatesttopics"

W kolejności
  • ID tematu
  • ID Postu
  • Nazwa tematu
  • Data ostatniego postu (podana w czasie UNIX-owym)
  • Autor ostatniego postu
  • ile razy przeglądany był post
  • odpowiedzi
  • ID forum
  • Nazwa Forum

I tu się pojawia moje pytanie. W jaki sposób mam przypisać tabele by nie kolidować tych samych kolumn? Robiąc to w SQL'u ułatwiłoby mi zadanie.
Podam fragment kodu PHP, jeżeli będzie wszystko w porządku.
  1. while ($bdfgr=mysql_fetch_array($result)){
  2. $topictitle_full = clearfromtags($bdfgr['t.title']); // chodzi o tą część
  3. $topictitle = unhtmlspecialchars($topictitle_full);
  4. if(mb_strlen($topictitle)>$maxlatesttopicchars) {
  5. $topictitle=mb_substr($topictitle, 0, $maxlatesttopicchars);
  6. $topictitle.='...';
  7. }
  8. $topictitle = htmlspecialchars($topictitle);
  9.  
  10. $last_poster = $bdfgr['lastposter'];
  11. $board = $bdfgr['f.title']; // i o tą
  12. $date = date('d.m.Y - H:i', $bdfgr['lastpost']);
  13. $small_date = date('d.m H:i', $bdfgr['lastpost']);
  14.  
  15. $boardlink = '<a href="forumdisplay.php?f='.$bdfgr['forumid'].'">'.$board.'</a>';
  16. $topiclink = '<a href="showthread.php?t='.$bdfgr['threadid'].'&p='.$bdfgr['lastpostid']'#post'.$bdfgr['lastpostid']'" onmouseover="showWMTT(\'latesttopics_'.$n.'\')" onmouseout="hideWMTT()">'.$topictitle.'</a>';
  17. $replys = $bdfgr['replycount'];
  18. }
Oczekuję pomocy z waszej strony.
Pozdrawiam
mortus
Trzeba zaopatrzyć zapytanie SQL w aliasy dla kolumn:
  1. SELECT t.threadid, t.lastpostid, t.title t_title, t.lastpost, t.lastposter , t.views, t.replycount, t.forumid, f.title f_title
  2. FROM ".PREFIX_FORUM."thread t
  3. LEFT JOIN ".PREFIX_FORUM."forum f ON t.forumid = f.forumid
  4. ORDER BY t.lastpost DESC
  5. LIMIT 0,".$maxlatesttopics"
Wtedy w wynikach otrzymujemy kolumny t_title i f_title, a w samym PHP mamy do nich dostęp poprzez $bdfgr['t_title'] i $bdfgr['f_title'].

Choć tak naprawdę nie ma żadnej kolizji, kolumna t.title zostaje zwrócona jako title, a kolumna f.title jako title1.
st4chu
Podziękowania.

Teraz zrobię jak należy.
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.