Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Get i nieistniejąca podstrona
Forum PHP.pl > Forum > Przedszkole
artekp999
Napisałem skrypt czatu i za pomocą metody Get stworzyłem pokoje.
Link wygląda tak czat.php?pokoj=1 itd.
Pokoi mam np.7 ale jak wpisze np pokoj 8 to zsumowuje wszystkie posty ze wszystkich pokoi.
Dodajac post w danym pokoju zapisuje jego nr do bazy a pozniej odczytuje go w danym pokoju

Teraz mój problem
Jeśli wpiszę np. 8 pokój którego nie ma to zsumowuje wszystkie posty. Jak zablokować dalsze pokoje których nie ma t.j 8,9,10 itd

Kod pominąłem mało istotne rzeczy
  1. <?php
  2. include ("polacz.php");
  3.  
  4. echo '<center><a href="?pokoj=1">Podstrona</a>';
  5. echo '<a href="?pokoj=2">Podstrona</a>';
  6. echo '<a href="?pokoj=3">Podstrona</a>';
  7. echo '<a href="?pokoj=4">Podstrona</a>';
  8. echo '<a href="?pokoj=5">Podstrona</a>';
  9. echo '<a href="?pokoj=6">Podstrona</a>';
  10. echo '<a href="?pokoj=7">Podstrona</a></center><p>';
  11.  
  12. if ($_GET['pokoj'] == '1')
  13. {
  14. $kategoria = 1;
  15. }
  16. if ($_GET['pokoj'] == '2')
  17. {
  18. $kategoria = 2;
  19. }
  20. if ($_GET['pokoj'] == '3')
  21. {
  22. $kategoria = 3;
  23. }
  24. if ($_GET['pokoj'] == '4')
  25. {
  26. $kategoria = 4;
  27. }
  28. if ($_GET['pokoj'] == '5')
  29. {
  30. $kategoria = 5;
  31. }
  32. if ($_GET['pokoj'] == '6')
  33. {
  34. $kategoria = 6;
  35. }
  36. if ($_GET['pokoj'] == '7')
  37. {
  38. $kategoria = 7;
  39. }
  40.  
  41. $nadawca = $_SESSION['nick'];
  42. $idnadawca = $user[id];
  43. $wyslano = date('G:i:s');
  44. {
  45. echo '<center>';
  46. echo "$kategoria";
  47. echo '<div class="title">
  48. Następną wiadomość możesz wysłać za <span id="sekundy"></span>&nbsp;sekund.
  49. </div>';
  50. echo '<form action="" method="post">
  51. <input type="hidden" name="send" value="1">
  52. <input type="hidden" name="kategoria" value="'.$kategoria.'" />
  53. <table><tr>
  54. <td><input type="text" name="tresc" size="40" maxlength="40"/></td><td><input name="dodaj" type="submit" value="Wyślij" id="button"></form></td></tr></table>';
  55. }
  56. ?>
  57.  
  58. <script type="text/javascript">
  59. o=document.getElementById('sekundy');
  60. function odliczaj(o,sek){
  61. o.innerHTML=sek
  62. if(sek>0)setTimeout(function(){odliczaj(o,--sek)},1e3)
  63. var input = document.getElementById('button');
  64. input.disabled = 'disabled';
  65. if(sek==0)input.disabled = "";
  66. }
  67. odliczaj(document.getElementById('sekundy'),15)
  68. </script>
  69.  
  70. <?php
  71. $zapytanie = "INSERT INTO `czat` (`nadawca`, `idnadawca`, `wyslano`, `kategoria`, `tresc`) VALUES ('".$nadawca."', '".$idnadawca."', '".$wyslano."', '".$kategoria."', '".$tresc."')";
  72. $ostatnio = 'UPDATE `uzytkownicy` SET `ostatniododal`= "'.$ostatniododal.'" WHERE `id`="'.$user[id].'"';
  73. $idzapytania = mysql_query($zapytanie) or die(mysql_error());
  74. $idostatnio = mysql_query($ostatnio) or die(mysql_error());
  75. if($_POST['send'])
  76. {
  77. if(isset($idzapytania))
  78. {
  79. if($idzapytania === TRUE)
  80. {
  81. echo '<font color="green"><b>Poprawnie wysłano wiadomość</b></font><br />';
  82.  
  83. }
  84. else
  85. {
  86. echo '<font color="red"><b>Nie udało się wysłać wiadomości. Proszę spróbować za jakiś czas!</b></font><br />';
  87. }
  88. }
  89. }
  90. }
  91. echo '</center>';
  92.  
  93. $query = mysql_query("select * from czat WHERE `kategoria`='$kategoria' order by id desc limit 0,50");
  94. while($rekord = mysql_fetch_array($query))
  95. {
  96. $naz .= '<a href="news.php?id='.$rekord[2].'">'.$rekord[1].'</a>('.$rekord[3].') '.$rekord[5].'<br>';
  97. }
  98. echo "$naz";
  99. include ("glowne/stopka.php");
  100. ?>
by_ikar
Masakra biggrin.gif niech ten GET będzie w przedziale, powiedzmy 1 <= 8, a nie robisz x instrukcji warunkowych.. Ewentualnie zrób to w tablicy lub swotch, przecież jest tyle możliwości? smile.gif a jak GET będzie poza przedziałem 1-8 wyświetl błąd albo coś.. Poczytaj o DRY, o tworzeniu swoich funkcji w php, bo trochę powielasz kilka razy to co robisz, a są przecież pętle smile.gif
gorden
  1. $liczba_pokoi = 7; //sumuj z bazy, lub recznie zapisuj
  2. if($_GET['pokoj'] > $liczba_pokoi) echo 'Niepoprawny pokój!'; else {
  3. //warunki z getem. jesli dajesz jedna instrukcje, mozesz pominac nawiasy klamrowe, uzywaj elseif
  4. }
by_ikar
Cytat(gorden @ 29.05.2011, 19:44:56 ) *
  1. $liczba_pokoi = 7; //sumuj z bazy, lub recznie zapisuj
  2. if($_GET['pokoj'] > $liczba_pokoi) echo 'Niepoprawny pokój!'; else {
  3. //warunki z getem. jesli dajesz jedna instrukcje, mozesz pominac nawiasy klamrowe, uzywaj elseif
  4. }


Chyba:

  1. $liczba_pokoi = 7; //sumuj z bazy, lub recznie zapisuj
  2. if($_GET['pokoj'] <= $liczba_pokoi)
  3. {
  4. echo 'Niepoprawny pokój!';
  5. }
  6. else
  7. {
  8. //warunki z getem. jesli dajesz jedna instrukcje, mozesz pominac nawiasy klamrowe, uzywaj elseif
  9. }


Jak już wink.gif

ehh, bbcode w tagu php nie działa, więc chodzi o operator porównania, ustawiłeś "GET większy od liczba_pokoi".
nekomata
@up dobrze było . Get większy od liczby pokoi (7) jest właściwy , ty użyłeś większe lub równe 7 czyli 7 pokój będzie błędnie wyświetlony.
artekp999
problem rozwiązany

gorden twój sposób okazał się własciwy
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.