Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak stworzyć poprawnie funkcje w php aby odczytać je poprzez Ajax?, [ajax][php][mysql]
Karmazyner
post 21.04.2022, 19:51:05
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 15.04.2022

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


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

Ten post edytował Karmazyner 21.04.2022, 19:51:58
Go to the top of the page
+Quote Post
Salvation
post 21.04.2022, 20:52:34
Post #2





Grupa: Zarejestrowani
Postów: 338
Pomógł: 70
Dołączył: 15.07.2014

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


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.
Go to the top of the page
+Quote Post
Karmazyner
post 22.04.2022, 11:50:02
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 15.04.2022

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


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?

Ten post edytował Karmazyner 22.04.2022, 12:15:53
Go to the top of the page
+Quote Post
nospor
post 22.04.2022, 12:21:57
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 28.03.2024 - 21:39