Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] problem z formularzem, a dokładniej z polem checkbox
sytluk
post 2.12.2007, 20:41:33
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Witam, posiadam taki formularz z polami cheatbox:

  1. <form action="wyslij.php" method="POST">
  2. <input type="checkbox" name="vista" value="Vista">Windows Vista<br>
  3. <input type="checkbox" name="xp" value="XP">Windows XP<br>
  4. <input type="checkbox" name="98" value="98">Windows 98/95<br>
  5. <input type="checkbox" name="linux" value="Linux">Linux/Unix<br>
  6. <input type="checkbox" name="mac_os" value="Mac OS">Mac OS
  7. </form>


Problem polega na tym, że chcę "odczytać" to co zostało zaznaczone i wstawić do bazy danych. Tworzę więc instrukcje if dla każdego pola oddzielnie i pętlę:
  1. <?php
  2. $system = array();
  3. if (isset($_REQUEST['vista'])) $system[] = "Windows Vista";
  4. if (isset($_REQUEST['xp'])) $system[] = "Windows XP";
  5. if (isset($_REQUEST['98'])) $system[] = "Windows 98";
  6. if (isset($_REQUEST['linux'])) $system[] = "Linux";
  7. if (isset($_REQUEST['mac_os'])) $system[] = "Mac OS";
  8.  
  9. foreach($system as $value) 
  10. {
  11. $wartosc = array($value);
  12. }
  13. echo($wartosc);
  14. ?>


Problem polega na tym, że nie wiem jak poza pętlą wyświetlić wszystkie zaznaczone wartości pól. Jest to niezbędne do dodania tych wartości do bazy danych w postaci zmiennej. Polecenie dodające wartości do bazy danych nie może być umieszczone w pętli, bo zostaną one dodane tyle razy ile pól zostało zaznaczonych.
Nie wiem czy te tablice zostały dobrze zrobione.
Może jest na to jakiś inny sposób? Ważne zeby działało smile.gif
Proszę o pomoc

Ten post edytował sytluk 3.12.2007, 11:28:22
Go to the top of the page
+Quote Post
nexis
post 2.12.2007, 20:55:13
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


  1. <?php
  2. if (isset($_POST['os'])) {
  3. $system = array(
  4. 'vista' => 'nie',
  5. 'xp' => 'nie',
  6. '98' => 'nie',
  7. 'linux' => 'nie',
  8. 'mac'  => 'nie'
  9. );
  10. foreach ($_POST['os'] as $key => $value)
  11. {
  12. $system[$value] = 'tak';
  13. }
  14. echo '<pre>';
  15. print_r($system);
  16. echo '</pre>';
  17. } else {
  18. ?>
  19. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  20. <input type="checkbox" name="os[]" value="vista" />Windows Vista<br />
  21. <input type="checkbox" name="os[]" value="xp">Windows XP<br />
  22. <input type="checkbox" name="os[]" value="98">Windows 98/95<br />
  23. <input type="checkbox" name="os[]" value="linux">Linux/Unix<br />
  24. <input type="checkbox" name="os[]" value="mac">Mac OS<br />
  25. <input type="submit" />
  26. </form>
  27. <?php
  28. }
  29. ?>


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
sytluk
post 3.12.2007, 15:03:22
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Nie dokładnie o to chodziło. Chciałem, żeby zaznaczone pola były dopisane do bazy danych np, Windows Vista, Linux/Unix, a nie
Windows Vista: tak
Windows XP: nie
Windows 98/95: nie
Linux/Unix: tak
Mac OS: nie
i to za pomocą funkcji print_r(), która na stronie nie wygląda zbyt estetycznie.
Moze jakiś inny pomysł?
Go to the top of the page
+Quote Post
BaN
post 3.12.2007, 17:06:02
Post #4





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


Może zastosuj do kodu, który podałeś:
Kod
implode(',', $system)
Go to the top of the page
+Quote Post
sytluk
post 3.12.2007, 22:05:45
Post #5





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

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


Cytat(BaN @ 3.12.2007, 17:06:02 ) *
Może zastosuj do kodu, który podałeś:
Kod
implode(',', $system)


Ten pomysł jest dosyć ciekawy i kiedy wywołuje funkcje:
  1. <?php
  2. $system = array();
  3. if(isset($_REQUEST['vista'])) $system[] = 'Windows Vista';
  4. if(isset($_REQUEST['xp'])) $system[] = 'Windows XP';
  5. if(isset($_REQUEST['98'])) $system[] = 'Windows 98/95';
  6. if(isset($_REQUEST['linux'])) $system[] = 'Linux/Unix';
  7. if(isset($_REQUEST['mac'])) $system[] = 'Mac OS X';
  8.  
  9. $systemy = implode(',', $system);
  10. echo($systemy);
  11. ?>


To normalnie wyświetlają się wszystkie zaznaczone parametry. Jednak, gdy dodaje $systemy do bazy danych:

  1. $query="INSERT INTO gry(system) VALUES('$systemy')";
  2. $result= mysql_query($query) OR die('Dodanie gry nie udało się');


to później kiedy chce odczytać tą wartość z bazy to nie działa. Nic się nie wyświetla.
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: 1.07.2025 - 23:50