Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Powrót do... szablonów
Forum PHP.pl > Forum > Przedszkole
Kshyhoo
Witam, czas poszydzić za mnie smile.gif.
Piszę pracę szkolną i zagłębiam się w temacie szablonów w php (brrr).
Chciałbym, by użytkownik miał wybór szablonu strony a jego wybór był zapisany w bazie. Nie wiem tylko jak pobrać taką strukturę:
Kod
themes [DIR]
          |
          +- szablon1 [DIR]
          |             |
          |             +- themes.php
          |
          +- szablon2 [DIR]
          |             |
          |             +- themes.php
          |
          +- szablon3 [DIR]
          |             |
          |             +- themes.php
          |
          +- szablonX [DIR]
                        |
                        +- themes.php

W plikach theme.php zawarta będzie oprawa graficzna (już mam) oparta na CSS.
Problem mam z pobraniem struktury i dołączeniem do głównego skryptu. Kombinowałem pobrać tak:
  1. <?php
  2. $handle = opendir(THEMES);
  3. while ($folder = readdir($handle)) if (!in_array($folder, array(&#092;".\", \"..\", \"/\", \"index.php\"))) $theme_list[] = $folder;
  4. closedir($handle);
  5. sort($theme_list);
  6. array_unshift($theme_list, &#092;"Default\");
  7. ?>

ale nie wiem, co z tym zrobić dalej a chciałbym móc wyświetlić wybór, ustawić temat i zapisać wybór w bazie. Skrypt wykonuje się bez błędów, ale nie wiem, jak wyświetlić wyniki i dokonać wyboru...
Leezard
rozumiem ze chcesz pobrac do tablicy nazwy katalogow w ktorych sa pliki theme.php tzn. szablon1, szablon2 itd... jesli tak to w warunku w petli while musisz dac sprawdzenie funkcja is_dir(), poniewaz chcesz pobrac tyko nazwy katalogow.

majac tablice dorzucasz sobie na poczatek twoj "Default" tak jak zrobiles, a potem wyswietlasz tablice np w elemencie SELECT html'a np tak:
  1. <?php
  2.  
  3. echo '<select name=\"nazwa_selecta\">';
  4. foreach($tablica as $element)
  5. {
  6.  echo '<option value='.$element.'>'.$element.'</option>';
  7. }
  8. echo '</select>';
  9.  
  10. ?>

a potem submitujesz formularz z tym selectem do jakiegos skryptu ktory ci odczyta odpowiednia zmienna $_POST i zapisze w bazie danych
Guest
To wiem, kombinowałem na wszytskie sposoby i nie mogę załapać.
Próbowałem tak:
  1. <?php
  2. <select name='user_theme' class='textbox' style='width:100px;'>&#092;n\";
  3. for ($count=0;$theme_list[$count]!=&#092;"\";$count++) {
  4. echo &#092;"<option\".($theme_list[$count] == $userdata['user_theme'] ? \" selected\" : \"\").\">$theme_list[$count]</option>n\";
  5. }
  6. echo &#092;"</select>
  7. ?>

ale wywala błędy.
Kshyhoo
Wymyśliłem coś takiego:
  1. <?php
  2. $handle = opendir(themes);
  3. while ($folder = readdir($handle)) if (!in_array($folder, array(&#092;".\", \"..\", \"/\", \"index.php\"))) $theme_list[] = $folder;
  4. closedir($handle);
  5. sort($theme_list);
  6. array_unshift($theme_list, &#092;"Default\");
  7.  
  8. echo '<center><select name=\"theme_list\">';
  9. foreach($theme_list as $folder)
  10. {
  11. echo '<option value='.$theme_list.'>'.$folder.'</option>';
  12. }
  13. echo '</select><BR>';
  14. echo &#092;"<BR><input TYPE='submit' value='Zapisz'></form>\";
  15. ?>
Coyote
jak piszesz ze wywala bledy to pokazuj jakie ....
Kshyhoo
No dobra, po ciężkiej bitwie, jakoś poszło. Efekty mizerne smile.gif
Jednak jest problem. Nie wszystko co includuję, zachowuje się tak jak bym chciał.
Szczegóły tutaj.
Chodzi o to, że po wejściu na link Logowanie wcina prawy panel i stopkę. Część skryptu admin.php, gdzie jest includowana klasa:
  1. <?php
  2. $sl_perm = 5;
  3. include &#092;"admin/sitelock.class.php\";
  4. $DB = new GateDB;
  5. ?>

I sama klasa (wklejam cały, bo ma kilka odwołań):
  1. <?php
  2.  
  3. $path_to_sl = &#092;"\";
  4.  
  5. include $path_to_sl . &#092;"sitelock.conf.php\";
  6.  
  7. class SiteLock {
  8.  
  9. function SiteLock() {
  10. global $user, $password, $if_logged_in;
  11. global $cookie_name, $sl_cookie, $loggedout, $path_to_sl, $sl, $html;
  12. $GF = new SiteLockForm;
  13. $GF->logout();
  14. if ((isset($sl_cookie)) and ($loggedout != &#092;"yes\")) {
  15. include $path_to_sl . &#092;"dbclass.\" . $sl['db_type'] . \".php\";
  16. $DB = new GateDB;
  17. if ($DB->db_initialize()) {
  18. if ($DB->find_user_by_cookie($sl_cookie)) {
  19. $if_logged_in = &#092;"yes\";
  20. } else {
  21. $GF->print_form_in();
  22. }
  23. } else {
  24. echo('Nie mogłem połączyć się z serweram baz danych. Administrator tej strony powinien
  25. ją poprawnie skonfigurować.');
  26. }
  27. } else {
  28. if ($GF->check_form_in()) {
  29. include $path_to_sl . &#092;"dbclass.\" . $sl['db_type'] . \".php\";
  30. $DB = new GateDB;
  31. if ($DB->db_initialize()) {
  32. if ($DB->find_user($user, $password)) {
  33. $this->generate_cookie();
  34. setCookie($sl['cookie_name'], $sl_cookie);
  35. if ($DB->update_user_entry($user, $password)) {
  36. $if_logged_in = &#092;"yes\";
  37. } else {
  38. echo('Nie mogłem ukatualnić informacji w bazie danych. Prawdopodobnie baza danych nie 
  39. a odpowiednich tabel i pól wymienionych w pliku konfiguracyjnym.');
  40. }
  41. } else {
  42. $GF->print_form_in('Dane niepoprawne. Proszę wpisać swój identyfikator i hasło.');
  43. }
  44. } else {
  45. echo('Nie mogłem połączyć się z serweram baz danych. Administrator tej strony powinien
  46. ją poprawnie skonfigurować.');
  47. }
  48. } else {
  49.  $GF->print_form_in('Proszę wpisać swój identyfikator i hasło.');
  50. }
  51. }
  52. }
  53.  
  54. function generate_cookie() {
  55. global $sl_cookie;
  56. srand((double)microtime()*100000);
  57. $sl_cookie = md5(uniqid(rand()));
  58. return $sl_cookie;
  59. }
  60. }
  61.  
  62. class SiteLockForm {
  63.  
  64. function print_form_in($login_message) {
  65. global $sl, $html;
  66. echo '<title>Strona logowania</title>';
  67. echo $html['br'] . $html['br'] . $html['br']; 
  68. echo &#092;"n\" . '<form method=\"post\">' . \"n\";
  69. echo '<table border=\"0\" width=\"\" align=\"center\">' . &#092;"n\";
  70. echo '<tr><td colspan=\"2\">';
  71. echo $html['b'] . $login_message . $html['/b'] . $html['br'] . $html['br'];
  72. echo '</td></tr>' . &#092;"n\";
  73. echo '<tr><td>Identyfikator: </td><td>';
  74. echo '<input type=\"text\" name=\"' . $sl['form_user'] . '\" maxlength=\"15\" size=\"12\">';
  75. echo '</td></tr>' . &#092;"n\";
  76. echo '<tr><td>Hasło: </td><td>';
  77. echo '<input type=\"password\" name=\"' . $sl['form_password'] . '\" maxlength=\"15\" size=\"12\">';
  78. echo '</td></tr>' . &#092;"n\";
  79. echo '<tr><td colspan=\"2\" align=\"center\">';
  80. echo $html['br']. '<input type=\"submit\" value=\"Zaloguj\">';
  81. echo '</td></tr>' . &#092;"n\";
  82. echo '</table>' . &#092;"n\";
  83. echo '</form>' . &#092;"n\";
  84. }
  85.  
  86. function print_form_out() {
  87. global $sl, $user, $html;
  88. echo('Identyfikator: ');
  89. echo $user . $html['brn'] . &#092;"n\";
  90. echo '<form method=\"post\">';
  91. echo '<input type=\"submit\" name=\"' . $sl['form_logout'] .'\" value=\"' . $sl['form_logout'] . '\">';
  92. echo &#092;"</form>nn\";
  93. }
  94.  
  95. function check_form_in() {
  96. global $user, $password, $html;
  97. if ((!empty($user)) && (!empty($password))) {
  98. return true; 
  99. } else {
  100. return false;
  101. }
  102. }
  103. function logout() {
  104. global $logout, $sl, $loggedout;
  105. if (!empty($logout)) {
  106. setCookie($sl['cookie_name'], &#092;"\");
  107. $loggedout = &#092;"yes\";
  108. }
  109. }
  110.  
  111. function admin_print_user($id, $user, $password, $perm) {
  112.  
  113. echo '<form name=\"' . $user . '\" method=\"post\">';
  114. echo '<input type=\"hidden\" name=\"form_id\" value=\"' . $id . '\">';
  115. echo '<tr>';
  116. echo '<td><input type=\"text\" name=\"form_user\" value=\"';
  117. echo $user . '\" size=\"10\" maxlength=\"15\"></td>';
  118. echo '<td><input type=\"text\" name=\"form_password\" value=\"';
  119. if (empty($password)) {
  120. echo &#092;"-\";
  121. }
  122. echo '\" size=\"10\" maxlength=\"15\"></td>';
  123. echo '<td><input type=\"text\" name=\"form_perm\" value=\"';
  124. echo  $perm . '\" size=\"10\" maxlength=\"15\"></td>';
  125. echo '<td><a href=\"javascript:confirm_change('' . $user . '')\">';
  126. echo  ('Zmień'). '</a></td>';
  127. echo '<td><a href=\"javascript:confirm_delete('' . $user . '')\">';
  128. echo  ('Skasuj') . '</a></td>';
  129. echo '</tr>';
  130. echo &#092;"</form>n\";
  131. }
  132.  
  133. function admin_print_user_new() {
  134. global $sl, $html;
  135. echo '<form method=\"post\" action=' . $sl['add_page'] . '>'; 
  136. echo &#092;"<tr>\";
  137. echo '<td><input type=\"text\" name=\"form_user\" size=\"10\" maxlength=\"15\"></td>';
  138. echo '<td><input type=\"text\" name=\"form_password\" size=\"10\" maxlength=\"15\"></td>';
  139. echo '<td><input type=\"text\" name=\"form_perm\" size=\"10\" maxlength=\"15\"></td>';
  140. echo '<td><input type=\"submit\" name=\"delete\" value=\"' .'Dodaj'. '\"></td>';
  141. echo '<td>&nbsp;</td>';
  142. echo &#092;"</tr>\";
  143. echo &#092;"</form>n\";
  144. }
  145. }
  146.  
  147. /* Execution of the script starts here: */
  148.  
  149. $SL = new SiteLock;
  150.  
  151. if ($if_logged_in != &#092;"yes\") {
  152. die;
  153. }
  154.  
  155. ?>

P.S. Nie patrzcie na layout, to ma służyć nauce php, na sztukę czas przyjdzie później.
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.