Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przekazanie parametrów do zapytania
beel
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 20.04.2007

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


Mam stronkę na której są w tabeli wyświetlane dane z bazy psql i wszystko jest ok.
Teraz jednak chciałbym aby do dwóch pól można było wpisać datę OD i DO, a dalej użyć tych dat w zapytaniu SQL, czyli zmodyfikować wynik zapytania o te daty. Dalej klikamy WYKONAJ... Myślałem o JavaScript, ale onclick() dla buttona nie daje chyba takiej możliwości..
Jak to najlepiej rozwiązać?

Ten post edytował beel 9.06.2011, 22:41:33
Go to the top of the page
+Quote Post
DiH
post
Post #2





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


JavaScript to jedno, ale PHP to drugie. Onclick wywołuje jakąś akcję - JavaScript, PHP natomiast wykonuje zapytanie do bazy. Żeby osiągnąć to, o czym myślisz stwórz sobie np. jakiś oddzielny plik, który będziesz miał zapytanie aktualizujące datę. Po kliknięciu na przycisk przejdziesz do strony, która wykona to zapytanie. Możesz tu użyć header("Location: <tu adres/plik>"); aby powrócić do poprzedniej strony.

Aby nie przechodzić do nowej strony po kliknięciu buttona masz do dyspozycji kilka opcji. Dwie z nich to albo prosty ajax (pogooglaj jquery ajax), albo umieścić na stronie iframe, który będzie to wykonywał. W przypadku ajaxu, masz możliwość zmiany zawartości strony zależnie od tego, co zwróciło zapytanie.

Mam nadzieję, że datę w bazie trzymasz w odpowiednim typie pola, choćby i DATE. Jeżeli będziesz chciał, aby przy każdej wykonanej akcji (kliknięcie twojego buttona) aktualizowana została data i/lub czas, to możesz użyć sqlowej funckji NOW()
$sql = "UPDATE tabela SET pole=NOW()".

Jeżeli nie ma to być automatyczna zmiana, to po prostu robisz update daty zmieniając NOW() z powyższego zapytania na '" .date("Y-m-d"). ". Jest jeszcze możliwość użycia TIMESTAMP, ale o tym doedukuje Cię już manual.
Go to the top of the page
+Quote Post
beel
post
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 20.04.2007

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


Chcę wykorzystać na razie na banalnym przykładzie (podmiana treści diva) technologię AJAX.

Mam trzy pliki:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.  
  4. </head>
  5. <div id="pojemnik">
  6. <ol id="menu">
  7. <li><a href="#"
  8. onclick="wymienTresc('fragment-abba.html', 'content');">
  9. ABBA: Super Trouper
  10. </a></li>
  11. <li><a href="#"
  12. onclick="wymienTresc('fragment-bob_dylan.html', 'content');">
  13. Bob Dylan: Basement Tapes
  14. </a></li>
  15.  
  16. </ol>
  17. <div id="content"></div>
  18. </div>
  19.  
  20. <script type="text/javascript">
  21. var r;
  22. var e;
  23.  
  24. function odbierzDane()
  25. {
  26. if (r.readyState == 4) {
  27. if (r.status == 200 || r.status == 304) {
  28. e.innerHTML = r.responseText;
  29. }
  30. }
  31. }
  32.  
  33. function wymienTresc(adresurl, htmlid)
  34. {
  35. if (r = getXMLHttpRequest()) {
  36. e = document.getElementById(htmlid);
  37. r.open('GET', adresurl);
  38. r.onreadystatechange = odbierzDane;
  39. r.send(null);
  40. }
  41. }
  42. </body>
  43. </html>


  1. <h1>Bob Dylan</h1>
  2. <h2>Basement Tapes</h2>
  3. <h2>1975</h2>
  4. <tr>
  5. <th>lp.</th>
  6. <th>title</th>
  7. <th>czas</th>
  8. </tr>
  9.  
  10. <tr>
  11. <td>1.</td>
  12. <td>Odds and Ends</td>
  13. <td>1:46</td>
  14. </tr>
  15.  
  16. <tr>
  17. <td>2.</td>
  18. <td>Orange Juice Blues (Blues for Breakfast)</td>
  19. <td>3:37</td>
  20. </tr>
  21. ...
  22. </table>


  1. <h1>Bob Dylan</h1>
  2. <h2>Basement Tapes2222</h2>
  3. <h2>19752222</h2>
  4. <tr>
  5. <th>lp.</th>
  6. <th>title</th>
  7. <th>czas</th>
  8. </tr>
  9.  
  10. <tr>
  11. <td>1.</td>
  12. <td>Odds and Ends</td>
  13. <td>1:46</td>
  14. </tr>
  15.  
  16. <tr>
  17. <td>2.</td>
  18. <td>Orange Juice Blues (Blues for Breakfast)</td>
  19. <td>3:37</td>
  20. </tr>
  21. ...
  22. </table>


