Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX] pole select
Forum PHP.pl > Forum > XML, AJAX
marino
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ść.
szalek01
http://jetlogs.org/2007/09/03/jquery-selec...-change-events/
http://jsfiddle.net/hKktc/1/

a jeśli nie tak to opakuj to w forma i na onchange wyśli to formularz na ten sam adres, a potem tylko
var_dump($_POST);
marino
Cytat(szalek01 @ 29.09.2012, 19:39:44 ) *
http://jetlogs.org/2007/09/03/jquery-selec...-change-events/
http://jsfiddle.net/hKktc/1/

a jeśli nie tak to opakuj to w forma i na onchange wyśli to formularz na ten sam adres, a potem tylko
var_dump($_POST);


Można prosić bardziej łopatologicznie w ajax-ie jeszcze nic nie robiłem to jest moja pierwsza próba. Dodałem coś takiego ale nic się nie pojawia dalej.

<script type="text/javascript">
var message = new Array();
message[$option('id')]= $option['nazwisko'];

$(document).ready(function(){
$("#item_select").change(function()
{
var message_index

message_index = $("#item_select").val();
$("#message_display").empty();

if (message_index > 0)
$("#message_display").append(message[message_index]);
});
</script>
<div id="message_display"></div>

Mam wrażenie, że albo jest to zbyt skomplikowane albo brakuje na forum chęci pomocy??
tab
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.