Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Menu: mechanizmy zależności (projekt PHP/MYSQL)
medicalitlogisti...
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


Szanowni Państwo,

Jestem na początku drogi jeżeli chodzi o PHP i MYSQL. Przygotowałem mechanizm do generowania formularzy.
Jednak zatrzmałem się nad peweną kwestia. Zależności po wyborze jednej pozycji z pozycją drugą.
Przedstawie może temat na zalaczonym obrazku. Konsultowałem sprawę z Adobe bo cały mechanizm jest stworzony
w programie "Adobe Dreamweaver". Stąd tłumaczenie również angielskie.

Jeżeli mogę liczyć na pomoc będę wdzieczny. Dane na tym poziome są zaciągane z bazy MYSQL (nazwy działów i nazwy formularzy)

https://picasaweb.google.com/10932344148621...816917951672978

Z góry dziękuje za wsparcie.
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #2





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


http://www.google.co.uk/search?sourceid=ch...ependent+select
http://www.javascripttoolbox.com/lib/dynamicoptionlist/
http://en.wikipedia.org/wiki/Ajax_(programming)
http://en.wikipedia.org/wiki/JQuery

PS. Niewiele to ma wspólnego z PHP...

Ten post edytował Bags_Bunny 26.04.2011, 10:26:11
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


Dziękuje za odpowiedz.

Prosze tylko o jeszcze jedna odpowiedz. Tak jak zaznaczyłem dane zaciągane są z bazy (Dział i formularze - "nazwy danych")
jeżlei wprowadze któryś z tych mechanizmów nadal będa się do tych danych odnosiły. Dlaczego pytam docelowo po wyborze
danego formularza ma otworzyć się nowe okono zawierające formularz. A w nim dane wpisywane miałby zapisywać się na serwerze MYSQL?
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #4





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Wybacz, ale kompletnie nie zrozumiałem o co Ci chodzi.
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


ok, nie przechadzam. Dziękuje za chęci.
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #6





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Może sparafrazuj.
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


...chodzi mi o to czy wykorzystując select np. AjAXA, Java. Nadal opieram się na danych bazy z której są wyciągane dane takie jak nazwa działu?
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #8





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Masz pełną dowolność. Możesz użyć Ajax do pobrania listy wygenerowanej przez PHP.

PS. JavaScript!!! Java to zupełnie inny język.
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


