Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz
Forum PHP.pl > Forum > PHP
lik
Witam. Jak zrobic formularz ktory np.: ma 3 pola
1.pole; wybiera sie z listy np gatunek ksiazki (kryminal...)
2.pole; (po wybraniu gatunku) na liscie dostepni sa tylko autorzy ktorzy pisza w tym gatunku
3.pole; po wybraniu autora na liscie dostepne sa tylko ksiazki tego autora

chodzi glownie o to aby zawartosc kolejnych pol formularza byla zalezna od wczesniej wybranych.
kicaj
To zrobic mozna w JS (bedzie lepiej, bez przeladowowania strony)
lik
co prawda nabardziej interesowalo by mnie rozwiazanie w php ale kazda propozycja bedzie mile widziana.
kicaj
W php nie widze zadnego problemu (po za nieciekawym przeladowywaniem strony).
Wybierasz `gatunek`, potem a `autorach` wyswietlasz wszystkich ktorzy posiadaja `id_gatunku`, no i na koncu wszystkie ksiazki spelniajace `id_autora`.
lik
a jak wygladaloby to w js ?
adism
zobacz sobie: http://forum.php.pl/index.php?showtopic=20159

mozna to jeszcze polaczyc z php zeby np. ladowalo liste z bazy danych
lik
probowalem ten skrypt rozbudowac do 3 list, niestety bez znojomosci js nic z tego nie bedzie...potrzebuje zrobic to dla 3 list i zeby pola w listach byly pobierane z bazy jesli ktos ma jakies sugestie to bede BARDZO wdzieczny.
adism
oto kod dla 3 list:

Kod
<form name="menu">
<p><select name="menu1" size="1" onChange="buduj2(document.menu.menu1.options.selectedIndex)">
</select>
<select name="menu2" size="1"  onChange="buduj3(document.menu.menu1.options.selectedIndex, document.menu.menu2.options.selectedIndex)">
</select>
<select name="menu3" size="1">
</select>
</p>
</form>
<script>
<!--

pozycje1 = new Array()
pozycje1[0] = new Option("pozycja 1","value")
pozycje1[1] = new Option("pozycja 2","value")
pozycje1[2] = new Option("pozycja 3","value")


pozycje2 = new Array()
pozycje2[0] = new Array()
pozycje2[0][0] = new Option("pozycja 1 1","value")
pozycje2[0][1] = new Option("pozycja 1 2","value")
pozycje2[0][2] = new Option("pozycja 1 3","value")
pozycje2[1] = new Array()
pozycje2[1][0] = new Option("pozycja 2 1","value")
pozycje2[1][1] = new Option("pozycja 2 2","value")
pozycje2[1][2] = new Option("pozycja 2 3","value")
pozycje2[2] = new Array()
pozycje2[2][0] = new Option("pozycja 3 1","value")
pozycje2[2][1] = new Option("pozycja 3 2","value")
pozycje2[2][2] = new Option("pozycja 3 3","value")


pozycje3 = new Array()

pozycje3[0] = new Array()
pozycje3[0][0] = new Array()
pozycje3[0][0][0] = new Option("pozycja 1 1 1","value")
pozycje3[0][0][1] = new Option("pozycja 1 1 2","value")
pozycje3[0][0][2] = new Option("pozycja 1 1 3","value")
pozycje3[0][1] = new Array()
pozycje3[0][1][0] = new Option("pozycja 1 2 1","value")
pozycje3[0][1][1] = new Option("pozycja 1 2 2","value")
pozycje3[0][1][2] = new Option("pozycja 1 2 3","value")
pozycje3[0][2] = new Array()
pozycje3[0][2][0] = new Option("pozycja 1 3 1","value")
pozycje3[0][2][1] = new Option("pozycja 1 3 2","value")
pozycje3[0][2][2] = new Option("pozycja 1 3 3","value")

pozycje3[1] = new Array()
pozycje3[1][0] = new Array()
pozycje3[1][0][0] = new Option("pozycja 2 1 1","value")
pozycje3[1][0][1] = new Option("pozycja 2 1 2","value")
pozycje3[1][0][2] = new Option("pozycja 2 1 3","value")
pozycje3[1][1] = new Array()
pozycje3[1][1][0] = new Option("pozycja 2 2 1","value")
pozycje3[1][1][1] = new Option("pozycja 2 2 2","value")
pozycje3[1][1][2] = new Option("pozycja 2 2 3","value")
pozycje3[1][2] = new Array()
pozycje3[1][2][0] = new Option("pozycja 2 3 1","value")
pozycje3[1][2][1] = new Option("pozycja 2 3 2","value")
pozycje3[1][2][2] = new Option("pozycja 2 3 3","value")

