Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF][Zend_Form] Select zależny od select, dane pobierane z bazy danych
Forum PHP.pl > Forum > PHP > Frameworki
enemyofarcha
Witam, może tak pokrótce - jak to dobrze zrobić?

Na sucho w php nie mam problemu z tym, jednak w ZF męczę się już tym trochę. Może pokaże pliki jak to u mnie wygląda w php

select.js
  1. function album(str)
  2. {
  3. if (str=="")
  4. {
  5. document.getElementById(category).innerHTML="";
  6. return;
  7. }
  8.  
  9. if (window.XMLHttpRequest)
  10. {
  11. // code for IE7+, Firefox, Chrome, Opera, Safari
  12. xmlhttp=new XMLHttpRequest();
  13. }
  14. else
  15. {
  16. // code for IE6, IE5
  17. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  18. }
  19.  
  20. xmlhttp.onreadystatechange=function()
  21. {
  22. if (xmlhttp.readyState==4 && xmlhttp.status==200)
  23. {
  24. document.getElementById(category).innerHTML=xmlhttp.responseText;
  25. }
  26. }
  27.  
  28. xmlhttp.open("GET","getcategory.php?q="+str,true);
  29. xmlhttp.send();
  30. }

getcategory.php
  1. <?php
  2. $q=$_GET["q"];
  3.  
  4. $con = mysql_connect('localhost', 'root', '');
  5. if (!$con)
  6. {
  7. die('Could not connect: ' . mysql_error());
  8. }
  9.  
  10. mysql_select_db("table", $con);
  11.  
  12. $sql = "SELECT * FROM categories_gallery WHERE album = $q and category = 0";
  13. $result = mysql_query($sql);
  14.  
  15. while($row = mysql_fetch_array($result)) {?>
  16. <option value="<?=$row['id']?>"><?=$row['name']?></option>
  17. <?php }
  18.  
  19.  
  20. ?>


index.php
  1. <?php
  2. $con = mysql_connect('localhost', 'root', '');
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("table", $con);
  9. $sql = 'SELECT * FROM categories_gallery WHERE album = 0 and category = 0';
  10. $result = mysql_query($sql);
  11. ?>
  12. <html>
  13. <head>
  14. <title>select</title>
  15. <script type="text/javascript" src="select.js"></script>
  16. </head>
  17. <body>
  18. <form>
  19. <select id="album" name="album" onchange="album(this.value)">
  20. <option value="">Album</option>
  21. <?php while($row = mysql_fetch_array($result)) {?>
  22. <option value="<?=$row['id']?>"><?=$row['name']?></option>
  23. <?php } ?>
  24. </select>
  25.  
  26. <select id="category" name="category">
  27. <option value="">Kategoria</option>
  28. </select>
  29. </form>
  30. </body>
  31. </html>
melkorm
W widoku daj po prostu dla tego elementu JS'ową akcję jak to normalnie robisz.
Kod
$(element).change(...);


Przed sprawdzeniem walidacji formularza pobierz te elementy zależne i wrzuć do formularza jako opcje i sprawdź walidację, gdy nie przejdzie walidacji formularz będzie miał wypełnione już oba pola select i zaznaczone odpowiednie opcje.
enemyofarcha
Jakoś nie podchodzi mi aktualizacja pól select przez walidacje formularza...
melkorm
To wtedy nie zrozumiałeś o co mi chodzi smile.gif

Przyjdę do domu z roboty to napiszę pseudokod jak to ma mniej więcej wyglądać smile.gif
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.