Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

6 Stron V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> [ajax] Moje pierwsze starcie, czyli przewodnik dla całkowicieZielonych
FiDO
post 15.02.2006, 19:21:02
Post #21





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


I tu wlasnie wychodzi, jak to moj kolega z grupy ladnie ujal, "Najbardziej czasochłonny, skomplikowany, redundantny i niezauważany mechanizm, jaki można zaimplementować.". Chodzi oczywiscie o interfejs dla przegladarek bez takich "cudow" jak JS itp. Zobacz sobie serwisy google korzystajace z AJAXA jak dzialaja z wylaczonym JS.. nie jest to juz tak user friendly, ale jest w pelni uzyteczne. Boli jedynie to, ze trzeba to w porzadnej aplikacji zaimplementowac, a wiekszosc ludzi nawet tego nie zauwazy.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
TomASS
post 15.02.2006, 19:37:20
Post #22





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Ja to robię wpierw jedną stronę - dla której nie potrzeba JS, oraz przygotowuję zmodyfikowaną wersję z JS i AJAXem. Cos na styl poczty na interii - do wyboru smile.gif
Natomiast zawsze staram się klienta pytać jaki sprzęt używa.

Lynksa chyba nie używa nawet 0,0001% ludzi smile.gif

Ten post edytował TomASS 15.02.2006, 19:38:07


--------------------
Go to the top of the page
+Quote Post
Termit_
post 15.02.2006, 20:41:14
Post #23





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 11.06.2005
Skąd: Gostyń

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


Jasne. Wszystko przecież zależy od charakteru witryny.

Nie chciałbym mieć po prostu takiej sytuacji, że wchodzę na shella, próbuję ściągnąć nowe php a tu kicha, bo linksem się do tego nie dostanę.

Podobnie ze sprawdzeniem poczty – jasne, że raczej nie będę dokonywał zmiany konfiguracji profilu, nawet nie będę maila wysyłał – ale blokowanie możliwości sprawdzenia, czy ktoś coś mi przysłał byłoby IMHO nie na miejscu.

O to mi mniej więcej chodziło winksmiley.jpg.


--------------------
@nospor: trzymajcie się. Wszystko będzie dobrze!
Go to the top of the page
+Quote Post
TomASS
post 2.03.2006, 08:21:24
Post #24





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Witam ponownie wszystkich forumowiczów guitar.gif

Postanowiłem opisać jeszcze jeden przykład na wykorzystanie AJAXa oraz na rozwiązanie popularnego problemu od czasu do czasu poruszanego na tym forum.

Chodzi tutaj o dwa selecty <span style="font-style: italic;">"sprzężone"</span> ze sobą w ten sposób, że wybór odpowiedniej pozycji na <span style="font-weight: bold;">selekcie1</span> wpływa na zawartość <span style="font-weight: bold;">selecta2</span> - np. mamy wybrać ze spisu jedną wieś w Polsce. Przeszukując selectem cały spis wszystkich miejscowości moglibyśmy się zaszukać na śmierć tongue.gif . Wygodniej byłoby wybierać po kolei: Województwo -> Powiat -> Gmina -> Miejscowość.

Przedstawie tuta tylko pierwszy etap (Województwo -> Powiat) - dorobienie reszty jest już dziecinnie proste.