I jeśli na stronie głównej index.html kliknę w link nic się nie dzieje, w powinna się zmieniać wartość diva.
PS. Dwa pozostałe pliki nazywają się tak jak wskazuje na nie URL.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pytam teraz poważnie... Jaki sens ma podzielenie tego co robi AJAX na dwie funkcje? W ten sposób tylko sobie kłopoty gotujesz bo sie możesz pogubić z zasięgiem zmiennych. W tej chwili zmienne r i e są nagle z powietrza nie wiadomo czym. Weź zacznij używać jakiegoś debuggera JavaScript i zobacz czym pluje Ci konsola błedów.
Go to the top of the page
+Quote Post
beel
post
Post #5





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 20.04.2007

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


Może źle wyjaśniłem, ale chodziło mi o coś takiego: http://gajdaw.pl/ajax/ajax-php-wymiana-fragmentu-strony/
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


tylko po co bawić się ajaxem, skoro w jQuery to jest 5 linijek kodu http://api.jquery.com/jQuery.ajax/

przykład z tej strony:
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. type: "POST",
  3. url: "some.php",
  4. data: "name=John&location=Boston",
  5. success: function(html){
  6. $("#results").append(html);
  7. }
  8. });
[JAVASCRIPT] pobierz, plaintext


przekazujesz parametry do skryptu metodą POST i w najprostszym przypadku zwracasz skryptem php całą nową listę html do podmiany w divie, lub możesz zwrócić dane w formacie json i wygenerować nową listę
Powód edycji: [thek]: No tak... Klasyczny przykład, który sam chciałem przed chwilą dodać :D
Go to the top of the page
+Quote Post
thek
post
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




W sumie można jeszcze szybciej... load() (IMG:style_emoticons/default/wink.gif)
Ten artykuł chyba wyjaśnia wszystko łopatologicznie aż do bólu... http://net.tutsplus.com/tutorials/javascri...ls-with-jquery/
Go to the top of the page
+Quote Post
beel
post
Post #8





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 20.04.2007

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


Cytat(tehaha @ 10.06.2011, 15:28:59 ) *
tylko po co bawić się ajaxem, skoro w jQuery to jest 5 linijek kodu http://api.jquery.com/jQuery.ajax/

przykład z tej strony:
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. type: "POST",
  3. url: "some.php",
  4. data: "name=John&location=Boston",
  5. success: function(html){
  6. $("#results").append(html);
  7. }
  8. });
[JAVASCRIPT] pobierz, plaintext


przekazujesz parametry do skryptu metodą POST i w najprostszym przypadku zwracasz skryptem php całą nową listę html do podmiany w divie, lub możesz zwrócić dane w formacie json i wygenerować nową listę

A ten przykładowy kod, który podałeś umieszczam w HTML'u czy PHP?

Ten post edytował beel 10.06.2011, 16:42:09
Go to the top of the page
+Quote Post
tehaha
post
Post #9





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


do dokumentu html załączasz plik z biblioteką jQuery a w html dajesz coś takiego:

  1. <script type="text/javascript">
  2. $(document).ready(function()
  3. {
  4. $.ajax({
  5. type: "POST",
  6. url: "some.php",
  7. data: "name=John&location=Boston",
  8. success: function(html){
  9. $("#results").append(html);
  10. }
  11. });
  12. });


lub prościej z użyciem load() jak wspomniał @thek, oczywiście to jest nie działający przykład i musisz go dostosować do swoich potrzeb
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 05:25