Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] "przepełnienie" skryptu
Forum PHP.pl > Forum > Przedszkole
v1t4n
Witam,

mam 3 tabele (subjects, teachers, ranges) w bazie danych. W `subjects` znajduja sie nazwy przedmiotow i ich unikalne id. W `teachers` znajduja sie imiona, nazwiska i unikalne id nauczycieli. W `ranges` mam 4 pola (id, teacher, subject, class) w ktorej przypisane jest jaki nauczyciel uczy jaka klase z jakiego przedmiotu. Oczywiscie tabela ranges funkcjonuje na id z baz subjects, teachers i classes.

Moj skrypt wyciaga wszystkie wpisy z tych trzech tabel gdzie id klasy (pole `class` w `ranges`) jest ustalone, np 25. Chce miec wszystkich nauczycieli i przedmioty w polu select i ustawic te pola tak jak jest to w tabeli `ranges`.

Problem pojawia sie gdy wrzucam skrypt na serwer (cba.pl). Wyglada to tak jakby skrypt przerwal wykonywanie i wsadzil cala strone 2 raz od miejsa przerwania. Na localu wszystko smiga. Wyglada to tak jakby skrypt mial okreslony czas na wykonywanie i w pewnym momencie przerywal.

PHP:
  1. <?php
  2. $strtr1=array('%slctd%' => ' selected="selected"');
  3.    $strtr2=array('%slctd%' => '');
  4.    $options='<option value="">Wybierz ucznia do usunięcia</option>
  5.    ';
  6.    $counter=0;
  7.    $n=1;
  8.    $sql3='SELECT * FROM `'.PREFIX.'subjects` ORDER BY `id` ASC';
  9.    $sql4=mysql_query($sql3);
  10.    while($row=mysql_fetch_array($sql4)) {
  11.        $subjects[$n].='<option value="'.$row[0].'"%slctd%>'.$row[1].'</option>
  12.        ';
  13.        $n++;
  14.    }
  15.    $n=1;
  16.    $sql3='SELECT * FROM `'.PREFIX.'teachers` ORDER BY `id` ASC';
  17.    $sql4=mysql_query($sql3);
  18.    while($row=mysql_fetch_array($sql4)) {
  19.        $teachers[$n].='<option value="'.$row[0].'"%slctd%>'.$row[1].' '.$row[2].'</option>
  20.        ';
  21.        $n++;
  22.    }
  23.    $trs='';
  24.    $sql3='SELECT * FROM `'.PREFIX.'ranges` WHERE `class` = '.$class_id.' ORDER BY `subject` ASC';
  25.    $sql4=mysql_query($sql3);
  26.    while($row=mysql_fetch_array($sql4)) {
  27.        $trs.='<tr><td class="nb" align="center">'.$row[0].'</td><td class="nb"><select name="subject['.$row[0].']" class="subjects">';
  28.        for($a=1;$a<=count($subjects);$a++) {
  29.            if ($row[2]==$a) {
  30.                $trs.=strtr($subjects[$a], $strtr1);
  31.            } else {
  32.                $trs.=strtr($subjects[$a], $strtr2);
  33.            }
  34.        }
  35.        $trs.='</select></td><td class="nb"><select name="teacher['.$row[0].']" class="teachers">';
  36.        for($a=1;$a<=count($teachers);$a++) {
  37.            if ($row[1]==$a) {
  38.                $trs.=strtr($teachers[$a], $strtr1);
  39.            } else {
  40.                $trs.=strtr($teachers[$a], $strtr2);
  41.            }
  42.        }
  43.        $trs.='</select></td></tr>';
  44.    }
  45. ?>


HTML:
  1. <form action="index.php?action=show&item=class&class_id=<?php print $class_id; ?>&page=edit_ranges" method="post">
  2. <center>
  3. <table align="center" class="nb" cellspacing="0">
  4. <tr>
  5. <th class="nb">
  6. ID
  7. </th>
  8. <th class="nb">
  9. Przedmiot
  10. </th>
  11. <th class="nb">
  12. Nauczyciel
  13. </th>
  14. </tr>
  15. <?php print $trs; ?>
  16. <br/>
  17. <br/>
  18. <input type="submit" value="Edytuj przydziały" class="submit" align="center"/>
  19. <input name="id" id="id" value="" class="small" style="width:100px;" type="hidden">
  20. </form>


Wiem ze znacznik <?php ... ?> wsationy w forma wyglada smiesznie - przynajmniej to dziala i nie musze prinowac calego znacznika tylko co mnie interesuje.

Screen z locala


Screen z cba.pl



Wycinek kodu jak to wyglada na cba.pl:
  1. <option value="75">WOJCIESZYN ANNA
  2. <option value="76">WOJTYS ANETA
  3. <option value="77">WÓJCIK BARBARA
  4. <option value="78">ZAPÓR WALDEMAR
  5.  
  6. <option value="79" selected="selected">ZARYCHTA ANDRZEJ
  7. <<script type="text/javascript"></script><div style="text-align:center;font-size:11px" class="cbalink"><a href="http://www.cba.pl/" title="darmowy hosting">Darmowy Hosting</a> CBA.PL<br /><br /></div>
  8. <!--]>--><noscript onclick="''"></noscript><script type="text/javascript" src="http://a.cba.pl/reklama2.js"></script>
  9. <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
  10. <script type="text/javascript">
  11. _uacct = "UA-2289508-3";
  12. urchinTracker();
  13.  
  14.  
  15. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  16. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  17. <html xmlns="http://www.w3.org/1999/xhtml">
  18. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  19. <meta http-equiv="Content-language" content="pl" />


Wniosek - przerywa strone w pewnym momencie i laduje ją cala od tego miejsca
Pilsener
Z tego co się orientuję, to nawsadzałeś na stronie od groma selectów - po co Ci aż tyle? Podejrzewam, że strasznie muli, zanim to wszystko wygeneruje. Musisz to zrobić inaczej - rozbij formularz na etapy, nie wrzucaj wszystkiego na jedną stronę.
v1t4n
Aj tam znowu od groma... tylko 44 aaevil.gif

Caly skrypt w html po wygenerowaniu: 161KB

Chodzi o to zeby mozna bylo edytowac wszystkie przydzialy NA RAZ i zeby sie wybieralo z pola select/radio. Musi byc wybierane bo jak ktos mi wpisze nieziemskie id ktorego nie ma w bazie to wszystko sie pojdzie jedwabic.

Przyszedl mi do glowy jeszcze pomysl z JS zeby byly 2 selecty po bokach i wrzucalo sie w zablokowane inputy id metoda grab'n'drop tylko ze to moze byc zbyt trudne dla 60letniego nauczyciela.
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.