pozycje3[2] = new Array()
pozycje3[2][0] = new Array()
pozycje3[2][0][0] = new Option("pozycja 3 1 1","value")
pozycje3[2][0][1] = new Option("pozycja 3 1 2","value")
pozycje3[2][0][2] = new Option("pozycja 3 1 3","value")
pozycje3[2][1] = new Array()
pozycje3[2][1][0] = new Option("pozycja 3 2 1","value")
pozycje3[2][1][1] = new Option("pozycja 3 2 2","value")
pozycje3[2][1][2] = new Option("pozycja 3 2 3","value")
pozycje3[2][2] = new Array()
pozycje3[2][2][0] = new Option("pozycja 3 3 1","value")
pozycje3[2][2][1] = new Option("pozycja 3 3 2","value")
pozycje3[2][2][2] = new Option("pozycja 3 3 3","value")

function buduj3(id1, id2) {
for (m = document.menu.menu3.options.length-1; m>0; m--) {
  document.menu.menu3.options[m] = null;
}
for (i = 0; i<pozycje3[id1][id2].length; i++) {
  document.menu.menu3.options[i] = pozycje3[id1][id2][i];
}
document.menu.menu3.options[0].selected=true
}

function buduj2(id1) {
for (m = document.menu.menu2.options.length-1; m>0; m--) {
  document.menu.menu2.options[m] = null;
}
for (i = 0; i<pozycje2[id1].length; i++) {
  document.menu.menu2.options[i] = pozycje2[id1][i];
}
document.menu.menu2.options[0].selected=true
buduj3(document.menu.menu1.options.selectedIndex, 0)
}

function buduj1() {
for (m = document.menu.menu1.options.length-1; m>0; m--) {
  document.menu.menu1.options[m] = null;
}
for (i = 0; i<pozycje1.length; i++) {
  document.menu.menu1.options[i] = pozycje1[i];
}
document.menu.menu1.options[0].selected=true
buduj2(0)
}


buduj1();
//-->
</script>


troche tego duzo, ale czy nie oto ci chodzilo

na wersje php musisz troche poczekac bo z glowy ci tego nie napisze

p.s. jutro powinna byc gotowa wersja php z mysql
FiDO
Skrypty -> php
adism
juz pracuje nad tym skryptem

p.s. a w php->skrypty php to jest kod dla jednego menu jakby co

