Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + sql] problem z checkboxem
Forum PHP.pl > Forum > Przedszkole
piotrek_ma_problem
Mam problem nastepujacej tresci :
pobieram z bazy danych rekordy i wyswietlam w tabeli

  1. <?php
  2. $query = "SELECT kierowca1, kierowca2, stawka, id FROM game Where wynik=0";
  3. $result = mysql_query($query) 
  4. or die(mysql_error());
  5. while ($row = mysql_fetch_array($result)) {
  6. {?>  
  7.  <table width="509" height="30" border="1" bgcolor="#FFFFFF">
  8. <tr align="left" bgcolor="#FFFFFF">
  9. <td width="29"><input type="checkbox" name="type" value="nr" checked></td>
  10. <td width="187"><span class="style22"><?php echo $row['kierowca1']?></span></td>
  11. <td width="179"><span class="style22"><?php echo $row['kierowca2']?></span></td>
  12. <td width="40"><span class="style22"><?php echo $row['stawka']?></span></td>
  13. <td width="40"><span class="style22">
  14. <input name="obst_wynik" type="text" size="5">
  15. </span></td>
  16. </tr>
  17. </table> 
  18. <?php
  19. }
  20. }
  21. ?>


Tabela ktora sie wyswietla to tabela z zakaldami
dzieki checkbox zawodnik moze zaznaczyc zaklad ktory chce zlozyc i wstawic wynik <input name="obst_wynik" type="text" size="5"> nie wiem jak przekazac zaznaczona tabele za pomoca checkbox
i wyslac do nowej tabeli łacznie z stawka, id z tabeli game i wynikiem wstawionym przez uzytkownika obst_wynik


z góry thx

to plik dodajacy tabele game z ktorej pobieram dane moze komus sie bedzie chcialo cos powalczyc
  1. <?php
  2.  
  3. $connect = mysql_connect("localhost", "root", "krasnal") or die(mysql_error());
  4. $db = mysql_select_db("gra") or die(mysql_error());
  5.  
  6. echo "Udało się połšczyć bazš danych!<br>";
  7.  
  8. $sql = "CREATE TABLE IF NOT EXISTS game(
  9. kierowca1 varchar(50) NOT NULL,
  10. kierowca2 varchar(50) NOT NULL,
  11. stawka varchar(50) NOT NULL,
  12. wynik varchar(255) NOT NULL,
  13. id int(10) NOT NULL auto_increment,
  14. PRIMARY KEY (id)
  15. )";
  16.  
  17. $result = mysql_query($sql) or die (mysql_error());
  18. echo "Tabela images zostala utworzona poprawnie.<br>";
  19.  
  20. $insert1 = "INSERT INTO game (kierowca1, kierowca2, stawka, wynik)
  21. VALUES ('holek', 'kuzi', '3', '')";
  22. $result = mysql_query($insert1) or die (mysql_error());
  23. echo "Udalo sie dodac zkaklad1<br>";
  24.  
  25. $insert2 = "INSERT INTO game (kierowca1, kierowca2, stawka, wynik)
  26. VALUES ('lubiak', 'kuzi', '3', '1')";
  27. $result = mysql_query($insert2) or die (mysql_error());
  28. echo "Udalo sie dodac zkaklad 2<br>";
  29.  
  30. $insert3 = "INSERT INTO game (kierowca1, kierowca2, stawka, wynik)
  31. VALUES ('holek', 'lubiak', '3', '')";
  32. $result = mysql_query($insert3) or die (mysql_error());
  33. echo "Udalo sie dodac zkaklad3<br>";
  34.  
  35. $insert4 = "INSERT INTO game (kierowca1, kierowca2, stawka, wynik)
  36. VALUES ('holek', 'ruta', '3', '1')";
  37. $result = mysql_query($insert4) or die (mysql_error());
  38. echo "Udalo sie dodac zkaklad4<br>";
  39.  
  40. $insert5 = "INSERT INTO game (kierowca1, kierowca2, stawka, wynik)
  41. VALUES ('kuzi', 'ruta', '3', '')";
  42. $result = mysql_query($insert5) or die (mysql_error());
  43. echo "Udalo sie dodac zkaklad5<br>";
  44. ?>


wstawilem od razu pare zakladów

prosze o pomoc sad.gif



