Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP][POMOCY] Program formatujący tekst
Forum PHP.pl > Forum > Przedszkole
Yogin
Moje zadanie polega na tym, że muszę napisać program formatujący blok tekstu na podstawie dokonanych wyborów przez użytkownika. Ma on określić kolor, rodzaj i rozmiar czcionki. Wynik ma zostać zostać wyświetlony na nowej stronie. Jest to zadanie książkowe i po wielu próbach nie mogę dojść co i jak. Jestem raczkujący w tej dziedzinie dopiero się uczę, więc proszę o wyrozumiałość i pomoc. Poniżej podam kod na podstawie którego próbuje to zrobić.

Użytkownik może dokonać wyboru już przy logowaniu (to jest plik login.php)
  1. [php]<?php
  2.  
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  8. <title>Proszę się zalogować</title>
  9. </head>
  10.  
  11. <body>
  12. <?php include "header.php"; ?>
  13. <form method="post" action="movie1.php">
  14. <p>Wpisz nazwę użytkownika:
  15. <input type="text" name="user">
  16. </p>
  17. <p>Wpisz hasło:
  18. <input type="password" name="pass">
  19. </p>
  20. <p>
  21. <input type="submit" name="submit" value="Wyślij">
  22. </p>
  23. </form>
  24.  
  25. <p>Wybierz rodzaj czcionki:
  26. <select name="font">
  27. <option value="Verdana">Verdana</option>
  28. <option value="Arial">Arial</option>
  29. <option value="Time New Roman">Time New Roman</option>
  30. </select>
  31.  
  32. <p>Wybierz rozmiar czcionki:
  33. <select name="size">
  34. <option value="1">1</option>
  35. <option value="2">2</option>
  36. <option value="3">3</option>
  37. <option value="4">4</option>
  38. <option value="5">5</option>
  39. </select>
  40.  
  41. <p>Wybierz color czcionki:
  42. <select name="color">
  43. <option value="black">Czarny</option>
  44. <option value="red">Czerwony</option>
  45. <option value="green">Zielony</option>
  46. <option value="purple">Różowy</option>
  47. </select>
  48. </p>
  49. <?php include "stopeczka1.php"; ?>
  50. </body>
  51. </html>


To jest strona na której ma być wyświetlony wynik(zawsze wyświetla mi błąd linijek 17. , 18. i 19.). To jest plik movie1.php
  1. <?php
  2. $_SESSION['username'] = $_POST['user'];
  3. $_SESSION['userpass'] = $_POST['pass'];
  4. $_SESSION['authuser'] = 0;
  5.  
  6. // Sprawdź informacje o nazwie użytkownika i haśle.
  7. if (($_SESSION['username'] == 'Jan') and
  8. ($_SESSION['userpass'] == '12345')) {
  9. $_SESSION['authuser'] = 1;
  10. } else {
  11. echo "Przepraszamy, ale nie masz uprawnień do zobaczenia tej strony!";
  12. exit();
  13. }
  14. ?>
  15. <?php
  16. $_SESSION['font'] = $_POST['font'];
  17. $_SESSION['size'] = $_POST['size'];
  18. $_SESSION['color'] = $_POST['color'];
  19. ?>
  20.  
  21. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  22. <html>
  23. <head>
  24. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  25. <title>Znajdź mój ulubiony film!</title>
  26. </head>
  27.  
  28. <body>
  29. <?php include "arkusz.php"; ?>
  30. <?php include "header.php"; ?>
  31. <?php
  32. $myfavmovie = urlencode("Żywot Briana");
  33. echo "<a href='moviesite.php?favmovie=$myfavmovie'>";
  34. echo "Kliknij tutaj, aby zobaczyć informacje o moim ulubionym filmie!";
  35. echo "</a>";
  36. echo "<br>";
  37.  
  38. echo "Lub wybierz, ile filmów chcesz zobaczyć:";
  39. echo "</a>";
  40. echo "<br>";
  41. ?>
  42. <form method="post" action="moviesite.php">
  43. <p>Wpisz liczbę filmów (maksymalnie 10);
  44. <input type="text" name="num">
  45. <br>
  46. Zaznacz opcję, jeśli filmy mają zostać posortowane alfabetycznie:
  47. <input type="checkbox" name="sorted">
  48. </p>
  49. <input type="submit" name="Submit" value="Submit">
  50. </form>
  51. <?php include "stopeczka1.php"; ?>
  52. </body>
  53. </html>



