Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak stworzyć poprawnie funkcje w php aby odczytać je poprzez Ajax?
Forum PHP.pl > Forum > XML, AJAX
Karmazyner
Witam serdecznie.

Jestem aktualnie na etapie tworzenia "szukajki" poprzez ajax.
O tle o ile udało mi się zbudować całe wyszukiwanie na dwóch plikach: szukaj.php oraz funkcje.php i działa to odpowiednio to chciałbym się zorientować jak wrzucić moje zapytanie do funkcji.

Oto kawałek kodu:

  1. <script>
  2. $(document).ready(function(){
  3.  
  4. function load_data(query)
  5. {
  6. $.ajax({
  7. url:"funkcje.php",
  8. method:"POST",
  9. data: {
  10. action: "checkuser",
  11. query: query
  12. },
  13. success:function(data)
  14. {
  15. $('#result').html(data);
  16. }
  17. });
  18. }
  19. $('#search').keyup(function(){
  20. var search = $(this).val();
  21. if(search != '')
  22. {
  23. load_data(search);
  24. }
  25. else
  26. {
  27. $("#result").empty();
  28. }
  29. });
  30. });
  31. </script>


oraz:

  1. <?php
  2.  
  3. function checkuser(){
  4. require ('config.php');
  5. $return = '';
  6. if(isset($_POST["query"]))
  7. {
  8. $search = mysqli_real_escape_string($conn, $_POST["query"]);
  9. $query = "SELECT * FROM USERS
  10. WHERE IMIE LIKE '%".$search."%'
  11. ";}
  12. else
  13. {
  14. $query = "SELECT * FROM USERS";
  15. }
  16. $result = mysqli_query($conn, $query);
  17. if(mysqli_num_rows($result) > 0)
  18. {
  19. $return .='
  20. <p>IMIE</p>
  21. ';
  22.  
  23. while($row = mysqli_fetch_array($result))
  24. {
  25. $return .= '
  26.  
  27. <p>'.$row["IMIE"].'</p>
  28. ';
  29. }
  30.  
  31. echo $return;
  32. ;
  33. }
  34. else
  35. {
  36. echo 'NIE MAMY TAKIEGO USERA!.';
  37. }
  38. }
  39. ?>


Powyższy kod jak widać próbowałem wrzucić w:
  1. function checkuser()
  2. {
  3.  
  4. }

Ale niestety nie działa.

Jeśli powyższy kod checkuser usunę oraz zastąpię kod takim:
  1. data: {
  2. query: query
  3. },


To wszystko działa.
Funkcja jest mi to potrzebna do tego aby nie trzymać każdej funkcji w osobnym pliku .php smile.gif
Pozdrawiam smile.gif
Salvation
Taki zapis to deklaracja:
  1. function checkuser() { ... }

Żeby to zadziałało tak jak chcesz, to musisz w tym samym pliku PHP jeszcze wywołać tą Twoją funkcję. Czyli po zamknięciu klamry, w nowej linii, wpisz po prostu to:
  1. checkuser();


A dodatkowo: wrzuć walidację dla
  1. $_POST["query"]
bo prosisz się o problemy.
Karmazyner
Cytat(Salvation @ 21.04.2022, 21:52:34 ) *
Taki zapis to deklaracja:
  1. function checkuser() { ... }

Żeby to zadziałało tak jak chcesz, to musisz w tym samym pliku PHP jeszcze wywołać tą Twoją funkcję. Czyli po zamknięciu klamry, w nowej linii, wpisz po prostu to:
  1. checkuser();


Dziękuje, to działa, ale spotkałem następny problem.
Przykładowo posiadam plik funkcje.php z zawartością:

  1. <?php
  2. function funkcja1()
  3. {
  4. ....
  5. }
  6. funkcja1()
  7. ?>
  8.  
  9. <?php
  10. function funkcja2()
  11. {
  12. ....
  13. }
  14. ?>


I generalnie ze strony ajax wszystko jest w porządku bo odwołuje się do funkcja1() i ją wyświetla nie patrząc na funkcje2().
Tylko czy w tym samym pliku mogę trzymać funkcje które będę używał w innym pliku php? tzn:
  1. <div class="aaa">
  2. <?php
  3. require_once ('funkcje.php');
  4. funkcja2();
  5. ?>
  6. </div>


Bo na ten moment wywala mi zarówno funkcja1() oraz funkcja2().
Domyślam się że chodzi o wywołanie " funkcja1(); " po zamkniętej klamrze, dlatego wywala dwa zapytania, a chciałbym tylko aby pokazywało funkcja2() w tym php.
Bo chciałbym mieć parę równych odwołań w ajaxie w innym pliku php do różnych funkcje.php oraz parę funkcji bezpośrednio w innym pliku php do których odwoływał bym się do funkcje.php
Da radę to jakoś pogodzić czy trzeba rozdzielać wszystko na osobne pliki?
nospor
Funkcje.php to plik ktory zawiera funkcje. NIe mozesz do niego slac ajaxa. Ajax masz slac do plik1.php, plik2.php i odpowiednoi w plik1 odplasz funkcje1 a w plik2 funkcje2 czy jak ty tam se te pliki nazwiesz
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.