[PHP & HTML] Odswiezanie danych na stronie

0

Witam,

Chcialbym zrealizowac pewien pomysl. Jestem poczatkujacy. Jak do tej pory z napotkanymi problemami sobie jakos radzilem. W tym jednak przypadku, ktory za chwile opisze problem wydaje mi sie bardziej zlozony i juz na samych manualach nie moge polegac.
Otoz chce stworzyc strone na ktorej wyswietlane beda dane pobierane bezposrednio z pliku dBase. Niech to beda np. nazwy produktow. Jeszcze nie zdecydowalem czy beda wyswietlane w tablicy czy jako lista wyboru. Raczej sklaniam sie za ta druga opcja.
Dodatkowo produkty wyswietlane sa wg. filtra kategorii. Teraz chcialbym by uzytkownik po wybraniu kategorii otrzymal automatycznie na tej samej stronie, np. w polu listy wyboru, produkty odpowiadajace tej kategorii. Chcialbym by dzialalo to na zasadzie onclick wybranej z rozwijanego menu kategorii.

Czy i ewentualnie jak moge ten pomysl zrealizowac?
Ponizej znajduje sie czesc kodu odpowiedzialna za odczyt z bazy. Nie jest to wersja finalna. Jeszcze pare kosmetycznych poprawek i zmian tu i owdzie. ;)

$file = "baza.dbf";
$db=dbase_open($file, 0);
$findme=strtoupper("aparaty foto cyfrowe");  //Tymczasowa zmienna wybierajaca kategorie

for ($rec_count=1; $rec_count<=dbase_numrecords($db); $rec_count++) {
$data=dbase_get_record($db, $rec_count);
$pos=strpos(strtoupper($data[2]), $findme);
if ($pos !== false){
        echo "Rekord nr $rec_count: ";
        for ($count=1; $count<dbase_numfields($db)-2; $count++){
                echo "$data[$count] ";

        }
        echo "<BR>";
     }
}

dbase_close($db);

Z gory dziekuje za wszelka pomoc.

0

A więc tak. Ta część, która odpowiada za odczytywanie danych z bazy danych Cię nie interesuje. Potrzebujesz odpowiedniego skryptu JS. Ja osobiście takie bajerki robiłem wzorując się na starym systemie WebPoczty na WP. Jest to zorganizowane tak: Masz jakiś tam formularz, rozbudowany, na całą stronę. W nim w action wpisujesz stronę, w której ten formularz się znajduje. Następnie do listy wyboru kategorii wrzucasz OnChange="document.nazwa_twojego_formularza.submit();" i odpowiednio interpretujesz dane w skrypcie PHP wstawiając wszystko co było jako domyślne wartości elementów formularza (wszystkie textarea, inputy, selecty i te sprawy), oraz biorąc pod uwagę wybraną kategorię. Mam nadzieję, że opisałem w miarę jasno :].

0

Dziękuję za odpowiedź.

Udało mi się znaleźć w międzyczasie rozwiązanie głównie robiąc i obserwując kod w Dreamweaverze. Parę małych zmian w oparciu o tutoriala do JS i jeden problem z głowy.
Do tego czasu to co napisałeś nie było zbyt jasne. Dopiero zaczynałem swoją 'przygodę'. Teraz już trochę bogatszy w informację mogłem odtworzyć to co podałeś. ;)
Efekt jednak, zakładając że dobrze to zrobiłem, nie do końca spełniał moje wymagania. Ponieważ po zmianie kategorii strona się ponownie odczytywała - w url dopisywana była zmienna, a lista była resetowana pokazując pierwszą pozycję zamiast tej wybranej.

A o to kawałek kodu jaki udało mi się sklecić. Uczyłem się tutaj na przykładach działających na bazie MySQL. Docelowo zamienię to na obsługę dBase.

<form name="artist" method="post" action="">
  <p>
  <!-- Po wybraniu pozycji z listy zostaje wyswietlony asin jako alert (testowo)-->
	<select name="select" onChange="alert(document.artist.select.options[document.artist.select.options.selectedIndex].value);">
  <!-- Czesc odpowiedzialna za pobranie z bazy pozycji dla listy wyboru-->
       <?php
do {  
?>
	  <option value="<?php echo $row_Recordset1['asin']?>"><?php echo $row_Recordset1['artist']?></option>
	  <?php
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
  $rows = mysql_num_rows($Recordset1);
  if($rows > 0) {
      mysql_data_seek($Recordset1, 0);
	  $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  }
?>
    </select>
</p>
  <p>&nbsp;  </p>
</form>
<?php

mysql_free_result($Recordset1);
?>

Alert JS służył mi w celach testowych. Zamiast niego mogłem wstawić funkcję JS z Dreamweavera, która wstawiałaby np. ASIN w pole tekstowe formularza. Ja jednak chciałbym by np. wszystkie ASIN pokazywały się w innej liście wyboru. Czyli lista ASIN była uzależniona od listy ARTIST (W tej przykładowej bazie dla jednego ARTIST może występować kilka różnych ASIN.).
Znalazłem na sieci informację o pluginie do Dreamweavera, którym można robić tzw. dependant drop-downs. Czyli to co chciałbym osiagnąć jest możliwe ;)
Mógłby ktoś pokazać kawałek kodu (+małe wytłumaczenie ;) odpowiedzialnego właśnie za tą dynamiczną zależność pomiędzy dwoma (lub więcej) listami wyboru?

Mam nadzieję, że w miarę jasno opisałem o co chodzi ;)
Adamie, jeszcze raz dziękuję. Mimo, że nie o to mi chodziło co przedstawiłeś to liczy się chęć pomocy.

EDIT:
Mysle, ze znalazlem juz sposob na polaczenie ze soba dwoch list rozwijanych i dynamiczna zmiane ich zawartosci - oczywiscie z pomoca pospiepszyl JS. Nie sprawdzalem jednak juz tego, gdyz zrobilem maly redesign i zupelnie zmienilem sposob w jaki dane uzaleznione od listy beda pokazywane.

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1