Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak wyświetlić zaznaczone checkbox ?
Forum PHP.pl > Forum > Przedszkole
tomekm1
Mam problem z wyświetleniem zaznaczonych checkbox w formularzu

Dane do bazy zapisuję poprzez:

  1. $id_mat = (isset($_POST['id_mat'])) ? 1 : 0;
  2. $query = "INSERT INTO `rejestr` (`id_pac`, `id_mat`,`id_rej`, `data`, `id_kon`, `lekarz`) VALUES ('$id_pac', '$id_mat','$id_rej', '$data', '$id_kon', '$lekarz')";


Nie wiem jak teraz to wyświetlić. Chce żeby działało tak , że jak zaznaczę np. badanie 1 i badanie 2 to ma mi wyświetlić te dwa badania. Jak jeden to jeden itd. Jak to zrobić ?
pedro84
Sprawdzasz za pomocą if, żadna filozofia smile.gif
tomekm1
W formularzu mam tak:

  1. $result2 = mysql_query("SELECT * FROM badania");
  2. while ($row=mysql_fetch_assoc($result2))
  3. {
  4. echo '<input type="checkbox" name=id_mat[] value='.$row["nazwa"].'</input>'.$row["nazwa"].'<br>';
  5. }


A tutaj kod gdzie chce wyświetlić zaznaczone checkboxy i nie wiem jak to zrobić.

  1. $SQL ="SELECT pacjent.id_pac,pacjent.imie,pacjent.nazwisko,rejestr.id_rej,rejestr.data,rejestr
    .id_kon, kontrahent.nazwa_kodu
  2. FROM pacjent, rejestr,kontrahent
  3. WHERE pacjent.id_pac=rejestr.id_pac AND kontrahent.id_kon=rejestr.id_kon
  4. ORDER BY data DESC, id_rej DESC
  5. LIMIT ".mysql_escape_string((int)$_GET['nr']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  6.  
  7. $RES = mysql_query($SQL); // wykonujemy zapytanie
  8. $ilosc=mysql_num_rows($RES);
  9. echo '<br />Ilość znalezionych pozycji na stronie: <strong>'.$ilosc.'</strong><br /><br />';
  10. echo '<table class="tab"><tr><th>Nr pacjenta</th><th>Imię</th><th>Nazwisko</th><th>Numer rejestracji</th><th>Data rejestracji</th><th>Jedn. zlec</th><th COLSPAN="2">Akcja</th></tr>';
  11.  
  12. while($AFR = mysql_fetch_assoc($RES))
  13.  
  14. {
  15. $row_class=table_row_format($i);
  16. echo '<tr class='.$row_class.'>';
  17. echo '<td>'.$AFR['id_pac'].'</td>';
  18. echo '<td>'.$AFR['imie'].'</td>';
  19. echo '<td>'.$AFR['nazwisko'].'</a></td>';
  20. echo '<td>'.$AFR['id_rej'].'</td>';
  21. echo '<td>'.$AFR['data'].'</td>';
  22. echo '<td>'.$AFR['nazwa_kodu'].'</td>';
  23. echo '<td class="edit"><a href="edit_bad.php?edit=' . $AFR['id_mat'] . '">Edytuj</a></td>';
  24. echo '<td class="delete"><a href="badania.php?usun=' . $AFR['id_mat'] . '">Usuń</a></td>';
  25. echo '</tr>';
  26. }
  27.  
  28. echo '</table>';

Do tego chciałbym dodać właśnie wyświetlanie zaznaczonych checkboxów.
jajcarzd1
Ja robię zazwyczaj tak że np. wszystkie ID pakuje do tablicy a potem w trakcie generowania widoku jeśli generuję w pętli danego checkboxa to sprawdzam czy jego ID jest w tej tablicy (za pomocą in_array()), jeśli tak to daję checked jeśli go tam nie ma to checkbox pozostaje niezaznaczony.

Pozdro.
tomekm1
Nic mi nie wychodzi ani implode ani foreach. Czy ktoś mógłby mi pomóc ?
jajcarzd1
A robiłeś tak jak ja radziłem ?
pedro84
Cytat(tomekm1 @ 11.06.2010, 00:42:55 ) *
Nic mi nie wychodzi ani implode ani foreach. Czy ktoś mógłby mi pomóc ?

Pokaż jak próbujesz.
thek
Na początek radzę Ci wyświetlić sobie tablicę $_POST gdy klikasz na checkboxy podczas submit, a zobaczysz jaką formę przyjmują. Potem już tylko
  1. <input type="checkbox" name="jakis[]"<?php echo ( oznaczenie_zaznaczonego_checkboxa ? ' checked="checked"' : '') ?> />

Oczywiście warunek zaznaczenia checkboxa zalezy od tego kiedy i jak to masz zapisane. Czy to bezpośrednio $_POST, pobrane z bazy czy w jakiejkolwiek innej formie. Bo jakoś masz mieć wyłapane co było zaznaczone. Może być in_array, może być jakieś inne sprawdzenie.
tomekm1
Thek

