Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][AJAX] pole select
marino
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.09.2012

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


Witam, to mój pierwszy temat więc proszę o wyrozumiałość. Postanowilem napisać prostą bazę danych co się udało w oparciu o HTML-a/PHP oraz phpMyAdmin. Teraz chciałbym ją troszkę ulepszyć tzn. dodać dynamiczne formularze ale siedzę od kilku dni i ręce opadają. Może źle się za to zabieram - proszę o wskazówki oraz komentarze do próby podejścia do tematu.

Po kolei

1. Mam zrobioną tabelę z polami (Id, Imie, Nazwisko, Firma, Adres) w phpMyAdmin w której znajdują się już wpisane dane.
2. Napisałem skrypt w php poniżej wkleiłem to co napisałem

<?php
$pol = @mysql_connect('localhost', 'user', 'password') or die('Brak połączenia z serwerem MySQL. Błąd:'.mysql_error());
//echo "Connected successfully";
//echo '<br />';
@mysql_select_db('baza' , $pol) or die ('Nie mogę połączyć się z bazą danych. Błąd:'.mysql_error());
//echo "Connected successfully";
//echo '<br />';
$zapytanie = mysql_query ("SELECT nazwisko , imie FROM lista_os ORDER BY nazwisko DESC");
echo '<select name="dane">';
while($option = mysql_fetch_assoc($zapytanie))
{
echo '<option value="'.$option['id'].'">'.$option['nazwisko'].' '.$option['imie'].'</option>';
}
echo '</select>';
echo '<br />';
echo("Nazwisko: " .$option['nazwisko'].' '.$option['imie'].'');
?>

Nie wiem jak zrobić aby po wybraniu jakiejś pozycji z pola select mój wybór automatycznie pojawiałby się poniżej. Coś jak ostatnia linika przed znakiem ?> - tylko niestety to nie działa. Wiem, że teraz należy zastosować Ajaxa ale wszystkie skrypty jakie znalazłem opierają się na selec poz.1, poz.2, poz.3 a nie na select zczytującym rekordy z bazy.

Mam nadzieję, że w miarę jasno to wyraziłem, proszę o jakąś pomoc bo tego nie mogę rozgryść.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tab
post
Post #2





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 8.10.2012

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


tak nie na temat, polecam Ci uzywac do komunikacji z mysqlem biblioteki PDO
a na temat: jezeli dobrze Cie zrozumiałem (jak nie to popraw) chodzi Ci o to, ze wybierasz jakas wartosc z pola select i ponizej pojawiaja sie wyniki pobrane z bazy danych? jezeli tak to wygladałoby to jakoś tak:

załóżmy ze bedzie to skrypt, ktory wypisuje na dole wszystkie imiona lub nazwiska z bazy danych. tak wiec potrzebna bedzie jakas tabela w mysql z imionami i nazwiskami, ktora jak widziałem juz stworzyłes (u mnie bedzie to uzytkownicy).

HTML
  1. <p>Co pobrac z bazy?</p>
  2. <select id="wybor">
  3. <option>Imie</option>
  4. <option>Nazwisko</option>
  5. <br>
  6. <input type="text" id="pole"> // tutaj beda prezentowane wyniki


  1. JS

  1. <script type="text/javascript">
  2. var w = document.getElementById('wybor');
  3. var p = document.getElementById('pole');
  4.  
  5. w.onchange = function()
  6. {
  7. var xml = new XMLHttpRequest; // IE uzywa ActiveX!
  8. var url1 = 'pobierz_dane.phpco?=';
  9. var url2 = w.value;
  10. var url3 = url1 + url2; // czyli gdy ktos wybierze imie wyslemy ajaxowe zapytanie do strony pobierz_dane.php?co=imie
  11.  
  12. xml.open("GET",url3,true);
  13. xml.send()
  14.  
  15. xml.onreadystatechange = function()
  16. {
  17. if ((xml.readyState == 4) && (xml.status == 200))
  18. {
  19. p.value = xml.responseXML.getElementsByTagName('dane')[0].firstNode.nodeValue; // wypisujemy w polu input wyniki, ktore pobieramy z drzewa DOM
  20. }
  21. }
  22. }
  23. </script>


PHP
(pobierz_dane.php)

  1. <?php
  2. if (isset($_GET['co']))
  3. {
  4. // ŁACZENIE Z BAZA DANYCH...
  5.  
  6. $co = $_GET['co'];
  7. $co = strtolower($co); // value z formularza bedzie Imie a w bazie ta kolumna bedzie sie nazywała zapewne imie. mozliwe ze mysql nie wykonałby własciwie tego zapytania ('Imie' !== 'imie'), wiec na wszelki wypadek zmniejszymy litery
  8.  
  9. $stmt=$pdo->query("SELECT $co FROM uzytkownicy"); // lub mysql_query("SELECT $co FROM uzytkownicy")
  10. echo '<?xml version="1.0" ?>';
  11. echo '<dane>';
  12. foreach ($stmt as $row)
  13. {
  14. echo $row;
  15. echo '\n';
  16. }
  17. echo '</dane>';
  18. $stmt->closeCursor(); // jesli uzywasz mysql_* to zignoruj ta linijke
  19. }


nietestowane, wiec moze zawierac błedy, ale mam nadzieje ze juz wiesz mniej wiecej jak to zrobic. nalezałoby tez wprowadzic troche zmian bo wyswietalnie wynikow w input nie jest zbyt eleganckie, poza tym mozna dodac tez jakas animacje albo tekst 'Ładowanie' w trakcie ładowania wynikow z bazy

Ten post edytował tab 14.10.2012, 21:01:28
Go to the top of the page
+Quote Post

Posty w temacie


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: 31.12.2025 - 07:51