Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript][MYSQL]Kategorie i podkategorie
Forum PHP.pl > Forum > Przedszkole
Mlodycompany
Witam. Chcę zrobić skrypt uploadu. W formularzu mam selecta kategoria i podkategoria. Do tych selectów wczytuje dane z MySQLa. Ale gdy wybiore np. kategorie 1 to mogę wybrać podkategorie do kategorii 2. Wpadłem na pomysł aby się zmieniało odpowiednio do wybranej kategorii. Skrypt zdobyłem, oto on:
  1. <?php
  2. <form method="post" enctype="multipart/form-data" name="upload">
  3. <table class="page" cellpadding="0" cellspacing="1">
  4. <tr>
  5. <th class="naglowek2" colspan="2">Dodaj</th>
  6. </tr>
  7. <tr>
  8. <th>Nazwa</th>
  9. <th><input name="nazwa" type="text" value=""></th>
  10. </tr>
  11. <tr>
  12. <th>Kategoria</th>
  13. <th><select name="kategoria" onChange="redirect(this.options.selectedIndex)">');
  14. $zapytanie_kat = zapytanie('download_kategorie', '1=1');
  15. while($row = mfa($zapytanie_kat)){
  16. echo('<option value="'.$row[0].'">'.$row[1].'</option>');
  17. }
  18. echo '<script>
  19. var groups=document.upload.kategoria.options.length
  20. var group=new Array(groups)
  21. for (i=0; i<groups; i++)
  22. group[i]=new Array()
  23. group[0][0]=new Option("Website Abstraction","http://wsabstract.com")
  24. group[0][1]=new Option("News.com","http://www.news.com")
  25. group[0][2]=new Option("Wired News","http://www.wired.com")
  26. group[1][0]=new Option("CNN","http://www.cnn.com")
  27. group[1][1]=new Option("ABC News","http://www.abcnews.com")
  28. group[2][0]=new Option("Hotbot","http://www.hotbot.com")
  29. group[2][1]=new Option("Infoseek","http://www.infoseek.com")
  30. group[2][2]=new Option("Excite","http://www.excite.com")
  31. group[2][3]=new Option("Lycos","http://www.lycos.com")
  32. var temp=document.upload.podkategoria
  33. function redirect(x){
  34. for (m=temp.options.length-1;m>0;m--)
  35. temp.options[m]=null
  36. for (i=0;i<group[x].length;i++){
  37. temp.options[i]=new Option(group[x][i].text,group[x][i].value)
  38. }
  39. temp.options[0].selected=true
  40. }
  41. function go(){
  42. location=temp.options[temp.selectedIndex].value
  43. }
  44. </script>';
  45. echo('</th>
  46. </tr>
  47. <tr>
  48. <th>Plik</th>
  49. <th><input type="file" name="upload"></th>
  50. </tr>
  51. <tr>
  52. <th><input type="reset" value="Wyczyść"></th>
  53. <th><input type="submit" value="Wgraj" name="submit"></th>
  54. </tr>
  55. </table>
  56. </form>');
  57. ?>

W skrypcie JS zmieniałem tylko nazwy formularzy. Mój problem jest w tym aby wyprintować tablice JS z bazy MySQLa. Jak to zrobić??
rzymek01
użyj AJAXa, pozwoli Ci on na dynamiczne wczytywanie danych do twojego formularza

albo wczytujesz wszystkie dane z mysql'a i wrzucasz do JS
Mlodycompany
no dobrze, ale ani JS ani AJAXa nie kumam
phpion
No to pobierz sobie dane z MySQL za pomocą PHP i wygeneruj odpowiednią tablicę JS bezpośrednio spod PHP. Nic trudnego - zamiast wypisywać dane do HTML tworzysz odpowiedni kod JS.
Mlodycompany
ale ja kompletnie nie znam JS. Nic a nic więc nawet nie wiem w jakiej postaci mam to generować
phpion
Bez urazy ale... albo nic.
  1. <?php
  2. echo 'group['.$i.']['.$j.']=new Option("'.$row['name'].'","'.$row['url'].'")';
  3. ?>

gdzie $i oraz $j to wartości liczników (0, 1, 2 itd), a $row to dane pobrane z bazy poprzez np. mysql_fetch_assoc(). Co w tym trudnego? Wystarczy pomyśleć...
Mlodycompany
zrobiłem tak:
  1. <?php
  2. echo ('<script>
  3. var groups=document.upload.kategoria.options.length
  4. var group=new Array(groups)
  5. for (i=0; i<groups; i++)
  6. group[i]=new Array()');
  7. $podkategoria = zapytanie('download_podkategorie');
  8. while($rowpod = mysql_fetch_assoc($podkategoria)){
  9. echo 'group['.$rowpod[2].']['.$a.']=new Option("'.$rowpod[1].'")';
  10. }
  11. echo('var temp=document.upload.podkategoria
  12. function redirect(x){
  13. for (m=temp.options.length-1;m>0;m--)
  14. temp.options[m]=null
  15. for (i=0;i<group[x].length;i++){
  16. temp.options[i]=new Option(group[x][i].text,group[x][i].value)
  17. }
  18. temp.options[0].selected=true
  19. }
  20. function go(){
  21. location=temp.options[temp.selectedIndex].value
  22. }
  23. </script>');
  24. ?>

i na stronie żaden błąd sie nie ujawnia, a jak zajrzałem do źródła to zauważyłem
Kod
<script>
            var groups=document.upload.kategoria.options.length
            var group=new Array(groups)
            for (i=0; i<groups; i++)
            group[i]=new Array()<br />
<b>Warning</b>:  mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in <b>c:\usr\krasnal\www\cms\panel_admina.php</b> on line <b>237</b><br />
var temp=document.upload.podkategoria
                    function redirect(x){
                        for (m=temp.options.length-1;m>0;m--)
                        temp.options[m]=null
                        for (i=0;i<group[x].length;i++){
                            temp.options[i]=new Option(group[x][i].text,group[x][i].value)
                        }
                        temp.options[0].selected=true
                    }
                    function go(){
                        location=temp.options[temp.selectedIndex].value
                    }
</script>
daniel1302
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
Jest zwracany pusty wynik z bazy danych popraw soie zapytanie albo mysql_error() użyj
Mlodycompany
dobra. zrobilem tak
  1. <?php
  2. echo ('<script>
  3. var groups=document.upload.kategoria.options.length
  4. var group=new Array(groups)
  5. for (i=0; i<groups; i++)
  6. group[i]=new Array()');
  7. $podkategoria = zapytanie('download_podkategorie', '1=1');
  8. $i=0;
  9. while($rowpod = mfa($podkategoria)){
  10. $i++;
  11. echo 'group['.$rowpod[2].']['.$i.']=new Option("'.$rowpod[1].'")';
  12. }
  13. echo('var temp=document.upload.podkategoria
  14. function redirect(x){
  15. for (m=temp.options.length-1;m>0;m--)
  16. temp.options[m]=null
  17. for (i=0;i<group[x].length;i++){
  18. temp.options[i]=new Option(group[x][i].text,group[x][i].value)
  19. }
  20. temp.options[0].selected=true
  21. }
  22. function go(){
  23. location=temp.options[temp.selectedIndex].value
  24. }
  25. </script>');
  26. ?>

w zrodle jest wszystko tak jak powinno, ale nie przekazuje mi do selecta

jak ktos chce niech looknie sam http://townoflaugh.pl/~cms/home/panel_admina/download/dodaj/
marcio
NIe wiem jak u ciebie wyglada funkcja zapytanie() ale:
  1. <?php
  2. $podkategoria = zapytanie('download_podkategorie');
  3. ?>

Co to jest za zaytanie sql?
Mlodycompany
mam funkcje
  1. <?php
  2. function zapytanie($tabela, $where = ''){
  3. $zapytanie = mysql_query("SELECT * FROM `".$tabela."` WHERE ".$where."");
  4. return($zapytanie);
  5. }
  6. ?>
phpion
Cytat(Mlodycompany @ 15.06.2008, 12:06:14 ) *
w zrodle jest wszystko tak jak powinno, ale nie przekazuje mi do selecta

W źródle nie jest tak jak być powinno. Porównaj sobie skrypt wyjściowy oraz ten, który generuje ci PHP. W szczególności zwróć uwagę na indexy tworzonej tablicy.

Poza tym twoja funkcja zapytanie() nie będzie działać poprawnie jeśli nie przekażesz warunków $where. Wtedy zapytanie będzie wyglądało tak:
  1. SELECT * FROM download_podkategorie WHERE

co spowoduje błąd zapytania.
Mlodycompany
ale zauwaz ze przekazuje i zapytanie wyglada
  1. SELECT * FROM `download_podkategorie` WHERE 1=1
phpion
No teraz już tak. Co nie zmienia faktu, że tablica JS jest tworzona niepoprawnie.
Mlodycompany
no to skoro jest tworzona niepoprawnie to powiedz jak ma byc poprawnie tworzona!
phpion
Zacytuję sam siebie:
Cytat(phpion @ 15.06.2008, 12:47:50 ) *
Porównaj sobie skrypt wyjściowy oraz ten, który generuje ci PHP. W szczególności zwróć uwagę na indexy tworzonej tablicy.

Nie mam zamiaru odwalać roboty za ciebie.
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.