Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawdzenie czy dana treść jest już w bazie
0g0r
post 17.01.2010, 16:05:51
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 24.10.2009

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


Siemka winksmiley.jpg
Potrzebuje sprawdzić (do statusu serwera cs 1.6), czy podane IP z portem, nie występują razem. Dla uściślenia dodam, że IP może występować wielokrotnie, jak i port, jednak razem mogą występować tylko raz. Napisałem kod, który podałem poniżej. Jednak gdy podaje IP, które w bazie jest lub nie ma, ciągle do niej dodaje kolejne rekordy. Gdzie popełniłem błąd?

  1. if($_POST["send"]==1){
  2. if(!empty($_POST["ip"]) && !empty($_POST["port"])){
  3. if(mysql_num_rows(mysql_query("select * from serwery where ip=$ip and port=$port"))){
  4. echo "Serwer jest w systemie"; }
  5. else
  6. {
  7. mysql_query("INSERT INTO `serwery` (`ip`, `port`, `forum`) VALUES('$ip', '$port', '$forum')");
  8. Serwer został dodany.
  9. ";
  10. }
  11. }
  12. else {
  13. echo "<br><br><center><b><font size='4'>Uzupełnij IP i Port serwera!</center><b></font>";
  14. }
  15. }

Go to the top of the page
+Quote Post
Blame
post 17.01.2010, 17:11:17
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


To dlatego, że funkcja mysql_num_rows zwraca false w przypadku wystąpienia błędu a nie gdy takiego rekordu nie ma. W tym przypadku zwraca 0.


--------------------
Go to the top of the page
+Quote Post
0g0r
post 17.01.2010, 21:03:38
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 24.10.2009

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


no tak... -.-, dzięki winksmiley.jpg

Jednak robię tak, jak poniżej i nieważne co wpisze, czy coś co już jest w bazie czy też nie, zawsze wyświetli mi 1 echo. Co jest nie tak?

  1. if($_POST["send"]==1){
  2. if(mysql_num_rows(mysql_query("select * from serwery where ip=$ip and port=$port")) == 0){
  3. echo "Nie ma serwera";
  4. }
  5. else
  6. {
  7. echo "Serwer jest w systemie";
  8. }
  9. }


Go to the top of the page
+Quote Post
emtiej
post 17.01.2010, 21:28:45
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 18
Dołączył: 12.04.2009
Skąd: Rypin

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


Na serwerze masz prawdopodobnie wyłączone register_globals, dlatego krótkie nazwy zmiennych takie jak $ip, $port nie zadziałają. Jeżeli pobierasz dane z formularza metodą POST skorzystaj z tablicy globalnej $_POST[], jeżeli GET no to tablica $_GET[]

W twoim przypadku widzę, że używasz POST, dlatego utwórz sobie krótkie nazwy zmiennych na początku skryptu

  1. $ip = $_POST['ip'];
  2. $port = $_POST['port'];


Ten post edytował emtiej 17.01.2010, 21:45:25
Go to the top of the page
+Quote Post
0g0r
post 17.01.2010, 22:32:39
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 24.10.2009

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


Już rozwiązałem ten problem smile.gif. Rozpisałem polecenie do mysql i śmiga. Jednak nasuwa mi się kolejne pytanie. Mianowicie, czy można sprawdzić poprawność podanego adresu IP?

Ten post edytował 0g0r 17.01.2010, 22:33:09
Go to the top of the page
+Quote Post
230005
post 17.01.2010, 22:47:43
Post #6





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Można - za pomocą wyrażeń regularnych. Możesz też pingować przez php: http://4programmers.net/PHP/FAQ/Jak_korzys...82a%C4%87_pinga konkretnie: $ping = exec("/bin/ping -c 5 $twoje_ip");
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: 18.07.2025 - 04:17