podpatrzylem cos takigo na inntych postach
niech mi ktos powie czy chociaz w dobra strone ide
  1. <form action="?" method="post">
  2.  
  3.  
  4. <?php
  5. $query = "SELECT kierowca1, kierowca2, stawka, id FROM game Where wynik=0";
  6. $result = mysql_query($query) 
  7. or die(mysql_error());
  8. while ($row = mysql_fetch_array($result)) {
  9. {?>  
  10.  <table width="509" height="30" border="1" bgcolor="#FFFFFF">
  11. <tr align="left" bgcolor="#FFFFFF">
  12. <td width="29"><input type="checkbox" name="checkbox" value="1" /></td>
  13. <td width="161"><span class="style22"><?php echo $row['kierowca1']?></span></td>
  14. <td width="152"><span class="style22"><?php echo $row['kierowca2']?></span></td>
  15. <td width="56"><span class="style22"><?php echo $row['stawka']?></span></td>
  16. <td width="77"><span class="style22"><input name="obst_wynik" type="text" size="5"></span></td>
  17. </tr>
  18. </table> 
  19. <?php
  20. }
  21. }
  22. ?> 
  23.  
  24.  
  25.  
  26. <input type="submit" name="send" value="OK" />
  27. </form>
  28. <pre><?php
  29.  
  30. print_r( $_POST );
  31.  
  32. if (empty($_POST['checkbox'])) {
  33. echo 'niezaznaczony';
  34. } else
  35. if (isset($_POST['checkbox']) && $_POST['checkbox'] == 1) {
  36. echo ;
  37.  
  38. }
  39.  
  40. ?>
kossa
aby przekazywac wiecej checkboxow napisz tak w html

  1. <input type="checkbox" name="type[]" value="nr">