Jak zastosuję:

  1. <?php
  2. $id_mat = (isset($_POST['id_mat'])) ? 1 : 0;
  3. $query = "INSERT INTO `rejestr` (`id_pac`, `id_mat`,`id_rej`, `data`, `id_kon`, `lekarz`) VALUES ('$id_pac', '$id_mat','$id_rej', '$data', '$id_kon', '$lekarz')";


To przy wyświetleniu piszę mi Array

Ja próbuje jeszcze tak:

  1. $sql = " '';
  2. foreach($_POST['id_mat'] as $key=>$value) {
  3. $sql .= " OR id_mat='".$value."' ";
  4. }
  5.  
  6. if(!isset($sql)) $sql = "";
  7.  
  8. $SQL ="SELECT pacjent.id_pac,pacjent.imie,pacjent.nazwisko,rejestr.id_rej,rejestr.data,rejestr.id_kon, kontrahent.nazwa_kodu, rejestr.id_mat, badania.nazwa
  9. FROM pacjent, rejestr,kontrahent, badania
  10. WHERE pacjent.id_pac=rejestr.id_pac AND kontrahent.id_kon=rejestr.id_kon ".$sql."
  11. ORDER BY data DESC, id_rej DESC
  12.  
  13. LIMIT ".mysql_escape_string((int)$_GET['nr']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  14.  
  15. $RES = mysql_query($SQL); // wykonujemy zapytanie
  16. $ilosc=mysql_num_rows($RES);
  17. echo '<br />Ilość znalezionych pozycji na stronie: <strong>'.$ilosc.'</strong><br /><br />';
  18. echo '<table class="tab"><tr><th>Nr pacjenta</th><th>Imię</th><th>Nazwisko</th><th>Numer rejestracji</th><th>Badania</th><th>Jedn. zlec</th><th COLSPAN="2">Akcja</th></tr>';
  19.  
  20. while($AFR = mysql_fetch_assoc($RES))
  21.  
  22. {
  23.  
  24. $row_class=table_row_format($i);
  25. echo '<tr class='.$row_class.'>';
  26. echo '<td>'.$AFR['id_pac'].'</td>';
  27. echo '<td>'.$AFR['imie'].'</td>';
  28. echo '<td>'.$AFR['nazwisko'].'</a></td>';
  29. echo '<td>'.$AFR['id_rej'].'</td>';
  30. echo '<td>'.$AFR['id_mat'].'</td>';
  31. echo '<td>'.$AFR['nazwa_kodu'].'</td>';
  32. echo '<td class="edit"><a href="edit_bad.php?edit=' . $AFR['id_mat'] . '">Edytuj</a></td>';
  33. echo '<td class="delete"><a href="badania.php?usun=' . $AFR['id_mat'] . '">Usuń</a></td>';
  34. echo '</tr>';
  35. }
  36.  
  37. echo '</table>';
  38. ?>


Jak zaznaczę jedno czy więcej badan to i tak wszystkie mi wyskakują czyli tyle ile mam dodanych badan w tabeli badania czyli dodałem morfologie i mocz. Poniżej tabela jaka mi wyskakuje po takim zapytaniu. Jak zaznacze morfologie to i tak wyskakuje mi i morfologia jak i mocz a powinno tylko morfologia.


  1. Nr pacjenta Imię Nazwisko Numer rejestracji Badania Jedn. zlec Akcja
  2. 1 Jan Kowalski 1 Morfologia OZLa Edytuj Usuń
  3. 1 Jan Kowalski 1 Mocz OZLa Edytuj Usuń



FOREACH mi w ogóle nie działa bo jak go usunę to tez taki sam wynik mi wychodzi jak w tabeli powyżej. Jak to naprawić ?
bastard13
dorzuć print_r($_POST) po przesłaniu posta i napisz co wyrzuca.
tomekm1
Przy użyciu tego kodu:
  1. foreach($_POST['id_mat'] as $key => $value) {
  2. print("\$_POST[$key] => $value");
  3. }


Wyświetla mi: Array ( [id_mat] => )

Przy:
  1. print_r($_POST);

Wyświetla: Array ( )
potreb
Jak przekazujesz dane z formularza przez post czy get?? Pokaż formularz.
zend
  1. $sql = 'WHERE `id` IN (' join(',' , $_POST['id']) ')'; //pobieranie?
  2.  
  3. if(!count($_POST))
  4. {
  5. //wyswietlamy formularz
  6. exit();
  7. }
  8. //operacje na $_POST