Zobacz proszę... tak wygląda mój plik php po którym otrzymuje informacje z bazy dotyczące działu i nazwy formularza.
Analizując link ze wzdjęciem który wysłałem w którym miejscu wstawić skrypt do filtrowania o którym rozmawiamy:

  1. <?php require_once('Connections/Fobos_Form.php'); ?>
  2. <?php
  3. mysql_query('SET NAMES utf8');
  4. if (!function_exists("GetSQLValueString")) {
  5. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  6. {
  7. if (PHP_VERSION < 6) {
  8. $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  9. }
  10.  
  11. $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  12.  
  13. switch ($theType) {
  14. case "text":
  15. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  16. break;
  17. case "long":
  18. case "int":
  19. $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  20. break;
  21. case "double":
  22. $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  23. break;
  24. case "date":
  25. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  26. break;
  27. case "defined":
  28. $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  29. break;
  30. }
  31. return $theValue;
  32. }
  33. }
  34.  
  35. mysql_select_db($database_Fobos_Form, $Fobos_Form);
  36. $query_Recordset1 = "SELECT nazwa_dzialu FROM wybor_dzialu";
  37. $Recordset1 = mysql_query($query_Recordset1, $Fobos_Form) or die(mysql_error());
  38. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  39. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  40.  
  41.  
  42. mysql_select_db($database_Fobos_Form, $Fobos_Form);
  43. $query_Recordset2 = "SELECT nazwa_formularza FROM wybor_formularza";
  44. $Recordset2 = mysql_query($query_Recordset2, $Fobos_Form) or die(mysql_error());
  45. $row_Recordset2 = mysql_fetch_assoc($Recordset2);
  46. $totalRows_Recordset2 = mysql_num_rows($Recordset2);
  47.  
  48.  
  49. ?>
  50. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  51. <html xmlns="http://www.w3.org/1999/xhtml">
  52. <head>
  53. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  54. <title>Formularze Fobos Invest</title>
  55. <style type="text/css">
  56. #form1 table tr th {
  57. text-align: left;
  58. font-family: Arial, Helvetica, sans-serif;
  59. font-size: 12px;
  60. font-weight: bold;
  61. }
  62. #form1 table tr td {
  63. font-family: Arial, Helvetica, sans-serif;
  64. font-size: 12px;
  65. font-weight: bold;
  66. }
  67. body {
  68. background-image: url(%20);
  69. background-repeat: no-repeat;
  70. }
  71. </style>
  72. </head>
  73.  
  74. <body tracingsrc=" " tracingopacity="100">
  75. <form id="form1" name="form1" method="post" action="">
  76. <p><img src="Images/obraz.jpg" width="220" height="100" alt="logo" /></p>
  77. <table width="210" border="0" cellspacing="0" cellpadding="0">
  78. <tr>
  79. <td width="210">&nbsp;</td>
  80. </tr>
  81. <tr>
  82. <td><font size="5"><font color="red">Formularze</font></td>
  83. </tr>
  84. <tr>
  85. <td>&nbsp;</td>
  86. </tr>
  87. </table>
  88. <table width="209" border="0" cellspacing="0" cellpadding="0">
  89. <tr>
  90. <th width="209" scope="col">Wybierz Dział:</th>
  91. </tr>
  92. <tr>
  93. <td><label for="wybor_dzialu"></label>
  94. <select name="wybor_dzialu" size="1" id="wybor_dzialu">
  95. <?php
  96. do {
  97. ?>
  98. <option value="<?php echo $row_Recordset1['nazwa_dzialu']?>"><?php echo $row_Recordset1['nazwa_dzialu']?></option>
  99. <?php
  100. } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
  101. $rows = mysql_num_rows($Recordset1);
  102. if($rows > 0) {
  103. mysql_data_seek($Recordset1, 0);
  104. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  105. }
  106. ?>
  107. </select></td>
  108. </tr>
  109. <tr>
  110. <td>&nbsp;</td>
  111. </tr>
  112. </table>
  113. <table width="283" border="0" cellspacing="0" cellpadding="0">
  114. <tr>
  115. <td width="283">Wybierz Formularz:</td>
  116. </tr>
  117. <tr>
  118. <td><select name="wybor_formularza" id="wybor_formularza">
  119.  
  120. <?php
  121. do {
  122. ?>
  123. <option value="<?php echo $row_Recordset2['nazwa_formularza']?>"><?php echo $row_Recordset2['nazwa_formularza']?></option>
  124. <?php
  125. } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2));
  126. $rows = mysql_num_rows($Recordset2);
  127. if($rows > 0) {
  128. mysql_data_seek($Recordset2, 0);
  129. $row_Recordset2 = mysql_fetch_assoc($Recordset2);
  130. }
  131. ?>
  132. </select></td>
  133. </tr>
  134. <tr>
  135. <td>&nbsp;</td>
  136. </tr>
  137. </table>
  138. <table width="283" border="0" cellspacing="0" cellpadding="0">
  139. <tr>
  140. <td width="283"><p>
  141. <input type="submit" name="wybor" id="wybor" value="Generuj nowy Formularz" />
  142. </p>
  143. <p>&nbsp;</p>
  144. <p><font size="5"><font color="red">Archiwum</font></p></td>
  145. </tr>
  146. <tr>
  147. <td>&nbsp;</td>
  148. </tr>
  149. <tr>
  150. <td>Wybierz Dział:</td>
  151. </tr>
  152. </table>
  153. <table width="283" border="0" cellspacing="0" cellpadding="0">
  154. <tr>
  155. <td width="283"><select name="wybor_dzialu2" id="wybor_dzialu2">
  156. <?php
  157. do {
  158. ?>
  159. <option value="<?php echo $row_Recordset1['nazwa_dzialu']?>"><?php echo $row_Recordset1['nazwa_dzialu']?></option>
  160. <?php
  161. } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
  162. $rows = mysql_num_rows($Recordset1);
  163. if($rows > 0) {
  164. mysql_data_seek($Recordset1, 0);
  165. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  166. }
  167. ?>
  168. </select></td>
  169. </tr>
  170. <tr>
  171. <td>&nbsp;</td>
  172. </tr>
  173. <tr>
  174. <td>Wybierz Formularz:</td>
  175. </tr>
  176. </table>
  177. <table width="283" border="0" cellspacing="0" cellpadding="0">
  178. <tr>
  179. <td width="283"><select name="wybor_formularza2" id="wybor_formularza2">
  180. <?php
  181. do {
  182. ?>
  183. <option value="<?php echo $row_Recordset2['nazwa_formularza']?>"><?php echo $row_Recordset2['nazwa_formularza']?></option>
  184. <?php
  185. } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2));
  186. $rows = mysql_num_rows($Recordset2);
  187. if($rows > 0) {
  188. mysql_data_seek($Recordset2, 0);
  189. $row_Recordset2 = mysql_fetch_assoc($Recordset2);
  190. }
  191. ?>
  192. </select></td>
  193. </tr>
  194. <tr>
  195. <td>&nbsp;</td>
  196. </tr>
  197. <tr>
  198. <td><input type="submit" name="Archiwum" id="Archiwum" value="Generuj historie Formularza" /></td>
  199. </tr>
  200. </table>
  201. <p>&nbsp;</p>
  202. </form>
  203. </body>
  204. </html>
  205. <?php
  206. mysql_free_result($Recordset1);
  207.  
  208. mysql_free_result($Recordset2);
  209. ?>

Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #10





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Na początek, stwórz osobny skrypt, który na podstawie ID pobranego z pierwszego selecta będzie wypisywał zawartość dla drugiego.

Jak będziesz to mieć, w momencie zmiany pierwszego selecta, musisz pobrać ten wyniki Ajaksem i zmienić zawartość drugiego.