Plik arkusz.php
  1. <?php
  2. echo "<font face='";
  3. echo $_SESSION['font'];
  4. echo "' size='";
  5. echo $_SESSION['size'];
  6. echo "' color='";
  7. echo $_SESSION['color'];
  8. echo "'>";
  9. ?>


Dziękuje za pomoc i przepraszam za dość dużo kodu który może być nie dostatecznie czytelny.

CuteOne
</form> powinien znaleźć się na końcu formularza tzn. za
  1. <select name="color">
  2. <option value="black">Czarny</option>
  3. <option value="red">Czerwony</option>
  4. <option value="green">Zielony</option>
  5. <option value="purple">Różowy</option>
  6. </select>
Yogin
Dobra działa, dzięki wielkie. Głupi błąd.

Ale mam jeszcze jedno pytanie, a jeśli bym chciał zapisać wybór w cookie do następnej wizyty użytkownika, żeby już nie musiał na nowo zmieniać to jak to zrobić.
Ruio
Po wykonaniu formularza utwórz ciasteczko (setcookie)

...natomiast na stronie z wynikiem pobieraj wartość ciasteczka jeżeli istnieje:
  1. if(isset($_COOKIE['aaa'])){
  2. //....
  3. }
Yogin
Chciałem zrobić coś takiego, do pliku movie1.php dodam kod:

  1. // Gdy nie zaznaczę zachowania ustawień to wyskakuje mi błąd linijki z if($_POST['pref']=='y')
  2. <?php
  3. if($_POST['pref']=='y'){
  4. setcookie('font', $_POST['font'], time()+60);
  5. setcookie('size', $_POST['size'], time()+60);
  6. setcookie('color', $_POST['color'], time()+60);
  7. }
  8. ?>


Natomiast w w pliku login.php dodaje:

  1. <p>Czy chcesz zachować wybrane ustawienia do następnej wizyty?
  2. <input type="checkbox" name="pref" value="y">
  3. </p>
  4. </form>


oraz

  1. // Po wpisaniu tego wyskakuje mi błąd 3 linijek
  2. <?php
  3. echo $_COOKIE['font'];
  4. echo $_COOKIE['size'];
  5. echo $_COOKIE['color'];
  6. ?>
[/PHP]

Mam wrażenie, że w ogóle ustawienia nie są zapisywane w COOKIE
Vhaeraun
Gdy nie zaznaczysz checkbox'a, to nie będziesz miał w ogóle takiej zmiennej (czyli $_POST['pref'] nie będzie istnieć).
Używaj takiej konstrukcji:
  1. if(isset($_POST['pref']) && $_POST['pref'] == 'y')
Yogin
A to jest dobrze? I w którym miejscu muszę umieścić to, aby użytkownikowi wyśletlały się poprzednie wybory takie jakie on sobie wybrał. Mi Cały czas wyskakują błędy po dodaniu tego kodu.

  1. <?php
  2. echo $_COOKIE['font'];
  3. echo $_COOKIE['size'];
  4. echo $_COOKIE['color'];
  5. ?>
Vhaeraun
No mi taki fragment kodu działa, więc u Ciebie też powinno być ok, o ile nie masz jakichś błędów przy obsłudze formularza.
  1. <?php
  2. setcookie('font', 'Verdana', time()+60);
  3. setcookie('size', '12', time()+60);
  4. setcookie('color', 'red', time()+60);
  5.  
  6. echo $_COOKIE['font'];
  7. echo $_COOKIE['size'];
  8. echo $_COOKIE['color'];
  9. ?>


BTW. jeszcze jedna ważna informacja z manuala:
Cookies will not become visible until the next loading of a page that the cookie should be visible for. To test if a cookie was successfully set, check for the cookie on a next loading page before the cookie expires.
Czyli musisz umieścić to echo na innej stronie lub poinformować użytkownika, że powinien przeładować stronę.
Yogin
Dobra, zadziałało mi ;-) Dzięki wszystkim za pomoc.

Moim zdaniem temat do zamknięcia.
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.