Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PHP][MYSQL]Wyświetlenie wyników zapytania na stronie

Adalberd 17 Lis 2011 15:06 1645 5
  • #1 17 Lis 2011 15:06
    Adalberd
    Poziom 13  

    Witam,

    Mam jeden plik "statystki.php"

    i teraz w nim klika bardzo podobnych skryptów:

    <php?

    pola select option->wybór->zapytanie do bazy->wyświetlenie na ekranie

    ?>

    Wiadomo jak wyświetlę 1 zapytanie z 1 skryptu następnie 2 zapytanie z 2 skryptu to automatycznie wynik z 1 skryptu się zeruje.

    0 5
  • #2 17 Lis 2011 17:51
    Dżyszla
    Poziom 42  

    Adalberd napisał:

    Wiadomo jak wyświetlę 1 zapytanie z 1 skryptu następnie 2 zapytanie z 2 skryptu to automatycznie wynik z 1 skryptu się zeruje.
    Niestety nic mi takiego nie wiadomo. Do momentu, jak nie zostanie zwolnione zapytanie, to jest ono cały czas utrzymywane w pamięci. Można równolegle wykonywać kilka zapytań.

    0
  • #3 17 Lis 2011 17:57
    Adalberd
    Poziom 13  

    edytowałem post

    0
  • #4 17 Lis 2011 19:57
    marcinj12
    Poziom 40  

    Czy pisząc, że "wynik pierwszego skryptu się zeruje" chodzi Ci o to, że znikają wybrane wcześniej wartości w comboboxach, czy do podsumowanie na fioletowo?

    0
  • #5 17 Lis 2011 20:11
    Adalberd
    Poziom 13  

    Znikają wybrane wartości w comboboxach i automatycznie znika też text na fioletowo bo (...) nie da żadnego wyniku.

    0
  • Pomocny post
    #6 17 Lis 2011 20:59
    marcinj12
    Poziom 40  

    Dobre wieści to takie, że są na to przynajmniej dwa rozwiązania, złe: że obydwa wymagają pewnego nakładu pracy.

    Można to zrobić w czystym PHPie wykorzystując fakt, że przy każdym przeładowaniu strony po wykonaniu akcji submit metodą POST, wartości wybrane wcześniej na listach znajdą się w tablicy $_POST[], np. dla listy o nazwie "wybierzdate" będzie to wartość w tablicy $_POST['wybierzdate']. Wstaw sobie gdzieś na początku lub końcu strony polecenie php:

    Kod: php
    Zaloguj się, aby zobaczyć kod
    to zobaczysz, co zawiera i jak się zmienia cała ta tablica.
    Myk polega na tym, żeby tworząc w pętli while listę <select> dla każdego elementu <option> sprawdzić, czy wartość którą chcemy mu przypisać nie jest równa wartości zapamiętanej wcześniej w tablicy $_POST (zwykłe if..then..else..). Jeżeli jest, należy stworzyć element <option> z atrybutem selected='selected', a zostanie on wybrany.

    Skomplikowany opis, więc na przykładzie pokazane o co chodzi:
    Kod: php
    Zaloguj się, aby zobaczyć kod

    W podobny sposób trzeba ustawiać wszystkie wartości elementów, które muszą zostać zapamiętane przy przeładowaniu strony.
    Jednak obsługa tego w PHPie nie jest na dłuższą metę dobrym rozwiązaniem - po każdym kliknięciu przycisku cała strona musi się przeładować, każde zapytanie do bazy (nawet w danej chwili niepotrzebne) musi się wykonać etc.

    Druga metoda, wymyślona specjalnie do takich zastosowań,wiąże się z użyciem JavaScript. Możesz poszukać na czym polega wykorzystanie AJAX i XMLHttpRequest do dynamicznej zmiany strony, jednak ja polecam krok dalej i wykorzystanie do tego celu biblioteki jQuery i jej funkcji $.post(). Tak naprawdę robi to samo co wspomniany XMLHttpRequest, jednak ukrywa całą niepotrzebną implementację pod prostą funkcją:
    Kod: jquery
    Zaloguj się, aby zobaczyć kod

    Ta funkcja wysyła zapytanie metodą POST do strony test.php, odbiera wynik do zmiennej "data" i wykorzystuje go dalej na stronie, bez konieczności przeładowywania całej strony. Wtedy używasz tylko tego, co jest naprawdę potrzebne do wykonania skryptu.
    Wadą jest, że jeżeli nie używałeś wcześniej jQuery (lub jeżeli się nie czuje pewnie w HTMLu , PHPie i JavaScripcie), trzeba się nauczyć pewnego specyficznego sposobu pracy z tą biblioteką, szumnie zwaną frameworkiem. Niemniej warto tak czy inaczej się z nią zapoznać, bo rozszerza możliwości strony i niezmiernie ułatwia jej pisanie.

    Także, jak widzisz, ścieżki są dwie, wybierz sobie która Ci bardziej odpowiada (polecam drugą :)) i do dzieła :)

    0