Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z formularzem
Forum PHP.pl > Forum > PHP
kukov
mam problem z tym iz w formularzu mam 3 pola wyboru do zaznaczenia [moga byc wszystkie zaznaczone] i wlasnie problem tkwi w zapisie tego do jednej komorki w DB jesli zaznaczy sie 1 opcje zeby zapisalo 1 , jesli 2 to dwie , jesli wszystkie to wszystkie zapisuje a jesli zadnej to wklepuje 0 . mi jakies dziwne wartosci wstawial zmasakrowalem ten kod tak ze teraz sie niemoge sam rozczytac oco chodzilo wiec zakladam ze jest zle dlatego go nie zalaczam;]
mario
  1. <input type=checkbox name=pole[1]>
  2. <input type=checkbox name=pole[2]>
  3. <input type=checkbox name=pole[3]>
  4. </form>

w pętli sprawdzasz czy dane pole zostało zaznaczone, jeżeli tak sumujesz je tak jak pisałeś.....

  1. <?php
  2. $suma=0;
  3.  
  4. For ($i=1;
  5.  $i<=3;
  6.  $i=$i+1)
  7.  {
  8. If (isset($_GET[pole][$i]))
  9.  $suma=$suma+1
  10.  }
  11.  
  12. ?>
a na koniec w $suma masz wynik czyli jak jedno pole to $suma=1, jak 2 pola $suma=2 a jak 3 pola zaznaczone $suma=3. A jak nic to $suma=0
kukov
jesli zaznacze 3 to suma bedzie rowna 3 to jak potem wyciagne w wyswietlaniu te 3 nazwy z 1 komorki ?
mario
no to zmienia kolej rzeczy........

  1. <input type=checkbox name=pole[1] value='opcja 1'>
  2. <input type=checkbox name=pole[2] value='opcja 2'>
  3. <input type=checkbox name=pole[3] value='opcja 3'>
  4. </form>

w pętli sprawdzasz czy dane pole zostało zaznaczone, jeżeli tak sumujesz je tak jak pisałeś.....

  1. <?php
  2. $suma=0;
  3.  
  4. For ($i=1;
  5.  $i<=3;
  6.  $i=$i+1)
  7.  {
  8. If (isset($_GET[pole][$i]))
  9.  {
  10. $suma=$suma+1
  11. $opcja[$i]=$_GET[pole][$i];
  12.  }
  13.  }
  14.  
  15. ?>
a na koniec w $suma masz wynik czyli jak jedno pole to $suma=1, jak 2 pola $suma=2 a jak 3 pola zaznaczone $suma=3. A jak nic to $suma=0. Do tego masz teraz w zmiennej $opcja[$i] przechowywane wartości przekazane z formularza. Nie wiem jak chcesz to dalej przetwarzać, dlatego możesz sobie dowolnie to dostosować, algorytm działania już masz.
kukov
  1. <form action="zapis.php" method="POST">
  2.  
  3. Login <input type=text name="login"><br>
  4. Haslo <input type=password name="pass"><br>
  5. E-mail <input type=text name="mail"><br>
  6.  
  7. User <BR>
  8.  
  9. <input type=checkbox name=pole[1] value='war'>opcja 1<BR>
  10. <input type=checkbox name=pole[2] value='moh'>opcja 2 <BR>
  11. <input type=checkbox name=pole[3] value='newsman'>opcja 3 <BR>
  12.  
  13. <input type=submit value="Wyslij">
  14.  
  15. </form>
  16.  
  17. </html>
to formularz rejestracyjny

  1. <?
  2. $suma=0;
  3.  
  4. For ($i=1;
  5.        $i<=3;
  6.        $i=$i+1)
  7. {
  8.   If (isset($_GET[pole][$i]))
  9.    {
  10.     $suma=$suma+1;
  11.     $opcja[$i]=$_GET[pole][$i];
  12.    }
  13.  
  14. }
  15.  
  16. mysql_connect(&#092;"localhost\",\"login\",\"haslo\");
  17. mysql_select_db(&#092;"nazwa_db\");
  18.  
  19.  
  20. $sql=&#092;"insert into users (id ,login,pass,mail,user) VALUES ('','$login','$pass','$mail','$opcja[$i]');\"; 
  21.  
  22.  
  23. $mysql=mysql_query($sql); 
  24.  
  25. ?>


i w pliku wyswietlajacym nie pokazuje zadnych wartosci ;(
Rastman
po pierwsze to w formularzu masz
Kod
method="POST"

a korzystasz z tablicy superglobalnej $_GET, zamiast $_POST
poza tym jeśli chcesz żeby do jednej komórki zapisało wartości wszystkich 3 zmiennych to w pętli zamiast pisać
Kod
$opcja[$i]=$_GET[pole][$i];

lepiej zapisz:
Kod
$opcja=$opcja.$_POST[pole][$i]

pozdrawiam
kukov
w formularzu zmienilem na GET

  1. <?
  2. $suma=0;
  3.  
  4. For ($i=1;
  5.  $i<=3;
  6.  $i=$i+1)
  7. {
  8. If (isset($_POST[pole][$i]))
  9.  {
  10. $suma=$suma+1;
  11.  $opcja=$opcja.$_POST[pole][$i];
  12.  }
  13.  
  14. }
  15.  
  16.  
  17. mysql_connect(&#092;"localhost\",\"blade\",\"masterblaster\");
  18. mysql_select_db(&#092;"blade_site\");
  19.  
  20.  
  21. $sql=&#092;"insert into users (id ,login,pass,mail,user) VALUES ('','$login','$pass','$mail','$opcja[$i]');\"; 
  22.  
  23.  
  24. $mysql=mysql_query($sql); 
  25. ?>

a w wyswietlaniu w tabelce <p align="center"><?php echo $opcja[$i]; ?></td>
i nic nie pokazuje ;(
Rastman
jeszcze raz...
jesli w formularzu masz GET to używaj $_GET, a nie $_POST.
$opcja nie jest tablicą, tylko ciągiem, więc w insercie i wszędzie indziej wpisz $opcja, a nie $opcja[$i], i sprawdź co zawiera zmienna $opcja.
jeśli chcesz miec spacje pomiędzy opcjami to wpisz w pętli:
Kod
$opcja=$opcja." ".$_POST[pole][$i];

jesli wybierzesz wszystkie opcje w formularzu $opcja powinna miec wartość:
"war moh newsman" i tak powinna być wpisana do bazy danych w polu user
pozdrawiam
kukov
wielkie dzieki winksmiley.jpg
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.