Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][JavaScript][MYSQL]Kategorie i podkategorie
Mlodycompany
post 15.06.2008, 07:03:23
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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ć??
Go to the top of the page
+Quote Post
rzymek01
post 15.06.2008, 09:43:47
Post #2





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


użyj AJAXa, pozwoli Ci on na dynamiczne wczytywanie danych do twojego formularza

albo wczytujesz wszystkie dane z mysql'a i wrzucasz do JS


--------------------
:]
Go to the top of the page
+Quote Post
Mlodycompany
post 15.06.2008, 10:16:44
Post #3





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


no dobrze, ale ani JS ani AJAXa nie kumam
Go to the top of the page
+Quote Post
phpion
post 15.06.2008, 10:24:08
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
Mlodycompany
post 15.06.2008, 10:27:05
Post #5





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


ale ja kompletnie nie znam JS. Nic a nic więc nawet nie wiem w jakiej postaci mam to generować
Go to the top of the page
+Quote Post
phpion
post 15.06.2008, 10:29:31
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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ć...
Go to the top of the page
+Quote Post
Mlodycompany
post 15.06.2008, 10:46:18
Post #7





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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>
Go to the top of the page
+Quote Post
daniel1302
post 15.06.2008, 10:49:16
Post #8





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


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
Go to the top of the page
+Quote Post
Mlodycompany
post 15.06.2008, 11:06:14
Post #9





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


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/
Go to the top of the page
+Quote Post
marcio
post 15.06.2008, 11:08:59
Post #10





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


NIe wiem jak u ciebie wyglada funkcja zapytanie() ale:
  1. <?php
  2. $podkategoria = zapytanie('download_podkategorie');
  3. ?>

Co to jest za zaytanie sql?


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Mlodycompany
post 15.06.2008, 11:23:01
Post #11





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


mam funkcje
  1. <?php
  2. function zapytanie($tabela, $where = ''){
  3. $zapytanie = mysql_query("SELECT * FROM `".$tabela."` WHERE ".$where."");
  4. return($zapytanie);
  5. }
  6. ?>
Go to the top of the page
+Quote Post
phpion
post 15.06.2008, 11:47:50
Post #12





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.

Ten post edytował phpion 15.06.2008, 11:49:27
Go to the top of the page
+Quote Post
Mlodycompany
post 15.06.2008, 11:51:45
Post #13





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


ale zauwaz ze przekazuje i zapytanie wyglada
  1. SELECT * FROM `download_podkategorie` WHERE 1=1
Go to the top of the page
+Quote Post
phpion
post 15.06.2008, 11:54:13
Post #14





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No teraz już tak. Co nie zmienia faktu, że tablica JS jest tworzona niepoprawnie.
Go to the top of the page
+Quote Post
Mlodycompany
post 15.06.2008, 19:37:18
Post #15





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


no to skoro jest tworzona niepoprawnie to powiedz jak ma byc poprawnie tworzona!
Go to the top of the page
+Quote Post
phpion
post 16.06.2008, 06:06:02
Post #16





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 03:18