EDIT
------------------------------------------------------------------------------
ok juz gotowy

  1. <?
  2. function dbConnect() {
  3. $dbHost = &#092;"localhost\";
  4. $dbUser = &#092;"root\";
  5. $dbPass = &#092;"\";
  6. $dbName = &#092;"menusy\";
  7.  
  8.     $link = @mysql_pconnect($dbHost, $dbUser, $dbPass);
  9.  
  10.     if (!$link) {
  11.         fail(&#092;"Nie można ustanowić połączenia z serwerem bazy danych\");
  12.     }
  13.  
  14.     if (!@mysql_select_db($dbName)) {
  15.         fail(&#092;"Nie można znaleźć bazy danych $dbName\");
  16.     }
  17.     
  18.     return $link;
  19. }
  20. $link = dbConnect();
  21. $tablice = &#092;"\";
  22.  
  23. // pierwsze menu
  24. $query1 = &#092;"SELECT * FROM menu1\";
  25. $result1 = mysql_query($query1);
  26. $count1 = mysql_num_rows($result1);
  27. $tablice .= &#092;"pozycje1 = new Array();\";
  28. for ($i1=0; $i1<$count1; $i1++) {
  29.  $wiersz1 = mysql_fetch_array($result1);
  30.  $tablice .= &#092;"pozycje1[$i1] = new Option('\".$wiersz1[\"text\"].\"','\".$wiersz1[\"value\"].\"');\";
  31. }
  32. // end
  33.  
  34. // drugie menu
  35. $tablice .= &#092;"pozycje2 = new Array();\";
  36. for ($i1=0; $i1<$count1; $i1++) {
  37.  $tablice .= &#092;"pozycje2[$i1] = new Array();\";
  38.  $parent = &#092;"$i1+1\";
  39.  $query2 = &#092;"SELECT * FROM menu2 WHERE parent_id = $parent\";
  40.  $result2 = mysql_query($query2);
  41.  $count2 = mysql_num_rows($result2);
  42.  for ($i2=0; $i2<$count2; $i2++) {
  43.   $wiersz2 = mysql_fetch_array($result2);
  44.   $tablice .= &#092;"pozycje2[$i1][$i2] = new Option('\".$wiersz2[\"text\"].\"','\".$wiersz2[\"value\"].\"');\";
  45.  }
  46. }
  47. // end
  48.  
  49. // trzecie menu
  50. $tablice .= &#092;"pozycje3 = new Array();\";
  51. for ($i1=0; $i1<$count1; $i1++) {
  52.  $tablice .= &#092;"pozycje3[$i1] = new Array();\";
  53.  $parent2 = &#092;"$i1+1\";
  54.  $query2 = &#092;"SELECT * FROM menu2 WHERE parent_id = $parent2\";
  55.  $result2 = mysql_query($query2);
  56.  $count2 = mysql_num_rows($result2);
  57.  for ($i2=0; $i2<$count2; $i2++) {
  58.   $wiersz2 = mysql_fetch_array($result2);
  59.   $tablice .= &#092;"pozycje3[$i1][$i2] = new Array();\";
  60.   $parent3 = $wiersz2['id'];
  61.   $query3 = &#092;"SELECT * FROM menu3 WHERE parent_id = $parent3\";
  62.   $result3 = mysql_query($query3);
  63.   $count3 = mysql_num_rows($result3);
  64.   for ($i3=0; $i3<$count3; $i3++) {
  65.    $wiersz3 = mysql_fetch_array($result3);
  66.    $tablice .= &#092;"pozycje3[$i1][$i2][$i3] = new Option('\".$wiersz3[\"text\"].\"','\".$wiersz3[\"value\"].\"');\";
  67.   }
  68.  }
  69. }
  70. // end
  71.  
  72. ?>
  73. <html>
  74. <body>
  75. <form name=\"menu\">
  76. <p><select name=\"menu1\" size=\"1\" onChange=\"buduj2(document.menu.menu1.options.selectedIndex)\">
  77. </select>
  78. <select name=\"menu2\" size=\"1\"  onChange=\"buduj3(document.menu.menu1.options.selectedIndex, document.menu.menu2.options.sele
    c
  79. edIndex)\">
  80. </select>
  81. <select name=\"menu3\" size=\"1\">
  82. </select>
  83. </p>
  84. </form>
  85. <script>
  86. <!--
  87. <?
  88. echo $tablice;
  89. ?>
  90.  
  91. function buduj3(id1, id2) {
  92.  for (m = document.menu.menu3.options.length-1; m>0; m--) {
  93.   document.menu.menu3.options[m] = null;
  94.  }
  95.  for (i = 0; i<pozycje3[id1][id2].length; i++) {
  96.   document.menu.menu3.options[i] = pozycje3[id1][id2][i];
  97.  }
  98.  document.menu.menu3.options[0].selected=true;
  99. }
  100.  
  101. function buduj2(id1) {
  102.  for (m = document.menu.menu2.options.length-1; m>0; m--) {
  103.   document.menu.menu2.options[m] = null;
  104.  }
  105.  for (i = 0; i<pozycje2[id1].length; i++) {
  106.   document.menu.menu2.options[i] = pozycje2[id1][i];
  107.  }
  108.  document.menu.menu2.options[0].selected=true;
  109.  buduj3(document.menu.menu1.options.selectedIndex, 0);
  110. }
  111.  
  112. function buduj1() {
  113.  for (m = document.menu.menu1.options.length-1; m>0; m--) {
  114.   document.menu.menu1.options[m] = null;
  115.  }
  116.  for (i = 0; i<pozycje1.length; i++) {
  117.   document.menu.menu1.options[i] = pozycje1[i];
  118.  }
  119.  document.menu.menu1.options[0].selected=true;
  120.  buduj2(0);
  121. }
  122.  
  123.  
  124. buduj1();
  125. //-->
  126. </script>
  127. </body>
  128. </html>


a oto plik sql bazy danych (przyklad):
  1. USE menusy;
  2.  
  3.  
  4. #
  5. # Table structure for table 'menu1'
  6. #
  7.  
  8. CREATE TABLE menu1 (
  9. id int(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  10. text char(255) DEFAULT '0',
  11. value char(255) DEFAULT 'value',
  12. PRIMARY KEY (id)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  14.  
  15.  
  16.  
  17. #
  18. # Dumping data for table 'menu1'
  19. #
  20.  
  21. INSERT INTO menu1 VALUES("1", "Ksiazki", "value");
  22. INSERT INTO menu1 VALUES("2", "CD / DVD", "cd");
  23. INSERT INTO menu1 VALUES("3", "Znaczki", "znaczki");
  24.  
  25.  
  26. #
  27. # Table structure for table 'menu2'
  28. #
  29.  
  30. CREATE TABLE menu2 (
  31. id int(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  32. text char(255) DEFAULT '0',
  33. value char(255) DEFAULT 'value',
  34. parent_id int(3) DEFAULT '0',
  35. PRIMARY KEY (id)
  36. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  37.  
  38.  
  39.  
  40. #
  41. # Dumping data for table 'menu2'
  42. #
  43.  
  44. INSERT INTO menu2 VALUES("1", "ksiazki 1", "value", "1");
  45. INSERT INTO menu2 VALUES("2", "ksiazki 2", "value", "1");
  46. INSERT INTO menu2 VALUES("3", "ksiazki 3", "value", "1");
  47. INSERT INTO menu2 VALUES("4", "ksiazki 4", "value", "1");
  48. INSERT INTO menu2 VALUES("5", "cd 1", "value", "2");
  49. INSERT INTO menu2 VALUES("6", "cd 2", "value", "2");
  50. INSERT INTO menu2 VALUES("7", "cd 3", "value", "2");
  51. INSERT INTO menu2 VALUES("8", "znaczki 1", "value", "3");
  52. INSERT INTO menu2 VALUES("9", "znaczki 2", "value", "3");
  53.  
  54.  
  55. #
  56. # Table structure for table 'menu3'
  57. #
  58.  
  59. CREATE TABLE menu3 (
  60. id int(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  61. text char(255) DEFAULT '0',
  62. value char(255) DEFAULT 'value',
  63. parent_id int(3) DEFAULT '0',
  64. PRIMARY KEY (id)
  65. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  66.  
  67.  
  68.  
  69. #
  70. # Dumping data for table 'menu3'
  71. #
  72.  
  73. INSERT INTO menu3 VALUES("1", "ksiazki 1 1", "value", "1");
  74. INSERT INTO menu3 VALUES("2", "ksiazki 1 2", "value", "1");
  75. INSERT INTO menu3 VALUES("3", "ksiazki 1 3", "value", "1");
  76. INSERT INTO menu3 VALUES("4", "ksiazki 2 1", "value", "2");
  77. INSERT INTO menu3 VALUES("5", "ksiazki 2 2", "value", "2");
  78. INSERT INTO menu3 VALUES("6", "ksiazki 3 1", "value", "3");
  79. INSERT INTO menu3 VALUES("7", "ksiazki 3 2", "value", "3");
  80. INSERT INTO menu3 VALUES("8", "ksiazki 4 1", "value", "4");
  81. INSERT INTO menu3 VALUES("9", "ksiazki 4 2", "value", "4");
  82. INSERT INTO menu3 VALUES("10", "cd 1 1", "value", "5");
  83. INSERT INTO menu3 VALUES("11", "cd 1 2", "value", "5");
  84. INSERT INTO menu3 VALUES("12", "cd 2 1", "value", "6");
  85. INSERT INTO menu3 VALUES("13", "cd 2 2", "value", "6");
  86. INSERT INTO menu3 VALUES("14", "cd 3 1", "value", "7");
  87. INSERT INTO menu3 VALUES("15", "cd 3 2", "value", "7");
  88. INSERT INTO menu3 VALUES("16", "znaczki 1 1", "value", "8");
  89. INSERT INTO menu3 VALUES("17", "znaczki 1 2", "value", "8");
  90. INSERT INTO menu3 VALUES("18", "znaczki 2 1", "value", "9");
  91. INSERT INTO menu3 VALUES("19", "znaczki 2 2", "value", "9");


oczywiscie aby uzyc tego przykladowego pliku musisz najpierw stworzyc baze "menusy"
uffff
troche sie nameczylem
ale efekt jest... efektowny biggrin.gif
p.s. polecam program MySQL Front
lik
BARDZO dziekuje za pomoc. oby jak najwiecej takich ludzi odwiedzalo to forum.
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.