a w php w petli for mozesz odczytywac ktory checkbox jest zaznaczony (tak na szybko z reki - moga byc literowki):

  1. <?php
  2. for ($i=0; $i<=count($_POST["type"]; $i++)
  3. echo $_POST["type"][$i];
  4. ?>


dalej to juz modyfikuj do woli smile.gif

Lukasz

edit: zaznaczony chceckbox ma wartosc: on

np w petli for

  1. <?php
  2. if $_POST["type"][$i]=="on"
  3. //to zrob cos
  4. else
  5. //zrob cos innego
  6. ?>
piotrek_ma_problem
niewiem dlaczego wywala mi errory próbuje na rózne sposoby i nnic
  1. <form action="?" method="post">
  2.  
  3.  
  4. <?php
  5. $query = "SELECT kierowca1, kierowca2, stawka, id FROM game Where wynik=0";
  6. $result = mysql_query($query) 
  7. or die(mysql_error());
  8. while ($row = mysql_fetch_array($result)) {
  9. {?>  
  10.  <table width="509" height="30" border="1" bgcolor="#FFFFFF">
  11. <tr align="left" bgcolor="#FFFFFF">
  12. <td width="29"><input type="checkbox" name="type[i]" value="nr"></td>
  13. <td width="161"><span class="style22"><?php echo $row['kierowca1']?></span></td>
  14. <td width="152"><span class="style22"><?php echo $row['kierowca2']?></span></td>
  15. <td width="56"><span class="style22"><?php echo $row['stawka']?></span></td>
  16. <td width="77"><span class="style22"><input name="obst_wynik" type="text" size="5"></span></td>
  17. </tr>
  18. </table> 
  19. <?php
  20. }
  21. }
  22. ?> 
  23.  
  24.  
  25.  
  26. <input type="submit" name="send" value="OK" />
  27. </form>
  28. <pre><?php
  29.  
  30. print_r( $_POST );
  31.  
  32.  
  33. for ($i=0; $i<=count($_POST["type"]; $i++){
  34. echo $_POST["type"][$i];}
  35.  
  36. }
  37.  
  38. ?>

możesz mi podpowiedziec co robiee nie tak
i takie pytanko zmienna "i" czy moze muci byc gdzies jeszcze moze tu niwiem
<input type="checkbox" name="type[i]" value="nr">
blink.gif
mam chyba jakies zacmienie
thx za pomoc
Cienki1980
Nie
  1. <input type="checkbox" name="type[i]">

a
  1. <input type="checkbox" name="type[]">
piotrek_ma_problem
wiem ze tak ma byc
  1. <input type="checkbox" name="type[]">


tylko tak tez mi nie dziala probowalem na rozne sposoby
ale sproboje jeszcze na nowej stronie z pustym polem

chyba sie załamie cool.gif
maryaan
sugeruje na poczatek nauke czytania ze zrozumieniem bo kolega wyzej wyraznie napisal:
Cytat(kossa @ 8.02.2007, 12:15:54 ) *
(tak na szybko z reki - moga byc literowki):

a literowka jest bo brakuje nawiasu w tym wlasnie wyrazeniu z petla for


"probowalem na rozne sposoby" tzn na jakie? wklej kod + bledy ktore ew. pojawialy sie w przegladarce...
Cienki1980
A jeszce masz błąd w forze
  1. <?php
  2. for($i=0;$i<count($_POST['type']);$i++)
  3. {
  4.  //cos tam dalej
  5. }
  6. ?>

brakowało Ci nawiasu.

Ja bym całość zrobił trochę inaczej:
  1. <?php
  2. $query = "SELECT kierowca1, kierowca2, stawka, id FROM game Where wynik=0";
  3. $result = mysql_query($query)  or die(mysql_error());
  4. while ($row = mysql_fetch_array($result)) 
  5. {
  6. ?>
  7. <table width="509" height="30" border="1" bgcolor="#FFFFFF">
  8. <tr align="left" bgcolor="#FFFFFF">
  9. <td width="29"><input type="checkbox" name="type[<?php echo $row['id']?>]" value="nr"></td>
  10. <td width="161"><span class="style22"><?php echo $row['kierowca1']?></span></td>
  11. <td width="152"><span class="style22"><?php echo $row['kierowca2']?></span></td>
  12. <td width="56"><span class="style22"><?php echo $row['stawka']?></span></td>
  13. <td width="77"><span class="style22">
  14. <input name="obst_wynik[<?php echo $row['id']?>]" type="text" size="5"></span></td>
  15. </tr>
  16. </table>
  17. <?php
  18. }
  19. ?> 
  20.  
  21. .
  22. .
  23. .
  24. echo "<pre>";print_r($_POST);echo "</pre>";


Teraz będziesz miał taki układ, że numeracje checkboxów i pola z wynikami będą id danego rekordu pobranego z bazy i będziesz mógł zrobić tak:
  1. <?php
  2. $type=$_POST['type'];
  3. foreach($type as $k=>$v)
  4. {
  5.  $k // tu bedizesz mial ID rekordu
  6.  $v // tu bedizesz mial wartosc w przypadku type bedize to czy jest on ( czyli klikniety checkbox ) 
  7. //a w przypadku obstaw wynik będzie to wynik dla danego rekordu.
  8. }
  9. ?>


Pisane z palca bez sprawdzania mogą być błędy ... mam nadzieje, że pomysł podłapiesz.
piotrek_ma_problem
podłapałem na prawdę dzięki po stokroć guitar.gif santany


jednak nie podłapałem przedwczesnie sie cieszylem blink.gif

mam cos takiego i dalej lipka



  1. <form action="?" method="post">
  2.  
  3.  
  4. <?php
  5. $query = "SELECT kierowca1, kierowca2, stawka, id FROM game Where wynik=0";
  6. $result = mysql_query($query) 
  7. or die(mysql_error());
  8. while ($row = mysql_fetch_array($result)) {
  9. {?>  
  10.  <table width="509" height="30" border="1" bgcolor="#FFFFFF">
  11. <tr align="left" bgcolor="#FFFFFF">
  12. <td width="29"><input type="checkbox" name="type[]" value="<?php echo $row['id']?>"></td>
  13. <td width="161"><span class="style22"><?php echo $row['kierowca1']?></span></td>
  14. <td width="152"><span class="style22"><?php echo $row['kierowca2']?></span></td>
  15. <td width="56"><span class="style22"><?php echo $row['stawka']?></span></td>
  16. <td width="77"><span class="style22"><input name="obst_wynik[<?php echo $row['id']?>]" type="text" size="5"></span></td>
  17. </tr>
  18. </table> 
  19. <?php
  20. }
  21. }
  22. ?> 
  23. <input type="submit" name="send" value="OK" />
  24. </form>
  25. <pre>
  26. <?php ;
  27.  
  28. print_r( $_POST );
  29. for ($i=0; $i<= count($_POST["type"]); $i++)
  30. echo $_POST["type"][$i];
  31. ?>
  32.  
  33. <?php
  34. $type=$_POST['type'];
  35. $wynik=$_POST['wynik'];
  36.  
  37. foreach($type as $k=>$v)
  38. {
  39.  if($v=='on') // klikniety checkbox
  40.  {
  41.  $insert1 = "INSERT INTO zaklad (id, k2)
  42. VALUES ('".$v."', '".$wynik[$v]."')";
  43. $result = mysql_query($insert1) or die (mysql_error());
  44. echo "Udalo sie 1<br>";
  45.  }
  46. }
  47. ?>



niewiem co dalej
nie dodaje
Cienki1980
Wyświetl te zapytania, które tworzysz. Zobacz jak wyglądają i czy mają takie dane jakbyś chciał.
piotrek_ma_problem
problem jest tego typu ze tego wogóle nie bierze pod uwage nic sie nie dzieje nawet errora nie wywala
  1. <?php
  2. $type=$_POST['type'];
  3. $wynik=$_POST['obst_wynik'];
  4.  
  5. foreach($type as $k=>$v)
  6. {
  7.  if($v=='on') // klikniety checkbox
  8.  {
  9.  echo $_POST['type'];
  10.  
  11.  
  12.  $insert1 = "INSERT INTO zaklad (id, k2)
  13. VALUES ('".$v."', '".$wynik[$v]."')";
  14. $result = mysql_query($insert1) or die (mysql_error());
  15. echo "Udalo sie 1<br>";
  16.  }
  17. }
  18. ?>

dziwne
Cienki1980
a co zwraca Ci takie coś po wysłaniu formularza ?:
  1. <?php
  2. echo "<pre>"; print_r($_POST);echo "</pre>";
  3. ?>

Zobacz czy dane są wysyłane i czy są w takiej formie jak być chciał.
piotrek_ma_problem
Array
(
[obst_wynik] => Array
(
[7] =>
[9] =>
[11] =>
)

[type] => Array
(
[0] => 9
[1] => 11
)

[send] => OK
)

oki wyswieetla cos takiego ale do bazy a ni chce sie dostac nie stoi w miejscu
Cienki1980
Ecchhh dałem ciała:D

  1. <?php
  2. echo "<input type="checkbox" name="type[".$row['id']."]">";
  3. ?>


Pole type musi być tak samo numerowane jak pole obstaw_wynik. Wtedy powinna zmienić się też tablica $_POST.
piotrek_ma_problem
w sumie to to Warning: Invalid argument supplied for foreach()


  1. <?php
  2. foreach($type as $k=>$v)
  3. ?>


mam takie pytanko jak to dziala
  1. <?php
  2. ($type as $k=>$v)
  3. ?>
strife
Poprawna konstrukcja foreach" title="Zobacz w manualu php" target="_manual, jest opisana w manualu, poczytaj sobie smile.gif
piotrek_ma_problem
oki poczytałem i wynika z tego ze nie powinno wywalac errora


  1. <?php
  2. /* przykład 3 foreach: klucz i wartość */
  3.  
  4. $a = array (
  5.  "jeden" => 1,
  6.  "dwa" => 2,
  7.  "trzy" => 3,
  8.  "siedemnaście" => 17
  9. );
  10.  
  11. foreach($a as $k => $v) {
  12.  print "$a[$k] => $v.n";
  13. }
  14. ?>


sory ale jak do tej pory nie potrzebowałem pomocy
ale teraz potrzebuje i sie do was zwracam

czy w powyzszym przykladzie chodzi o to poprawcie jezeli sie myle

  1. <?php
  2. ($a as $k => $v)
  3. ?>
ze tablica a rozbijana jest na dwie kolumny k czyli "jeden" a "v" to 1
jezeli tak jest czy wprowadzeni tego do tabeli wygladalo by tak questionmark.gif jezeli dobrze mysle

  1. <?php
  2. $insert1 = "INSERT INTO TABELA (jeden, dwa)
  3. VALUES ('"[$k]."', '"[$v]."')";
  4. $result = mysql_query($insert1) or die (mysql_error());
  5. echo "Udalo sie <br>";
  6. ?>
strife
Dobrze, myślisz tak mi się przynajmniej wydaje z tego co napisałeś... z Jednym małym zastrzeżeniem, napisałeś, wartości w nawiasie kwadratowym nie wiem po co ...

  1. <?php
  2. foreach( $type as $k => $v )
  3. {
  4. $insert1 = "INSERT INTO TABELA (jeden, dwa)
  5. VALUES ('" . $k ."', '" . $v ."')"; // tutaj był błąd
  6. $result = mysql_query($insert1) or die (mysql_error());
  7. echo "Udalo sie <br>";
  8. }
  9. ?>


Pamiętaj, o sprawdzaniu czy nowo napisany skrypt będzie działać, czy też nie, metodą prób i błędów - inaczej nie nauczysz się programować. Trochę samodzielności.
piotrek_ma_problem
Dzieki dzieki

jest tylko maly szkopuł dane wprowadzane z tablicy za pomocą tego co napisałeś

  1. <?php
  2. VALUES ('" . $k ."', '" . $v ."')"; // tutaj był błąd
  3. ?>


wprowadzaja dane do tablicy oki działa jest postep guitar.gif ale
chodzi o to że dane te sa przypisywane przez id pokaże
  1. <input name="obst_wynik[<?php echo $row['id']?>]"

chodzi o to ze uzytkownik wprowadza wynik przypisuje mu wartość id zakładu po to żebym mógl później zweryfikować wyniki z realna tablica wyników
hmmm nie wiem czy dla wszystkich jest to zrozumiałe moglem cos namotac blink.gif
pisze to juz dlugo i termin mnie goni hmm
dlatego metoda prób i błędów troche odpada bo musze pisac cos innego ale mimo wszystko dzieki gdyby ktos wpadl na pomysl z góry dziękuje pozdrawiam cool.gif

Dlatego też pomyslałem ze zadziala cos takiego i zadziałało może sie komuś przyda to wklejam całego forma z zapytaniem i kodem wpychającym go do bazy thx za wszystko
aarambo.gif


  1. <form action="?" method="post">
  2. <table width="581" border="0" align="center" cellpadding="3" cellspacing="3" 
  3.  bgcolor="#353535">
  4.  
  5. <tr>
  6. <td width="51" bgcolor="#FFFFFF"><span class="style22">Rodzaj zakładu : </span></td>
  7. <td width="509" bgcolor="#FFFFFF"> <table width="510" height="30" border="0" bgcolor="#FFFFFF">
  8. <tr align="left" bgcolor="#FFFFFF">
  9. <td width="20"></td>
  10. <td width="174"><span class="style22">kierowca nr 1</span></td>
  11. <td width="152"><span class="style22">kierowca nr 2</span></td>
  12. <td width="59"><span class="style22">stwka za wygrana</span></td>
  13. <td width="83"><span class="style22">obstawiany wynik</span></td>
  14. </tr>
  15. </table> </td>
  16. </tr>
  17. <tr>
  18. <td bgcolor="#FFFFFF"><span class="style21">Nr zakładu </span></td>
  19. <td bgcolor="#FFFFFF">
  20. <p class="style21">
  21. <?php
  22. $query = "SELECT kierowca1, kierowca2, stawka, id FROM game Where wynik=0";
  23. $result = mysql_query($query) 
  24. or die(mysql_error());
  25. while ($row = mysql_fetch_array($result)) {
  26. {?>
  27. <table width="509" height="30" border="1" bgcolor="#FFFFFF">
  28. <tr align="left" bgcolor="#FFFFFF">
  29. <td width="29"><input type="checkbox" name="type[<?php echo $row['id']?>]" value="<?php echo $row['id']?>" /></td>
  30. <td width="161"><span class="style22"><?php echo $row['kierowca1']?></span></td>
  31. <td width="152"><span class="style22"><?php echo $row['kierowca2']?></span></td>
  32. <td width="56"><span class="style22"><?php echo $row['stawka']?></span></td>
  33. <td width="77"><span class="style22">
  34. <input name="obst_wynik[<?php echo $row['id']?>]" type="text" size="5" />
  35. </span></td>
  36. </tr>
  37. </table>
  38. <?php
  39. }
  40. }
  41. ?>
  42. <?php
  43. $type=$_POST['type'];
  44. $wynik=$_POST['obst_wynik'];
  45.  
  46.  
  47. foreach( $type as $k => $v )
  48. {
  49. $insert1 = "INSERT INTO ".$_SESSION['user_logged']." (nr_zakladu, obst_wynik)
  50. VALUES ('" . $v ."', '".$wynik[$k]."')"; // tutaj byl blad
  51. $result = mysql_query($insert1) or die (mysql_error());
  52. echo "Udalo sie <br>";
  53. }
  54. ?>
  55.  
  56. </td>
  57. </tr>
  58.  
  59.  
  60. <tr>
  61. <td colspan=2 align="center" bgcolor="#FFFFFF">
  62. <p class="style21">
  63. <input type="submit" name="Submit" value="zagraj">
  64. </p>
  65. </td>
  66. </tr>
  67. </table>
  68. </form>


oki działa dzieki dzieki

aarambo.gif

ale cos mi sie wydaj ze sie jeszcze spotkamy cool.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.