Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 24.03.2010 Ostrzeżenie: (0%)
|
|
|
|
|
![]() |
Post
#2
|
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź |
Serdecznie witam Cię na forum.php.pl, ~doti Tak, jest to zrobione przy pomocy technologii Ajax. Selecty mają zdarzenie onchange(), które powoduje po wybraniu pozycji aktualizację pozostałych elementów na podstawie danych pobranych z bazy (skrypt PHP po stronie serwera). Do zrobienia takiej funkcjonalności wystarczy pierwszy lepszy kurs Ajax, w którym będziesz miała opisane podstawowe aspekty: obiekt XMLHttpRequest, obsługa żądań i odpowiedzi, przetwazranie wyników zwróconych z serwera z powrotem po stronie klienta, sposoby manipulowania DOM przy pomocy JavaScript. Oczywiście w razie problemów z przyjemnością Ci pomożemy (IMG:style_emoticons/default/smile.gif) Przy okazji - pisząc posty nie musisz używać w treści posta znaczników BBCode poza cytowanymi fragmentami kodu. pozdrawiam i życzę miłych chwil spedzonych na forum.php.pl blooregard Opiekun |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 24.03.2010 Ostrzeżenie: (0%)
|
W zasadzie juz cos sobie napisałam i cos zaczeło działac.
Gdy kazdy parametr umieszcze w osobnej tabeli to wszystko mi smiga, nawet liczy sume netto. Mam problem gdy pobieram parametry z jednej tabeli. Moze byc taka sytuacja ze dla kategorii wizytowki beda przypisane takie parametry jak kolor i format a dla ulotek np foliowanie. Dlatego musze uzależnic 2 pola select od siebie. moja baza wygląda nast: tabele to : kategorie, parametry, wartosci parametrow, naklad, termin, dostawa, CREATE TABLE `kategorie` ( `id` int(5) unsigned NOT NULL auto_increment, `nazwa` varchar(200) NOT NULL, `cena` float(10,2) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `parametry` ( `id` int(10) unsigned NOT NULL auto_increment, `idkategoria` int(10) NOT NULL, `nazwa` varchar(500) NOT NULL, `pole` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ; CREATE TABLE `wartosci_parametrow` ( `id` int(10) unsigned NOT NULL auto_increment, `idparametr` int(10) NOT NULL, `idkategoria` int(10) NOT NULL, `nazwa` varchar(500) NOT NULL, `cena` float(5,2) NOT NULL, PRIMARY KEY (`id`) ); funkcja w pliku ajax wyglada nast: function ajaxFunction() { var xmlhttp; if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } else { alert("Your browser does not support XMLHTTP!"); } } function ladowanie() { innerHTML = '<img src="loader.gif" border="0">Przetwarzanie danych....'; } function showHint(str) { xmlhttp=GetXmlHttpObject(); var kategoria = encodeURIComponent(document.getElementsByName('idkategoria')[0].value); var termin = encodeURIComponent(document.getElementsByName('idtermin')[0].value); var format = encodeURIComponent(document.getElementsByName('idformat')[0].value); var naklad = encodeURIComponent(document.getElementsByName('idnaklad')[0].value); var projekt = encodeURIComponent(document.getElementsByName('idprojekt')[0].value); var parametr = encodeURIComponent(document.getElementsByName('idparametr')[0].value); var url="pokaz_liste.php"; xmlhttp.open("POST", url, true); var params ="idkategoria="+kategoria+"&idtermin="+termin+"&idformat="+format+"&idnaklad="+naklad+"&idprojekt="+projekt+"&idparametr="+parametr; xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.setRequestHeader("Content-length", params.length); xmlhttp.setRequestHeader("charset", "UTF-8"); xmlhttp.onreadystatechange=stateListChanged; xmlhttp.send(params); } function stateListChanged() { if (xmlhttp.readyState==(1 || 0) ) { document.getElementById("pokaz").innerHTML="</br></br></br></br><p align='center'><img src='loader.gif'></p>"; } if( (xmlhttp.readyState==4) || (xmlhttp.readyState == 200)) { document.getElementById("pokaz").innerHTML=xmlhttp.responseText; } } Niestety mam problem z wyswietlaniem cen obok pol select. Czy to co przedstawilam rozwiazuje problem?? Moze sklad bazy ma byc inny oraz skrypt ajax?? prosze o odpowiedz |
|
|
|
Post
#4
|
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź |
~doti, poproszę Cię o dodanie odpowiedniego BBCode dla kodu.
Twój problem nie dotyczy struktury bazy, gdyż dane pobierasz i przetwarzasz po stronie serwera. To, co z powrotem otrzyma funkcja stateListChanged(), zależy od kodu PHP. Pokaż f-cję, którą pobierasz dane z bazy. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 24.03.2010 Ostrzeżenie: (0%)
|
Podaje kawalek kodu. Wybierajac odpowiednia wartość z kategorii wyswietlam jej parametry ( i powinny byc tez ceny alby pozniej wyliczyc wartosc netto)
Plik index.php echo"<table border='0' align='center' width='100%' cellspacing='1' cellpadding='1' >"; echo"<tr><td colspan='2' class='center'>formularz kalkulacyjny:</td><td class='center'>koszty</td></tr>"; echo'<form action="wynik.php" method="post" name="form1">'; //kategoria--------------------------------------------- echo"<tr><td class='right'>kategoria:</td><td class='left'>"; echo '<select name="idkategoria" id="idkategoria" onchange="showHint(this.value)" return false; style="width: 300px" >'; echo "<option value=''>--- wybierz kategorie ----</option>"; $list1_query = mysql_query('SELECT * FROM kategorie'); while($row_list1 = mysql_fetch_array($list1_query)) { echo '<option value="'.$row_list1['id'].'" label="'.$row_list1['nazwa'].'">'.$row_list1['nazwa'].'</option>'; } echo '</select>'; echo"</td><td class='koszt'></td></tr></table>"; plik pokaz_liste.php echo"<div id='pokaz'>"; echo"<table border='0' align='center' width='950px'><tr><td width='650px' class='table'>"; echo'<form action="wynik.php" method="post" name="form1">'; echo "<input type='hidden' name='kategoria' value='$idkategoria' />"; echo"<table border='0' align='center' width='100%' cellspacing='1' cellpadding='1' >"; echo"<tr><td colspan='2' class='center'>formularz kalkulacyjny:</td><td class='center'>koszty</td></tr>"; //kategoria--------------------------------------------- echo"<tr><td class='right'>kategoria:</td><td class='left'>"; echo '<select name="idkategoria" id="idkategoria" onchange="showHint()" return false; style="width: 300px" >'; //echo "<option value=''>--- wybierz kategorie ----</option>"; $list_query= mysql_query('SELECT * FROM kategorie'); while($row_list = mysql_fetch_array($list_query)) { print "<option "; if($row_list['id']==$_POST['idkategoria']) print " SELECTED "; print " value=".$row_list['id'].">" .$row_list['nazwa']."</option>"; } print "</select>"; echo"</td><td class='koszt'>"; ?><div id="pokaz" > <?php if($_POST['idkategoria']) { $list_query1= mysql_query('SELECT * FROM kategorie where id = '.$idkategoria.' '); echo"<table width='100%' border='0'>"; echo"<tr>"; while($row_list1 = mysql_fetch_array($list_query1)) { $cenazakolor=$row_list1['cenazakolor']; $cena=$row_list1['cena']; $przygotowanie=$row_list1['przygotowanie']; } echo $sumakat=$cenazakolor+$cena+$przygotowanie; echo"</tr></table>"; $cenatermin; } ?></div><?php echo"</td></tr>"; //koniec kategorie //parametry =================================================== ?><div id='pokaz' class='pokaztermin'> <?php $list2_query= mysql_query('SELECT * FROM parametry WHERE idkategoria = '.$idkategoria.'' ); while($row_list2 = mysql_fetch_array($list2_query)) { $parametr=$row_list2['nazwa']; $id=$row_list2['id']; echo"<tr><td class='right'>$parametr</td>"; $list3_query=mysql_query('SELECT * FROM wartosci_parametrow WHERE idkategoria ='.$idkategoria.' and idparametr='.$id.''); echo '<td class="left"> <select name="idparametr" id="idparametr" onchange="showHint(this.value)" style="width: 300px">'; while($row_list3 = mysql_fetch_array($list3_query)) { print "<option "; if($row_list3['id']==$_POST['idparametr']) print " SELECTED "; print " value=".$row_list3['id'].">" .$row_list3['nazwa']."</option>"; } echo '</select></td> <td class="koszt">'; ?><div id="pokaz"><?php if($_POST['idparametr']) { $list_query4= mysql_query('SELECT * FROM wartosci_parametrow WHERE id='.$idparametr.' '); echo"<table width='100%' border='0'>"; echo"<tr>"; while($row_list4 = mysql_fetch_array($list_query4)) { echo $cenaparametr=$row_list4['cena'] ; } echo"</tr></table>"; $cenaparametr; } ?> </div><?php echo'</td></tr>'; } ?></div><?php Wybierajac wartosc w kategorii wyswietlaja sie jej parametry. Ale problem jest jesli mam wybrac wartosc w parametrach (tak jak jest to w przykladowym formularzu na stronie drukarni przyklad. Nie potrafie tego ogarnac. Zmienia mi cene pierwszego parametru pozostale juz nie. Jak przesłać wybrana wartośc z listy rozwijalnej i odczytac jej id wraz z cena. Jak w funkcji ajax wykonac petle aby zwróciła odpowiednia zmienna? Czy jest ktoś kto mógłby pomoc (IMG:style_emoticons/default/questionmark.gif) Bardzo prosze Czy jest ktos kto mógłby pomóc (IMG:style_emoticons/default/sadsmiley02.gif) (IMG:style_emoticons/default/sadsmiley02.gif) (IMG:style_emoticons/default/sadsmiley02.gif) (IMG:style_emoticons/default/sadsmiley02.gif) |
|
|
|
Post
#6
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
1: brak dostosowania się do polecenia o korzystaniu z bbcode.
2: kilkukrotne podbijanie tematu. Zamykam, dość tego. Szanujmy siebie nawzajem. |
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 16:23 |