Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak przepisać kolor do sesji?
Forum PHP.pl > Forum > PHP
Saki
Chce zrobić aby każdy user mógł sobie zmienić kolor tła i zrobiłem coś takiego:

  1. <?php session_start();
  2.  
  3. <form action="view?id='.$_GET['id'].'" method="POST">
  4. <input type="submit" name="blue" value="Niebieski" >
  5. </form>
  6.  
  7. <form action="view?id='.$_GET['id'].'" method="POST">
  8. <input type="submit" name="yellow" value="Żółty" >
  9. </form>
  10. ';
  11.  
  12.  
  13. if ($_POST['blue']){
  14. $_SESSION['0060C7'] = $background;
  15. }
  16.  
  17. if ($_POST['yellow']){
  18. $_SESSION['FDFFBD'] = $background;
  19. }
  20. else
  21. {
  22. $_SESSION['0060C7'] = $background; #a to jest standardowy kolor
  23. }
  24. echo $background; #Chce aby tutaj pokazywało się np. FDFFBD tylko się nic nie pokazuje. Bardzo proszę o pomoc.
  25.  


Tutaj chce dodać: http://wklej.pr0geek.com/
ciekawskiii
$background w tym przypadku jest pusta wiec nic dziwnego, ze nic nie wyswietla. Dziwnie to zrobiles, zrob jedna sesje np. $_SESSION['kolor'] i do tego przypisuj kody kolorow czyli cos takiego
  1. if($_POST['blue']){
  2. $_SESSION['kolor'] = "#0060C7";
  3. }elseif($_POST['yellow']){
  4. $_SESSION['kolor'] = "#FDFFBD";
  5. }

a session_destroy() wywal.
Saki
Cytat(ciekawskiii @ 14.03.2011, 06:56:49 ) *
$background w tym przypadku jest pusta wiec nic dziwnego, ze nic nie wyswietla. Dziwnie to zrobiles, zrob jedna sesje np. $_SESSION['kolor'] i do tego przypisuj kody kolorow czyli cos takiego
  1. if($_POST['blue']){
  2. $_SESSION['kolor'] = "#0060C7";
  3. }elseif($_POST['yellow']){
  4. $_SESSION['kolor'] = "#FDFFBD";
  5. }

a session_destroy() wywal.


Działa! smile.gif
Zrobiłem tak jak napisałeś:
  1. if($_POST['yellow']){
  2. $_SESSION['kolor'] = "#FDFFBD";
  3. }
  4. elseif($_POST['green']){
  5. $_SESSION['kolor'] = "#A6FFAA";
  6. }
  7. else{
  8. $_SESSION['kolor'] = "#0060C7";
  9. }


Tylko jest jeden problem, trzeba kliknąć 2 razy aby zmienił kolor.
ciekawskiii
Bo tak dziala sesja, proponuje zrobic tak, formularz zostawic tak jak jest ale przekierowac go na drugi plik w ktorym wykona sie zmiana i na koncu tego przekierowanie headerem spowrotem na strone formularza, rozumiesz?wink.gif
cudny
bo pewnie nie zadeklarowałeś na początku zmiennej background i w ogóle posty wysyłasz submitem gdzie IE6 nie przeczyta tego. Ja bym to zrobił tak:
  1. <?php session_start(); ?>
  2.  
  3. <form action="view?id='.$_GET['id'].'" method="POST">
  4. <input type="hidden" name="colour" value="blue" >
  5. <input type="submit" name="niebieski" value="Niebieski" >
  6. </form>
  7.  
  8. <form action="view?id='.$_GET['id'].'" method="POST">
  9. <input type="hidden" name="colour" value="yellow" >
  10. <input type="submit" name="yellow" value="Żółty" >
  11. </form>
  12. <?php
  13. $kolory = array(
  14. 'blue' => '#0060C7',
  15. 'yellow' => '#FDFFBD',
  16. 'standard' => '#0060C7'
  17. );
  18.  
  19. if(isset($kolory[$_POST['colour']])) {
  20. $background = $_SESSION['colour'] = $kolory[$_POST['colour'];
  21. } elseif(isset($_SESSION['colour'])) {
  22. $background = $_SESSION['colour'];
  23. } else {
  24. $background = $kolory['standard'];
  25. }
  26. echo $background;


Mieszaj kod HTML - przy większych aplikacjach bardzo to pomaga czyli: <?php session_start(); ?> tutaj jakis html <?php if(isset($cc)) { ?> costam <?php } else { ?> cośtam <?php } ?>
Nie używaj tak submitów, najlepiej hiddenami to załatwiać i nie twórz na stronie tylu formularzy - jak byś miał 100 kolorów to 100 formularzy robisz - strasznie dużo strona będzie zajmować... (jak nie masz jak tego zrobić w html to wartości przypisuj do obiektów javascript i podstawiaj do jednego hiddena - javascript jest super tongue.gif )
mam nadzieję że pomogło smile.gif
Acha, mogą być literówki bo kodu nie sprawdzałem tongue.gif
Saki
Cytat(ciekawskiii @ 14.03.2011, 07:30:20 ) *
Bo tak dziala sesja, proponuje zrobic tak, formularz zostawic tak jak jest ale przekierowac go na drugi plik w ktorym wykona sie zmiana i na koncu tego przekierowanie headerem spowrotem na strone formularza, rozumiesz?wink.gif


Działa! Jesteś wielki smile.gif
Zrobiłem tak:

  1. <?php
  2.  
  3.  
  4. <form action="'.$_SERVER['REQUEST_URI'].'" method="POST" class="select_color"><input type="submit" name="blue" value="Niebieski" ></form>
  5. <form action="'.$_SERVER['REQUEST_URI'].'" method="POST" class="select_color"><input type="submit" name="yellow" value="Żółty" ></form>
  6. <form action="'.$_SERVER['REQUEST_URI'].'" method="POST" class="select_color"><input type="submit" name="green" value="Zielony" ></form>
  7. ';
  8.  
  9. if($_POST['yellow']){
  10. $_SESSION['kolor'] = "#FDFFBD";
  11. }
  12. elseif($_POST['green']){
  13. $_SESSION['kolor'] = "#A6FFAA";
  14. }
  15. else{
  16. $_SESSION['kolor'] = "#0060C7";
  17. }
  18.  
  19. header('Location: '.$_SERVER['REQUEST_URI'].'');
  20.  
  21. ?>


PS. Wiesz może jak zrobić aby np. div nie schodził w dół? Wiedziałem kiedyś jak to zrobić w CSS ale zapomniałem, bo teraz potrzebuje bo mam 3 formularze w każdej nowej linii a chce aby byli koło siebie:)
cudny
Po co przeładowywać tą stronę ?
Dawaj to co napisałem i będzie hulać jak złoto biggrin.gif
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.