Na początek poczytaj o funkcjach jQuery: ready(), change(), ajax(), val(), html(), a także o JSON.
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #11





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


Dziękuje. Nie chciałbym iść na łatwizne ale czas mnie goni... są podobne gotowe rozwiązania które mógłbym podejrzeć?
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #12





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


W zasadzie podawałem Ci już linki. Np. plugin do jQuery: http://plugins.jquery.com/plugin-tags/dependent-selects

http://www.google.co.uk/search?sourceid=ch...07decfb9c829533 - pierwsze kilka wyników to poradniki krok po kroku. W Googlu wszystko się znajdzie.

A tu gotowy skrypt z opisem: http://www.9lessons.info/2010/08/dynamic-d...-box-using.html

Ten post edytował Bags_Bunny 26.04.2011, 12:07:55
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #13





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


Jeszcze raz dziekuje.
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #14





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Bardzo proszę. Jeśli pomogłem to poproszę o "Pomógł".

@down: dziękuję.

Ten post edytował Bags_Bunny 26.04.2011, 12:14:34
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #15





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


klikniete (IMG:style_emoticons/default/smile.gif)

Cytat(medicalitlogistic @ 26.04.2011, 13:14:06 ) *


Witam,

DO tego tematu powracam jeszcze raz. Pewien etap został zamkniety. Za co dziękuje "Bags_bunny"

Ale teraz:


Mam takie pytanie. moja baza składa się z dwóch tabel tabela pierwsza to "wybor_działu" tabela druga "wybor_formularza"
W tabeli "wybor_działu" (znajdują sie pola "dzial_ID" "nazwa_dzialu") a w tabeli "wybor_formularza" (znajdują sie pola "form_ID", "nazwa_formularza", "dzial_ID")

DO tego ostatniego czyli pola "dzial_ID" wpisałem wartości odpowiadające ID z tabeli nazwa działu. W celu uzyskania efektu, że jak w formularzu wybiore np. "dział produkcyjny który w bazie ma ID=3 to po wyborze w formularzu opcji "wybór formularza" pokaża się tylko lista formularzy przypisanych po ID stąd trzecia kolumna
"dzial_ID" w tabeli "wybor_formularza"

Pozostaje teraz kwestia skryptu który musze umieścić w pliku php aby tak zadziałało. Ale niestety wiedza się kończy. Dopiero zaczynam z tematem.
Czy mogę prosić o wskazówki jak ma wyglądać mechanizm działania aby uzyskać zamierzony efekt.

Z góry dziękuje.
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #16





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Najprościej IMO użyc JSON.
Powiedzmy, że masz tablicę w postaci:
  1. $formularze[3] = 'Nazwa';
  2. $formularze[7] = 'Inna nazwa';
  3. ...

gdzie 3 i 7 to wartość form_ID, zrób z tego JSON
  1. echo json_encode($formularze);

Teraz możesz wysłać to prosto "do" jQuery (dając mu do zrozumienia, że jest to JSON - musisz* ustawić odpowiedni parametr funkcji ajax(), zawsze zapominam jak się nazywa, ale w dokumentacji bez problemu znajdziesz).
jQuery to zdekoduje, i będziesz mieć dokładnie taką samą tablicę w JS.

* hipotetycznie nie musisz i jQuery powinien rozpoznać sam, ale z tego, co zauważyłem, niezbyt dobrze mu to wychodzi.
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #17





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


Dziękuje.

A gdzie wskazuje do jakiego działu maja się podpiąć wybrane formularze.?
Czyli wybieram z pierwszego slecta dział produkcja i w drugim select pokazują się wskazane formularze i analogicznie z pozostałymi działami?
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #18





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Musisz przekazać id wybranego działu w momencie pobierania formularzy. Przyjmując, że id selecta to "dzial":
Kod
$.ajax(
{
    ...,
    data: { dzial: $('#dzial').val() },
    ...
});


O ile czegoś nie pokręciłem pisząc z palca, będziesz mógł odczytać wartość "dzial" poprzez get (lub post, jeśli tak ustawisz - request w każdym bądź razie).
Go to the top of the page
+Quote Post
medicalitlogisti...
post
Post #19





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 22.03.2011

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


Hmm, czy mogę prosić Cię o email. Wysłałbym print screen bazy MySql jak ma tablice i pola poukładane.
Na podstawie tego poprosił o wsparcie w przygotowaniu skryptu.

Czy będzie to problem?
Go to the top of the page
+Quote Post
Bags_Bunny
post
Post #20





Grupa: Zarejestrowani
Postów: 262
Pomógł: 39
Dołączył: 12.04.2004

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


Nie udzielam pomocy poza forum.

Mogę to wykonać, ale to już zależy jakim budżetem dysponujesz.

Jeśli chodzi Ci tylko o wstawienie zrzutów ekranu, to zrób to tutaj, ale nikt nie będzie pisał skryptu za Ciebie.

Ten post edytował Bags_Bunny 27.04.2011, 12:24:16
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 25.08.2025 - 20:26