Noto zaczynamy.
Na początek podam definicję bazy danych abyście nie musieli się trudzić - oczywiście ktoś może ją wypełnić swoimi danymi:
  1. #
  2. # Struktura tabeli dla `powiaty`
  3. #
  4.  
  5. CREATE TABLE `powiaty` (
  6. `ID` int(10) NOT NULL AUTO_INCREMENT,
  7. `ID_wojewodztwo` int(10) DEFAULT NULL,
  8. `Powiat` varchar(20) DEFAULT NULL,
  9. UNIQUE KEY `ID` (`ID`)
  10. ) TYPE=MyISAM AUTO_INCREMENT=15 ;
  11.  
  12. #
  13. # Zrzut danych tabeli `powiaty`
  14. #
  15.  
  16. INSERT
  17. INTO `powiaty` VALUES (1, 1, 'Wroclawski');
  18. INSERT
  19. INTO `powiaty` VALUES (2, 1, 'Sroda Slaska');
  20. INSERT
  21. INTO `powiaty` VALUES (3, 1, 'Miekinia');
  22. INSERT
  23. INTO `powiaty` VALUES (4, 1, 'Legnica');
  24. INSERT
  25. INTO `powiaty` VALUES (5, 1, 'Lubin');
  26. INSERT
  27. INTO `powiaty` VALUES (6, 2, 'Opole');
  28. INSERT
  29. INTO `powiaty` VALUES (7, 2, 'Brzezie');
  30. INSERT
  31. INTO `powiaty` VALUES (8, 2, 'Grodkow');
  32. INSERT
  33. INTO `powiaty` VALUES (9, 2, 'Brzeg');
  34. INSERT
  35. INTO `powiaty` VALUES (10, 2, 'Nysa');
  36. INSERT
  37. INTO `powiaty` VALUES (11, 3, 'Szczecin');
  38. INSERT
  39. INTO `powiaty` VALUES (12, 3, 'Szczecinek');
  40. INSERT
  41. INTO `powiaty` VALUES (13, 3, 'Gryfow');
  42. INSERT
  43. INTO `powiaty` VALUES (14, 3, 'Miedzyzdroje');

Jak zwykle mamy 4 pliki. Pierwszy z nich to dobrze wszystkim znay plik <span style="font-weight: bold;">advajax.js</span>. Kolejnym plikiem jest <span style="font-weight: bold;">dzialaj.html</span> (plik który uruchamia użytkownik), plik <span style="font-weight: bold;">odpowiedz.php </span>- generujący odpowiedź z serwera w postaci XML oraz plik z funkcjami JS - <span style="font-weight: bold;">function.js</span>.

Plik uruchamiany przez użytkownika nie jest wielce skomplikowany:
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. </head>
  3.  
  4. <select name="wojewodztwa" id="wojewodztwa" onchange="getRecords();">
  5. <option value="1">Dolnośląskie</option>
  6. <option value="2">Opolskie</option>
  7. <option value="3">Zachodnio Pomorskie</option>
  8.  
  9. <select name="gminy" id="gminy" style="width: 200px;">
  10.  
  11. <script type="text/javascript" src="advajax.js"></script>
  12. <script type="text/javascript" src="function.js"></script>
  13. </body>
  14. </html>

Składa się on z dwóch selectów (wojewodztwa - z wypełnioną listą) oraz gminy (będzie dopiero wypełniany)

Plik odpowiedz.php jest bardzo ładny smile.gif :
  1. <?
  2. header("Content-type: text/xml; charset=UTF-8"); 
  3. echo '<?xml version="1.0" encoding="UTF-8"?>';
  4.  
  5. $dbhost = localhost;
  6. $dblogin = root;
  7. $dbhaslo = '';
  8. $db = uop;
  9. mysql_connect (localhost,root,'') or die ("Nie masz uprawnien");
  10.  
  11.  
  12. $wojewodztwo = (int)$_GET['wojewodztwo'];
  13. if(!$wojewodztwo) $wojewodztwo = 1;
  14.  
  15. echo '<records>';
  16. $query = "SELECT ID, Powiat FROM powiaty WHERE ID_wojewodztwo='$wojewodztwo'";
  17. $result = mysql_query($query);
  18. while ($row = mysql_fetch_array($result)){
  19. echo '<record>';
  20. echo '<ID>'.$row['ID'].'</ID>';
  21. echo '<nazwa>'.$row['Powiat'].'</nazwa></record>';
  22. }
  23.  
  24. echo '</records>';
  25. ?>

Bardzo ważny jest nagłówek - aby był to plik XML:
  1. header("Content-type: text/xml; charset=UTF-8"); 
  2. echo '<?xml version="1.0" encoding="UTF-8"?>';

