Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Usunięty użytkownik a treść newsa
Eagle
post 14.07.2008, 23:14:23
Post #1





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


Witam.

Mam 2 tabele w bazie (podane są okrojone)
  1. CREATE TABLE `user` (
  2. `userId` INT NOT NULL AUTO_INCREMENT ,
  3. `userName` VARCHAR( 30 ) NOT NULL ,
  4. PRIMARY KEY ( `userId` )
  5. ) ENGINE = MYISAM
  6.  
  7. CREATE TABLE `news` (
  8. `newsId` INT NOT NULL AUTO_INCREMENT ,
  9. `userId` INT NOT NULL ,
  10. `newsText` TEXT NOT NULL ,
  11. PRIMARY KEY ( `newsId` )
  12. ) ENGINE = MYISAM


Aby wyświetlić news (treść + autora) wykonywałem takie zapytanie

  1. SELECT `news`.`newsText`, `user`.`userName`
  2. FROM `news`, `user`
  3. WHERE `news`.`newsId` = ? AND `user`.`userId` = `news`.`userId`
  4. LIMIT 1 ;


Oczywiście jest wszystko fajnie, tylko problem się pojawia podczas gdy danego użytkownika usunę. Ponieważ wtedy nie są wyświetlane jego newsy (wiem czemu tak się dzieje winksmiley.jpg)

I tutaj pojawia się moje pytanie: Jak ten problem najlepiej rozwiązać? (Najbardziej mi chodzi o to aby zapytanie zwróciło puste pole `userName` podczas gdy użytkownik nie istnieje)

Obecnie robię to dwoma zapytaniami: najpierw pobieram `news`.`newsText`, `news`.`userId` i dopiero później na podstawie `news`.`userId` pobieram nazwę użytkownika (o ile istnieje).

Pozdrawiam Eagle.
Go to the top of the page
+Quote Post
nospor
post 14.07.2008, 23:18:58
Post #2





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




Do tego sluzy left join
http://dev.mysql.com/doc/refman/5.0/en/join.html


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

"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
Kristof
post 14.07.2008, 23:21:43
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 15.12.2005

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


o ile dobrze zrozumiałem to w ostatnim zapytaniu gdy sprawdzasz nazwe użytkownika robisz takie coś:

  1. <?php
  2. $res = mysql_query(Select userName ......... Where ......) // to powinnes mieć
  3. $istnieje = mysql_num_rows($res);
  4. if ($istnieje == "0") $nazwa = "konto usunięto";
  5. else { ....... } // dalszy kod jak bylo dotychczas
  6. ?>


Oczywiście musisz sobie przyjąc swoje nazwy zmiennych biggrin.gif
Go to the top of the page
+Quote Post
Eagle
post 14.07.2008, 23:25:36
Post #4





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


może komuś się przyda

  1. SELECT `news`.`newsText` , `user`.`userName`
  2. FROM `news` LEFT JOIN `user` ON `news`.`userId` = `user`.`userId`
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.08.2025 - 01:42