Żebyś miał jakiekolwiek dane w $_POST musisz najpierw wysłać formularz, potem próbuj print_r($_POST);
tomekm1
To jest plik rejestr.php gdzie go wypełniam i zapisuję do bazy danych
  1. if(isset($_POST['ok']))
  2. {
  3.  
  4. $id_pac = intval($_POST['id_pac']);
  5. $imie = mysql_real_escape_string($_POST['imie']);
  6. $nazwisko = mysql_real_escape_string($_POST['nazwisko']);
  7. $pesel = mysql_real_escape_string($_POST['pesel']);
  8. $data_urodz = mysql_real_escape_string($_POST['data_urodz']);
  9. $miejscowosc = mysql_real_escape_string($_POST['miejscowosc']);
  10. $kod = mysql_real_escape_string($_POST['kod']);
  11. $ulica = mysql_real_escape_string($_POST['ulica']);
  12.  
  13. $id_rej = mysql_real_escape_string($_POST['id_rej']);
  14. $nazwa_kodu = mysql_real_escape_string($_POST['nazwa_kodu']);
  15. $id_kon = mysql_real_escape_string($_POST['id_kon']);
  16. $lekarz = mysql_real_escape_string($_POST['lekarz']);
  17. $id_mat = mysql_real_escape_string($_POST['id_mat']);
  18. $nazwa = mysql_real_escape_string($_POST['nazwa']);
  19. $data = $_POST['data'];
  20.  
  21. if ($id_pac && $id_rej && $data && $id_kon && $lekarz) {
  22.  
  23. $id_mat = (isset($_POST['id_mat'])) ? 1 : 0;
  24.  
  25. $query = "INSERT INTO `rejestr` (`id_pac`, `id_mat`,`id_rej`, `data`, `id_kon`, `lekarz`) VALUES ('$id_pac', '$id_mat','$id_rej', '$data', '$id_kon', '$lekarz')";
  26.  
  27. if(mysql_query($query)) echo 'Pomyślnie wyedytowano pacjenta!<br />';
  28. }
  29.  
  30. else {
  31. echo 'Nie podałeś wszystkich danych!';
  32. }
  33. }
  34.  
  35. $result = mysql_query("SELECT * FROM `pacjent` WHERE `id_pac`='".$_GET['rej']."'");
  36.  
  37. $row = mysql_fetch_array($result);
  38.  
  39. echo '<h2>Numer pacjenta: <font color="red">', stripslashes($row['id_pac']),
  40. '</font></h2>';
  41. echo '<strong>PESEL:</strong> ', stripslashes($row['pesel']), '<br />';
  42. echo '<strong>Data urodz.:</strong> ', stripslashes($row['data_urodz']),
  43. '<br />';
  44. echo '<h3>',stripslashes($row['imie']), '&nbsp;&nbsp;'
  45. ,stripslashes($row['nazwisko']), '</h3>';
  46. echo '<h3>',stripslashes($row['ulica']),'</h3>';
  47. echo '<h3>',stripslashes($row['kod']), '&nbsp;&nbsp;'
  48. ,stripslashes($row['miejscowosc']), '</h3>';
  49.  
  50. echo '<form action="rejestracja.php" method="POST">
  51. <table style="width:600px;" class="tab1"><tr>
  52. <td>Numer zlecenia:<br /><td>
  53. <input type="text" name="id_rej" style="width:50px;"></td>
  54. <td>Numer pacjenta:<br /><td>
  55. <input type="text" name="id_pac" style="width:50px;"><br /></td></tr>
  56. <tr><td>Data rejestracji:<td> <input type="text" name="data" style="width:150px;" ></td>
  57. <td>Lekarz zlecający: <td><input type="text" name="lekarz" style="width:150px;"></td></tr>
  58. <tr><td>Jedn zlecająca:<br /><td>
  59. <select name="id_kon">';
  60. require('config.php');
  61. $result = mysql_query("SELECT * FROM kontrahent");
  62. while($row = mysql_fetch_array($result))
  63. {
  64. echo '<option value="'.$row['id_kon'].'">'.stripslashes($row['nazwa_kodu']).'</option>';
  65. }
  66.  
  67. echo '</select><br />
  68. <tr><td>';
  69. $result2 = mysql_query("SELECT * FROM badania");
  70. while ($row=mysql_fetch_assoc($result2))
  71. {
  72. echo '<input type="checkbox" name=id_mat[] value='.$row["nazwa"].'</input>'.$row["nazwa"].'<br>';
  73. }
  74. echo ' </td>
  75. <td><br /><input type="submit" name="ok" value="Dodaj"></td></tr></table>
  76. </form>';
  77. ?>
zend
A co jeśli nie będzie danych w bazie? Nie sprawdzasz tego. Poza tym mógłbyś typować na int żeby było bezpieczniej
  1. $result = mysql_query("SELECT * FROM `pacjent` WHERE `id_pac`='".$_GET['rej']."'");
  2. $row = mysql_fetch_array($result);
  3. echo '<h2>Numer pacjenta: <font color="red">', stripslashes($row['id_pac']),


<input type="checkbox" name="xxx[]" />
<input type="checkbox" name="xxx2" />
Wiesz czym się różnią te dwie linijki - nie to przetestuj.
  1. $id_mat = join(',' , $_POST['id_mat']);
  2. //tu insert
  3.  
  4. //albo
  5. foreach($_POST['id_mat'] as $value)
  6. {
  7. //tu inserty i echa, a będziesz miał każdą wartość osobno
  8. }
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.