Potem zwykłe zapytanie do bazy danych wybierające odpowiednie rekordy - nic szczególnego.
Po zapytaniu następuje generacja XML - także nic co mogło by być bardzo szczególnym zajęciem. Nie zagłębiam się tutaj w puste znaczniki (aby zamiast <nazwa></nazwa> pisać </nazwa>) nie zajmuję się także polskimi znaczkami aby nie komplikować kodu - i muszę coś pozostawić jeszcze Wam smile.gif

Bardzo istotnym plikiem jest plik function.js:
  1. function $(id){
  2. return document.getElementById(id);
  3. }
  4.  
  5.  
  6. function parseRecords(xml) {
  7.  
  8. var opttypes = document.getElementById("gminy");
  9. record = xml.getElementsByTagName("record");
  10. ID = new Array();
  11. nazwa = new Array();
  12. for (i = 0; i < record.length; i++) {
  13. nazwa[i] = record[i].childNodes[1].childNodes[0].nodeValue;
  14. ID[i] = record[i].childNodes[0].childNodes[0].nodeValue;
  15.  
  16. }
  17.  
  18. for (i = opttypes.options.length-1; i >= 0; i--) {
  19. opttypes.remove(i);
  20. }
  21.  
  22. for(var i = 0; i < nazwa.length; i++) {
  23. opttypes.options[i] = new Option(nazwa[i],ID[i]);
  24. }
  25. }
  26.  
  27.  
  28. function getRecords() {
  29. var wojewodztwo = $("wojewodztwa").value;
  30.  
  31. advAJAX.get({
  32. url : "odpowiedz.php?wojewodztwo="+wojewodztwo,
  33. onInitialization : function(obj) {
  34. $("gminy").disabled="true";
  35. },
  36. onSuccess : function(obj) {
  37. parseRecords(obj.responseXML);
  38. $("gminy").disabled="";
  39. }
  40. });
  41. }

Trzy skromne funkcje, a właściwie tylko dwie: jedna parsująca wynik XML na kod HTML. Dzieje sie to za pomocą new Option(Nazwa,Value), a wartości są zczytywane z odpowiedzi XML za pomocą:
  1. record[i].childNodes[0].childNodes[0].nodeValue;
  2. record[i].childNodes[1].childNodes[0].nodeValue;

Jest jeszcze funkcja "uruchamiająca" AJAXa. Najpierw prosi go o to aby wyczytał odpowiedni URL z odpowiednia opcia (?wojewodztwo) a nastepnie podczas inicjalizacji blokuje selecta gminy. Po zakonczeniu wczytywania (onSuccess) XML jest parsowany a select gminy odblokowywany.

