Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jak to wykonać w ajax, formularz,baza danych
morrison
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 24.05.2004
Skąd: krakow

Ostrzeżenie: (10%)
X----


witam,

Przerabiam pewna aplikacje na ajax i dopiero zaczynam sie tego uczyc. Nie jestem pewny jak najprosciej i najlatwiej przetwarzac dane w ajax.
Najlepiej byloby zebym robiac najmniej modyfikacji w kodzie mogl przerobic wszystko na ajax. Mam pytanie, jak wykonac mechanizm tego typu w ajax:

  1. <form name="form_data" onsubmit="return valid_data();" method="post" action="talk_time_all.php">
  2. <table align="center">
  3.  <tr><td align="left"><div class="textkontakt">Format:</td><td>rrrr-mm-dd gg:mm:ss</div></td></tr>
  4.  <tr><td align="left"><div class="textkontakt">data od:</div></td>
  5. <td>
  6. <input type="text" size="19" id="name" value ="<?php
  7. $today = date("Y-m-d, H:i");
  8. $print_date = substr($today, 0, 10);
  9. echo $print_date; ?> 00:00:01" class="kolorpol" maxlength="19" name="date_od" />
  10. </td>
  11.  </tr>
  12.  <tr><td align="left"><div class="textkontakt">data do:</div></td>
  13. <td>
  14. <input type="text" size="19" id="name" value ="<?php 
  15. $print_time = substr($today, 12, 5);
  16. echo $print_date." ".$print_time; ?>:00"
  17. class="kolorpol" maxlength="19" name="date_do" /></td>
  18.  </tr>
  19.  <tr><td></td>
  20. <td><br />
  21.  <input class="przeslij" type="submit" value="Akceptuj" />
  22.  <input name="mode_1" type="hidden" value="search_1" />
  23. </td>
  24.  </tr>
  25. </table>
  26. </form>
  27. <?php
  28. //jezeli wyslano pierwszy formularz,wowczas wejdz do petli
  29. if (@$_POST['mode_1'] == 'search_1'){
  30. $date_od = $_POST['date_od']; //podstawia date z formularza
  31. $date_do = $_POST['date_do'];
  32.  
  33. //zapytanie wybierajace wszystkie roznorodne nazwy portfolio z okreslonego przedzi
    alu czasu dla ktorych 
  34. //byla prowadzona rozmowa
  35. $result = mssql_query("select distinct callbase from eis_eventlog where datimestamp >= '".$date_od."'
  36. and datimestamp <= '".$date_do."' and callbase <> '' and oldstate = '9' order by callbase");
  37.  
  38. $value_rows = rows_affected(); //obliczenie ilosci zwroconych rekordow
  39.  
  40.  
  41. // przegladamy wyniki zapytania wiersz po wierszu
  42. // wrzucajac dane do tymczasowej tablicy
  43. $tablica_wyniki[0] = 0;  //deklaracja tablicy na wypadek gdyby zapytanie nie zwrocilo wynikow
  44. $i = 0;
  45. while ($portfolio = mssql_fetch_row($result)) {
  46. $tablica_wyniki[$i] = $portfolio[0];
  47. ++$i;
  48. }


Chodzi mi przede wszystkim o to jak zrobic w ajax zeby odebrac dane podane w formularzu i wyslac je do tego samego skryptu PHP, a potem sprawdzic czy te dane zostaly wyslane no i jesli tak to zeby dzialanie skryptu przeszlo w odpowiednie miejsce, zeby wykonac zapytanie do bazy. W tym momencie mam to zrobione tak ze wysylam w formularzy pole <input name="mode_1" type="hidden" value="search_1" /> a potem gdy istnieje taka dana to wykonuje sie odpowiedni fragment kodu. Ktos moze pomoc?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
tommy4
post
Post #2





Grupa: Zarejestrowani
Postów: 288
Pomógł: 12
Dołączył: 2.12.2005

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


Nie potrafię wczuć się w ten problem, ale musisz po prostu wiedzieć, że AJAX to zwykłe wywoływanie stron, jednak tak jakby niewidoczne dla przeglądającego.

No więc możesz wysłać dane post i potem z tego samego linku odebrać jakieś dane.

Te dane potem podmieniasz na stronie za pomocą innerHTML czy tam czegokolwiek chcesz. Nie ma tu wyższej filozofii.

Pytasz jak pobrać dane z formularza.

AJAX to zwykły JavaScript, także po prostu:

var text = document.getElementById("pole_tekstowe").value;

jeśli chcesz przesyłać przez get to używasz encodeURIComponent, jeśli przez post to ci nie pomogę, bo nie próbowałem. tongue.gif

http://developer.mozilla.org/en/docs/AJAX:Getting_Started

Poczytaj to, strasznie się przydaje.

Więc dajmy na to gość wpisał w polu tekstowym swoje imie i nazwisko.

[Jaś Fasola]

podczas kliknięcia na button, czy co tam chcesz, wywołujesz funkcję, która wysyła to imię np.

getURL("plik.php?name=" + encodeURIComponent(document.getElementById('pole_tekstowe').value));

No i potem w pliku.php obrabiasz te dane, wsadzasz do bazy i tak dalej. Jeśli się udało, to np. zwracasz tekst:

ok <id> <imie_nazwisko>

jeśli nie to:

error <blad>

No i potem znowu obrabiasz przez javascript i walisz na stronę poprzez podmianę divów (innerHTML) czy cokolwiek.

Powodzenia, i zawsze myśl, że nic nie jest trudne, tylko tak wygląda. smile.gif

Przeczytaj to na mozilli, bo bardzo pomaga.
Go to the top of the page
+Quote Post
bartek00
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 12.04.2007
Skąd: Kraków

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


Witam

Na poczatek jesli zaczynasz zabawe z AJAX to sprobuj wykorzystac jakas gotowa biblioteke. Ja osobiscie polecam prototype. Jesli chodzi o problem, ktory przedstawiles to proponuje nastepujace rozwiazanie.

Po pierwsze kazdy formularz oddziel do osobnego pliku. Tak aby byl jakis div w nim form i tyle. Nastepnie na stronie gdzie ma sie wyswietlac formularz wstaw kolejnego div nazwij sobie go np. form_area. Plik z formularzem mozesz poprostu includowac. Teraz musisz zrobic na formularzu jakas akcje podczas submitowania. Proponuje wykorzystac Ajax.Updater z prototype. Wywolac go onsubmit. Robi on tyle ze do elementu html o podanym id wstawia to co mu zwroci adres, ktory mu przekazemy. W naszym przypadku bedzie to adres pliku, ktory ma sprawdzic poprawnosc danych formularza. Jesli walidacja sie nie powiodla to wyswietlamy ponownie formularz. Wtedy Ajax.Updater wstawi go w to samo miejsce czyli zrobi innerHtml na form_area. Mozna w ten sposob wyswietlac automatycznie bledy. Jesli walidacja sie powiedzie mozna wyswietlic inny widok, np. komunikat potwierdzajacy udana akcje.

Pozdrawiam


--------------------
"What you are talking to me about what"
Go to the top of the page
+Quote Post
morrison
post
Post #4





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 24.05.2004
Skąd: krakow

Ostrzeżenie: (10%)
X----


dzieki Chlopaki, pomogliscie. zrobilem to poprzez advAJAX. teraz mam kolejne pytanie, wczesniej mi dzialala funkcja napisana w JS, ktora walidowala poprawnosc danych wpisanych do formularza - jesli byly nie poprawne to nie dalo sie wyslac formularza, teraz moj formularz wyglada tak:


  1. <form name="form_data" id="form_talk_time_all" onsubmit="return valid_data();" method="post" action="talk_time_all.php">
  2. <table align="center">
  3. <tr><td align="left"><div class="textkontakt">Format:</td><td>rrrr-mm-dd gg:mm:ss</div></td></tr>
  4. <tr><td align="left"><div class="textkontakt">data od:</div></td>
  5. <td>
  6. <input type="text" size="19" id="date_od" value ="<?php
  7. $today = date("Y-m-d, H:i");
  8. $print_date = substr($today, 0, 10);
  9. echo $print_date; ?> 00:00:01" class="kolorpol" maxlength="19" name="date_od" />
  10. </td>
  11. </tr>
  12. <tr><td align="left"><div class="textkontakt">data do:</div></td>
  13. <td>
  14. <input type="text" size="19" id="date_do" value ="<?php
  15. $print_time = substr($today, 12, 5);
  16. echo $print_date." ".$print_time; ?>:00"
  17. class="kolorpol" maxlength="19" name="date_do" /></td>
  18. </tr>
  19. <tr><td></td>
  20. <td><br />
  21. <input name="mode_1" type="hidden" value="search_1" />
  22. <input class="przeslij" type="submit" value="Akceptuj" onClick="assign_form('form_talk_time_all')" />
  23. </td>
  24. </tr>
  25. </table>
  26. </form>


no i wlasnie to: onsubmit="return valid_data();" obsluguje walidacje formularza, rozumiem, ze trzeba jakos zmodyfikowac wywolanie tej funkcji pod ajax, tylko jak? chce zeby nie wysylal sie formularz jesli dane w polach nie spelniaja wymagan funkcji valid_data()


--------------------
Go to the top of the page
+Quote Post
my_kel
post
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 15.07.2004

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


No ale moment albo na przycisku masz submit i onclick i dalej f-cja ktora robi validacje, a jesli sie udala to inicjowana jest akcja ajax'a albo masz onsubmit a przycisk to zwykly <input type="image".... /> i return zwraca Ci false jesli validacja sie nie powiodla, albo true i wykonuje sie f-cja ajax'owa.
Pozdr.
MS


--------------------
Apache 2.0.52 - PHP 5.0.2 - MySQL 4.0.21
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 Aktualny czas: 21.08.2025 - 22:51