Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z zapytaniem
Forum PHP.pl > Forum > Przedszkole
kapakmag
Witam mam problem z zapytaniem . Mam tabelę ab_list gdzie są przechowywane bany na serwerze . Wygląd tabeli:
id nick adminnick ip banfrom banto reason status
Edytuj Inline Edit Kopiuj Usuń 1 test *Console* Offline 1325437863 0 None 2
Edytuj Inline Edit Kopiuj Usuń 2 test *Console* 127.0.0.1 1325531716 0 None 2
1-zbanowany
2-Od banowany
Teraz pytanie jak zrobić aby pokazał tylko jeden rekord najlepiej ten drugi ( jest to tabela z permami )

Stworzyłem coś takiego , ale raczej jest to źle
  1. <?php
  2. $result = mysql_query("SELECT * FROM ab_list WHERE nick = '$login' LIMIT 1");
  3. if(mysql_num_rows($result) > 2){
  4. echo 'Status: <b>Dodany</b><br>';
  5. }
  6. else{
  7. echo 'Status:<b>Nie dodany</b><br>';
  8. }
  9.  
  10. ?>
piotrooo89
nie bardzo rozumiem. może chodzi Ci o to:

  1. SELECT * FROM ab_list WHERE nick = '$login' AND STATUS = 2 LIMIT 1
kapakmag
Nie oto mi chodzi . Chcę aby jeżeli w kolumnie status będzie liczba 2 to będzie pisało że jest od banowany , a jeśli 1 to zbanowany
piotrooo89
czyli masz pewnie drugą tabele (słownikową) z tym co oznacza każdy status, jeśli tak użyj JOIN'a.
kapakmag
Zapomniałem dodać , że jeżeli nic nie będzie tam pisało po prostu nie będzie tam nawet nicku osoby to pisze że nie jest zbanowany smile.gif
piotrooo89
kurcze możesz podać strukturę tabel i relacje pomiędzy nimi, bo teraz nie wiem być może Ci chodzi o LEFT JOIN.
Bartłomiej Skwara
Cytat(kapakmag @ 2.01.2012, 21:04:04 ) *
Nie oto mi chodzi . Chcę aby jeżeli w kolumnie status będzie liczba 2 to będzie pisało że jest od banowany , a jeśli 1 to zbanowany

Zakładam, że to dość proste rozwiązanie i nie ma tutaj oddzielnej tabeli z opisami stanów usera.
Jeżeli coś, to coś, czyli IF.
  1.  
  2. <?php
  3. $result = mysql_query("SELECT `status` FROM `ab_list` WHERE `nick` = '$login' LIMIT 1");
  4. $row = mysql_fetch_row($result);
  5. $stan = $row[0];
  6.  
  7.  
  8. if($stan == "1") {
  9. echo "zbanowany";
  10. }
  11. if($stan == "2") {
  12. echo "niezbanowany";
  13. }
  14.  
  15. ?>
  16.  
kapakmag
Oto struktura tabeli
  1. CREATE TABLE IF NOT EXISTS `ab_list` (
  2. `id` int(10) NOT NULL AUTO_INCREMENT,
  3. `nick` varchar(64) NOT NULL,
  4. `adminnick` varchar(64) NOT NULL,
  5. `ip` varchar(35) NOT NULL,
  6. `banfrom` int(8) NOT NULL,
  7. `banto` int(8) NOT NULL,
  8. `reason` varchar(128) NOT NULL,
  9. `status` int(1) NOT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

No wiec tak wytłumaczę to jeszcze raz smile.gif
Jeżeli osoba która jest w tabeli ma status 2 to znaczy że jest od banowana , 1 zbanowana . Jeżeli nie ma jej w tabeli to chciałbym aby pisało że nie jest zbanowana
2-od banowana
1-zbanowana
brak w tabeli - nie zbanowana stworzyłem taki kod :
  1. <?php
  2. $result = mysql_query("SELECT * FROM ab_list WHERE nick = '$login' ");
  3. if(mysql_num_rows($result) > 0){
  4. echo 'Status: <b>Dodany</b><br>';
  5. }
  6. else{
  7. echo 'Status:<b>Nie dodany</b><br>';
  8. }
  9.  
  10. ?>

piotrooo89
no to zwykły if

  1. $statusShow = '';
  2. if ( $status == 1 )
  3. $statusShow = 'zbanowana';
  4. else if ( $status == 2 )
  5. $statusShow = 'od banowana';
  6. else
  7. $statusShow = 'nie zbanowana';


i tyle, teraz zmienną $statusShow wyświetlasz w swojej tabelce i już.
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.