To tyle - it`s simply smile.gif
Nie powinno nastarczyć to kłopotu ludziom z podstawową znajomością JS, php, MySQL.

P.S Proszę nie zwracać na błedy w postaci że dany powiat nie jest powiatem albo nie leży w odpowiednim województwie tongue.gif

Ten post edytował TomASS 6.08.2006, 22:13:49


--------------------
Go to the top of the page
+Quote Post
bigZbig
post 2.03.2006, 09:42:16
Post #25





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


@TomASS - pierwszy post, z wyjatkiem sparafrazowania definicji AJAXa i kilku linków na końcu, jest zwyklym streszczeniem dokumentacji advAJAXa napisanej przez Łukasza Lacha. Nie wnosi wiele nowego, nic nie upraszcza i z pewnoscia nie nadaje sie na artykul. Moze po malych przerobkach daloby sie z tego stworzyc haslo w wikipedi.

Twoje kolejne posty przedstawiajace przyklady zastosowania advAJAX sa juz o wiele bardziej interesujące. Mam jednak mala uwagę. Czy mógłbyś w js stosowac wcięcia? Odpowiednio sformatowany kod łatwiej się czyta.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
mike
post 2.03.2006, 09:58:22
Post #26





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(bigZbig @ 2006-03-02 09:42:16)
(...) Czy mógłbyś w js stosowac wcięcia? Odpowiednio sformatowany kod łatwiej się czyta.

Niestety sposób osadzania kodów źródłowych na forum za pomocą [ html ] ma wadę i nie zachowuje wcięć. Więc muszę tutaj ~TomASSa usprawiedliwić.
Zostanie to prawdopodobnie poprawione w niedługim czasie.

P.S.
A na artykuł faktycznie to się nie nadaje. Porada zwykła i tyle. Równie dobrze mógłby być link do bloga ~anAKiNa, co innego późniejsze przykłady, one już coś wnoszą.
Go to the top of the page
+Quote Post
bigZbig
post 2.03.2006, 10:23:38
Post #27





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Cytat(mike_mech @ 2006-03-02 10:58:22)
Niestety sposób osadzania kodów źródłowych na forum za pomocą [ html ] ma wadę i nie zachowuje wcięć. Więc muszę tutaj ~TomASSa usprawiedliwić.
Zostanie to prawdopodobnie poprawione w niedługim czasie.

Ale [CODE] juz wciecia zachowuje wiec czy nie lepsze byloby zastosowanie tego bbcode tym bardziej, ze js to nie html, wiec nikt nie mogby zglosic uwagi, ze zastosowano niewlasciwy bbcode.

edit
---------------
A tak swoja droga przydalby sie jakis parser kolorujacy kod js - moze MX-BBCode?

Ten post edytował bigZbig 2.03.2006, 10:28:01


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
kukix
post 8.03.2006, 19:41:57
Post #28





Grupa: Zarejestrowani
Postów: 592
Pomógł: 0
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam.
Zainteresowałem sie przykładem autora advajax, "stronnicowanie danych"...
kod źódłowy wziełem z płytki "php solutions" i napotkałem pare problemów, które nie potrafie obejśc...

pierwszym, który napotkałem to wstawienie styli do tabelki generowanej przes skrypt js oto kod autora advajax:

Kod
function parseRecords(xml) {

   with (xml.getElementsByTagName("records").item(0)) {
       page = getAttribute("page")*1;
       maxPerPage = getAttribute("max_per_page");
       startId = maxPerPage*page+1;
       total = getAttribute("total")*1;
       maxPage = Math.ceil(total/maxPerPage);
       $("dataStats").innerHTML =
         " &nbsp; Rekordy: " + startId + " - " + (startId+getAttribute("count")*1-1) + " z " + total + " (Strona: " +
         (page+1) + " z " + maxPage + ")";
   }
   $("btnFirst").style.visibility = $("btnPrev").style.visibility = page == 0 ? "hidden" : "visible";
   $("btnLast").style.visibility = $("btnNext").style.visibility = page+1 == maxPage ? "hidden" : "visible";
   
   d = $("dataTable");
   for (i = d.rows.length-1; i >= 0; i--)
     d.deleteRow(i);
   record = xml.getElementsByTagName("record");
   result = "";
   for (i = 0; i < record.length; i++) {
       tr = document.createElement("tr");
       td = document.createElement("td");

/* próbówałem tak:         td = style.font-weight:  = "bold"; */
       td.innerHTML = startId + i;
       tr.appendChild(td);
       for (j = 0; j < 3; j++) {
           td = document.createElement("td");
           td.innerHTML = record[i].childNodes[j].childNodes[0].nodeValue;

           tr.appendChild(td);
       }
       d.appendChild(tr);
   }
   return result;
}


jak to obejśc..? da sie zrobić tak, żeby do kolumny z Imieniem dodac "align=center" , albo class=styyl ?

Nie moge sobie z tym poradzić... może ktośrobił już to i może mi pomóc?

P.S. Wogóle nie rozumie, jak powstaje ta tabelka.. domyslam sie, że document.createElement("td"); jest funkcją wbudowaną w js i ona tworzy tabelke...

Ten post edytował kukix 8.03.2006, 19:44:36
Go to the top of the page
+Quote Post
TomASS
post 8.03.2006, 22:50:00
Post #29





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Tabelka jest już gotowa - zobacz do źródła tego pliku:
  1. </thead>
  2. <tbody id="dataTable">
  3. </tbody>
  4. </tfoot>

Zuważ że w kodzie JS masz tak:
Kod
d = $("dataTable");

Natępnie tabela jest czyszczona:
Kod
for (i = d.rows.length-1; i >= 0; i--)
     d.deleteRow(i);

Później jest tworzony element <tr>:
Kod
tr = document.createElement("tr");

Wpisywane są do niego komórki. Początek komórki (<td>):
Kod
td = document.createElement("td");

Zawartość przy pomocy innerHTML:
Kod
td.innerHTML = record[i].childNodes[j].childNodes[0].nodeValue;

Zamykamy obiekt(y) <td> oraz <tr>:
Kod
tr.appendChild(td);
d.appendChild(tr);


Różne właściwości (np. td) możesz modyfikować np w następujący sposób:
Kod
td = document.createElement("td");
td.noWrap="nowrap";
td.innerHTML = "dlugi tekst;
tr.appendChild(td);


--------------------
Go to the top of the page
+Quote Post
kukix
post 9.03.2006, 19:51:32
Post #30





Grupa: Zarejestrowani
Postów: 592
Pomógł: 0
Dołączył: 1.09.2002
Skąd: Wrocław

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


Dzieki TomASS, Twoja odpowiedź była pomocna.

jednak dalej nie moge "podpiąć" całego styla z pliku .css pod tabele. próbowałem tak:
Kod
td.class="styltabelki";
td.style.class="styltabelki";
td.style="styltabelki";

jednak to nie działa...
więc wszystkie własciwości wpisałem "ręczniene".
Jest jednak problem z właściwościami, które mają w nazwie kreske (-) np: border-bottom
Kod
td.style.padding = "6px 15px";
to działa, ale nie to:
Kod
td.style.border-bottom = "1px solid #ebebe4"
Ogólnie moge powiedzieć, że "zaadoptowanie" advAJAX'a do swojego projektu jest trudne dla średnio zaawansowanej osoby... podstawowym problemem jest (co zrobić tym AJAXEM, a co nie).

Mam w administracji dział newsy, w którym znajduje sie spis newsów i mały formularz do edycji i dodawania nowych newsów.
I tak zastanawiam sie, co zrobić tym AJAX'em.. co naprawde pomoże w pracy, a co bedzie przeszkadzało... Chciałem zrobić edycje danego newsa po dwukliknięciu na pozycje z listy... jednak narazie nie wiem, jak odświerzyć poprawioą liste... dodawanie równiez można by zrobić z wykorzystaniem AJAX'a...
Go to the top of the page
+Quote Post
Diwi
post 9.03.2006, 20:56:41
Post #31





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


z tego co się orientuje w javascripcie to zamiast:
Kod
td.class="styltabelki";

Powinno być
Kod
td.className="styltabelki";


smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
TomASS
post 10.03.2006, 13:55:52
Post #32





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cytat
Mam w administracji dział newsy, w którym znajduje sie spis newsów i mały formularz do edycji i dodawania nowych newsów.
I tak zastanawiam sie, co zrobić tym AJAX'em.. co naprawde pomoże w pracy, a co bedzie przeszkadzało... Chciałem zrobić edycje danego newsa po dwukliknięciu na pozycje z listy... jednak narazie nie wiem, jak odświerzyć poprawioą liste... dodawanie równiez można by zrobić z wykorzystaniem AJAX'a...


Użycie ajaxa ma sens, wtedy gdy pobieramy jakieś dane i wyświetlamy je na stronie przy czym zawartość "graficzna" strony nie zmienia się - takie coś ma miejsce w przypadku np. stronicowania, robienia map czy "dynamicznych" formularzy. Generalnie staraj się używać AJAXa tam gdzie to jest pomocne (np. w automatycznym dopełnianiu formularzy), ale muisz wziąść też pod uwagę użytkowników, którzy mają wyłączony JavaScript i umożliwić im prace bez AJAXa. Oto kilka przykładów na wykorzystanie:
RSS Reader
dopełnianie formularza
formularz hotelowy
dużo fajnych przykładów

Ten post edytował TomASS 10.03.2006, 13:56:36


--------------------
Go to the top of the page
+Quote Post
kukix
post 11.03.2006, 18:56:29
Post #33





Grupa: Zarejestrowani
Postów: 592
Pomógł: 0
Dołączył: 1.09.2002
Skąd: Wrocław

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


Dzieki chlopaki za pomoc.. teraz już dużo mi sie rozjaśniło... blink.gif

Przeglądałem przykłady zastosowania AJAX'a, bardzo dobry jest przykład menu z możliwością ręcznego sortowania. Przykład ...
jest to chyba zbudowane na innym "silniku" AJAX. potrafił by ktoś zrobić coś takiego na AdvAJAX?

P.S. TomASS Twój przykład z formularzem rejestrującym nie działa.. (domyślam sie, że chyba nie jest on dokończony...)
Go to the top of the page
+Quote Post
TomASS
post 11.03.2006, 22:58:33
Post #34





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cytat
Przeglądałem przykłady zastosowania AJAX'a, bardzo dobry jest przykład menu z możliwością ręcznego sortowania. Przykład ...
jest to chyba zbudowane na innym "silniku" AJAX. potrafił by ktoś zrobić coś takiego na AdvAJAX?

Pewnie się da - można też użyć innych klas np SAJAX.

Cytat
P.S. TomASS Twój przykład z formularzem rejestrującym nie działa.. (domyślam sie, że chyba nie jest on dokończony...)

Sama rejestracja oczywiście, że nie działa smile.gif Tutaj chodziło o walidację smile.gif


--------------------
Go to the top of the page
+Quote Post
anAKiN
post 12.03.2006, 10:25:30
Post #35





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

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


Bardzo ładnie, panowie biggrin.gif


--------------------
Łukasz Lach
http://anakin.us/
Go to the top of the page
+Quote Post
TomASS
post 12.03.2006, 14:11:15
Post #36





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Dzisiaj przeczesując czeluścia internetu natrafiłem na Dynamiczną tabelę - świetna sprawa oparta na AJAXie.

Cytat
Bardzo ładnie, panowie smile.gif

Anakin - jeśli ktoś jeszcze nie zdążył się połapać jest autorem klasy advAJAX smile.gif


--------------------
Go to the top of the page
+Quote Post
kukix
post 13.03.2006, 20:53:10
Post #37





Grupa: Zarejestrowani
Postów: 592
Pomógł: 0
Dołączył: 1.09.2002
Skąd: Wrocław

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


Siedze już kurde drugi dzień nad tym ajaxem i albo jestem jakis ciemny, albo nie wiem... Już nie napisze, że nie potrafie przerobić przykładu "stronnicowanie danych" tak, zeby kożystał z tabeli o innej strukturze... no ale pokolei...

Pierwsze, przez co nie moge przebrnąc to wstawieniue danych z bazy do formularza...w tym przypadku kożystałem z '.value', nie kożystałem z '.innerHTML' ponieważ w formularzu nic sie nie działo.. '.innerHTML' bez problemu wstawia dane do np <DIV id="xxx">...</DIV> ale do <INPUT type="text" name="xxx" id="xxx"> już nie wstawia, wyskakuje błąd.. dry.gif

plik zaladuj.js:
Kod
function wyswietl() {    
 advAJAX.setDefaultParameters({
   onInitialization : function(obj) { document.getElementById(obj.tag).value = "Przygotowanie..."; },
   onLoading : function(obj) { document.getElementById(obj.tag).value = "Ładowanie..."; },
   onSuccess : function(obj) { document.getElementById(obj.tag).value = "" + obj.responseText; },
   onError : function(obj) { document.getElementById(obj.tag).value = "Error..."; }
 });
 advAJAX.get({ url: "zaladuj.php?wartosc=naglowek", tag: "news_naglowek" });
 advAJAX.get({ url: "zaladuj.php?wartosc=data", tag: "news_tresc" });
 advAJAX.get({ url: "zaladuj.php?wartosc=autor", tag: "news_autor" });
 advAJAX.setDefaultParameters({});
}


plik zaladuj.php:
  1. <?php
  2.  
  3. $mysql_link = mysql_connect('host', 'login', 'haslo');
  4.     
  5. $mysql_result = mysql_query('SELECT '.$wartosc.' FROM tbl_news WHERE id_news=3 LIMIT 0,1');
  6.  
  7. $row = mysql_fetch_assoc($mysql_result);
  8. print($row[$wartosc]);
  9.  
  10. ?>


problem z tym kodem jest taki, że wrzucając zawartość pliku zaladuj.php do pola INPUT wrzuca razem ze statystykami home.pl (home dokleja je do każdje strony)... w przypadku 'innerHTML' nie ładowało tego....

Wiem, że nie jest to zbyt skomplikowany problem, jest to poprostu "wrzucanie" danych do formularza, podstawopwa sprawa, no ale jednak jest to problem..Może ktoś mi pomóc?

Ten post edytował kukix 13.03.2006, 21:01:56
Go to the top of the page
+Quote Post
Vomit
post 13.03.2006, 21:33:13
Post #38





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


A jak zrobic cos w stylu loadingu ale z procentami?

Np. chodzi mi, ze mam liste mailingowa i 300 maili do rozesłania.
Wpisuje tresc i naglowek, klikam Rozeslij, i chciałbym dowiadywac sie w jakim stopniu maile zostały juz rozesłane, czy to 30 maili (10%) czy tez 99% maili ?
Go to the top of the page
+Quote Post
TomASS
post 13.03.2006, 22:07:32
Post #39





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Dla bardziej zainteresowanych napisałem kolejny przykład - tym razem oparty o klasę:

SAJAX
klasę to można ściągnąć ze ype = "GET";
sajax_init();
sajax_export("check_user");
sajax_handle_client_request();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       <script>
       <?
       sajax_show_javascript();
       ?>
       function $(id){
   return document.getElementById(id);
 }
 
       function czy_istnieje(wartosc) {
        if(wartosc=='email'){
         alert("Ten e-mail isntieje już w bazie danych");
         $("login").style.border='1px solid #7F9DB9';
   $("email").style.border='1px solid red';
        }
        else if(wartosc=='login'){
         alert("Użytkownik o takim loginie jest już w bazie danych");
   $("login").style.border='1px solid red';
   $("email").style.border='1px solid #7F9DB9';
        }
        else if(wartosc=='OK') $("registerForm").submit();
       }

       
       function check() {
   login = $("login").value;
   email = $("email").value;
               x_check_user(login, email, czy_istnieje);
       }
       </script>

</head>
<body>
<form action="register.php" method="POST" id="registerForm">
Login: <input type="text" name="login" id="login"><br>
Hasło: <input type="text" name="email" id="email"><br>
<button onclick="check();">Wyslij</button>
</form>
</body>
</html>
Ten post edytował TomASS 13.03.2006, 23:30:23


--------------------
Go to the top of the page
+Quote Post
Vomit
post 14.03.2006, 19:18:54
Post #40





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


A moze jakis przyklad w stylu tego o co pytalem w ostatnim poscie?
Albo:

Mam shoutboxa i chcialbym aby nie odswiezał mi sie on za pomoca Refresh co np. 30 sekund, tylko sprawdzał czy doszly nowe wpisy, jesli tak to odrazu je wyswietlal.
Go to the top of the page
+Quote Post

6 Stron V  < 1 2 3 4 > » 
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: 13.12.2018 - 10:30