Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Zapytanie SQL w IF
Forum PHP.pl > Forum > Przedszkole
-Th0e-
Witam. Mam oto takiego ifa
  1. if(strlen($tytul)<= 100 && strlen($tytul)>= 5 && strlen($tresc)<= 10000 && strlen($tresc)>= 20 && empty($spr=mysqli_query($GLOBALS['db'], "SELECT * FROM `blog` WHERE `tresc`='$tresc'")))


błąd:

Parse error: syntax error, unexpected '=', expecting ')' in C:\tutaj ścieżka\blog.php on line 30

(w 30 linijce znajduje się powyższy if)

Moje pytanie. Jak poprawnie dać to zapytanie w ifie?

Pozdrawiam.
SmokAnalog
Niestety empty w PHP to taki potworek, który działa inaczej niż wszystko inne. To nie funkcja, a raczej instrukcja. Wewnątrz empty nie mogą się znaleźć żadne wyrażenia. Zamiast empty, porównaj wartość zwracaną przez mysqli_query do false:
  1. if(strlen($tytul)<= 100 && strlen($tytul)>= 5 && strlen($tresc)<= 10000 && strlen($tresc)>= 20 && ($spr=mysqli_query($GLOBALS['db'], "SELECT * FROM `blog` WHERE `tresc`='$tresc'")) !== false)

Zakładam, że miałeś na myśli !empty, a nie empty (sprawdzasz czy zapytanie się poprawnie wykonało).
-Th0e-
Cytat(SmokAnalog @ 2.11.2013, 12:32:22 ) *
Niestety empty w PHP to taki potworek, który działa inaczej niż wszystko inne. To nie funkcja, a raczej instrukcja. Wewnątrz empty nie mogą się znaleźć żadne wyrażenia. Zamiast empty, porównaj wartość zwracaną przez mysqli_query do false:
  1. if(strlen($tytul)<= 100 && strlen($tytul)>= 5 && strlen($tresc)<= 10000 && strlen($tresc)>= 20 && ($spr=mysqli_query($GLOBALS['db'], "SELECT * FROM `blog` WHERE `tresc`='$tresc'")) !== false)

Zakładam, że miałeś na myśli !empty, a nie empty (sprawdzasz czy zapytanie się poprawnie wykonało).


Chciałem żeby sprawdzało, czy czasem takiego wpisu już nie ma w bazie danych smile.gif
Turson
Do tego sluzy funkcja sprawdzajaca ilosc wynikow.
-Th0e-
Mam jednak większy problem z danym skryptem. A mianowicie wszystko wygląda tak:

  1.  
  2. function wysylanie($tytul, $tresc, $autor)
  3. {
  4. if(sprawdz($tytul, $tresc)==true)
  5. {
  6. $data=date("Y-m-d H:i");
  7. mysqli_query($GLOBALS['db'], "INSERT INTO `blog`(tytul, tresc, autor, data) VALUES('$tytul','$tresc','$autor','$data')");
  8. header("Location: index.php?wyslano");
  9. }
  10. else echo "BŁĄD! Tytuł może zawierać 5-100 znaków. Treść główna 20-10000, oraz blogi nie mogą się powtarzać!";
  11. }
  12.  
  13. function sprawdz($tytul, $tresc)
  14. {
  15. if(strlen($tytul)<= 100 && strlen($tytul)>= 5 && strlen($tresc)<= 10000 && strlen($tresc)>= 20)
  16. {
  17. $spr=mysqli_query($GLOBALS['db'], "SELECT * FROM `blog` WHERE `tresc`='$tresc'");
  18.  
  19. if(empty($spr))
  20. return true;
  21. }
  22. else
  23. return false;
  24. }
  25.  
  26. echo'<form method="POST"><br />
  27. <input type="text" name="tytul"><br />
  28. <input type="text" name="tresc"><br />
  29. <input type="text" name="autor"><br />
  30. <input type="submit" value="wyslij">
  31. </form>';
  32.  
  33. if(!empty($_POST))wysylanie($_POST['tytul'], $_POST['tresc'], $_POST['autor']);
  34.  
  35.  


Problem dokładnie leży w:

  1. if(empty($spr))
  2. return true;


Ponieważ ciągle wywala mi "BŁĄD! Tytuł może zawierać 5-100 znaków. Treść główna 20-10000, oraz blogi nie mogą się powtarzać!" Niezależnie czy podam odpowiednią ilość znaków czy nie. Gdy zamiast empty dam !empty to działa, ale to trochę dziwne i chyba po prostu nie sprawdza $tresc z zawartością bazy. Ktoś wie o co chodzi?
-Th0e-
Dobra poradziłem sobie z tym.

  1. $spr=mysqli_fetch_array(mysqli_query($GLOBALS['db'], "SELECT * FROM `blog` WHERE `tresc`='$tresc'"));
  2.  
  3. if(count($spr)==0)
  4. return true;


jak na razie działa bez zarzutów.
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.