Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie czy dana treść jest już w bazie
Forum PHP.pl > Forum > PHP
0g0r
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. }

Blame
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.
0g0r
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. }


emtiej
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'];
0g0r
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?
230005
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");
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.