Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] problem z formularzem
Forum PHP.pl > Forum > Przedszkole
sytluk
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
nexis
  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. ?>
sytluk
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ł?
BaN
Może zastosuj do kodu, który podałeś:
Kod
implode(',', $system)
sytluk
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.
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.