Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]checkbox
Forum PHP.pl > Forum > Przedszkole
crew123
Cześć.
Mam mały problem, otóż chciałbym zrobić checkboxy przy dodawaniu ogłoszenia tak jak tutaj:

Lecz nie wiem zupełnie jak się do tego zabrać, począwszy od dodawania checkboxów przez panel administratora i po zaznaczeniu przypisania je danemu ogłoszeniu.
Moglibyście nakierować, oświecić jak to powinno wyglądać (najlepiej argumentując przykładami)?

funkcja dodawania
  1. function ogloszenie_dodaj()
  2. {
  3. $user_data = get_user_data();
  4.  
  5. if(isset($_POST['ok']))
  6. {
  7.  
  8. $tytul = mysql_real_escape_string($_POST['tytul']);
  9. $tresc = mysql_real_escape_string($_POST['tresc']);
  10.  
  11. $kategoria = $_POST['kategoria'];
  12. $wojewodztwo = $_POST['wojewodztwo'];
  13. $region = $_POST['region'];
  14. $kod = $_POST['kod_pocztowy'];
  15. $miasto = $_POST['miasto'];
  16. $adres = $_POST['adres'];
  17. $tel = $_POST['telefon'];
  18. $www = $_POST['www'];
  19. $email = $_POST['email'];
  20.  
  21. function ValidEmail($email) {
  22. if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)) {
  23. return false;
  24. }
  25. return true;
  26. }
  27.  
  28. if(empty($tytul) || empty($tresc) || empty($kategoria) || empty($wojewodztwo) || empty($wojewodztwo) || empty($kod) || empty($miasto) || empty($adres) || empty($email)) {
  29.  
  30. echo 'Wypełnij wszystkie pola oznaczone *';
  31.  
  32. }
  33. elseif (!preg_match('/^[0-9]{2}-?[0-9]{3}$/Du', $kod)) {
  34.  
  35. echo 'Błędny kod pocztowy';
  36.  
  37. }
  38. elseif (!ValidEmail($email)) {
  39.  
  40. echo "Błędny adres email";
  41.  
  42. }
  43. else {
  44.  
  45. $iduser = $user_data['user_id'];
  46.  
  47. $query = "INSERT INTO `ogloszenia` (`tytul`, `tresc`, `id_cat`, `id_woj`, `id_region`, `id_user`, `kod_pocztowy`, `miasto`, `adres`, `tel`, `www`, `email`) VALUES ('$tytul', '$tresc', '$kategoria', '$wojewodztwo', '$region', '$iduser', '$kod', '$miasto', '$adres', '$tel', '$www', '$email')";
  48.  
  49. if(mysql_query($query)) echo 'Pomyslnie dodano artykul! <a href="admin.php">wróć</a>';
  50. return 1;
  51. }
  52. }
  53.  
  54. echo '<b>Dodaj ofertę</b>';
  55. echo '<hr>';
  56. echo '<form action="dodaj.html" method="POST">
  57. Tytuł*: <br />
  58. <input type="text" name="tytul" style="width:400px;" value="'.$tytul.'"><br />
  59. Kategoria*: <br />
  60. <select name="kategoria">';
  61. $result = mysql_query("SELECT * FROM ogloszenia_categories");
  62. echo '<option value="0"></option>';
  63. while($row = mysql_fetch_array($result))
  64. {
  65. echo '<option value="'.$row['id'].'">'.stripslashes($row['tytul']).'</option>';
  66. }
  67. echo '</select><br />
  68.  
  69. Województwo*: <br />
  70. <select name="wojewodztwo">';
  71. $result = mysql_query("SELECT * FROM wojewodztwa");
  72. echo '<option value="0"></option>';
  73. while($row = mysql_fetch_array($result))
  74. {
  75. echo '<option value="'.$row['id'].'">'.stripslashes($row['nazwa']).'</option>';
  76. }
  77. echo '</select><br />
  78.  
  79. Region: <br />
  80. <select name="region">';
  81. $result = mysql_query("SELECT * FROM region");
  82. echo '<option value="0"></option>';
  83. while($row = mysql_fetch_array($result))
  84. {
  85. echo '<option value="'.$row['id'].'">'.stripslashes($row['nazwa']).'</option>';
  86. }
  87. echo '</select><br />
  88.  
  89. Kod pocztowy*: <br />
  90. <input type="text" name="kod_pocztowy" value="'.$kod.'" style="width:400px;"><br />
  91.  
  92. Miasto*: <br />
  93. <input type="text" name="miasto" value="'.$miasto.'" style="width:400px;"><br />
  94.  
  95. Ulica, nr*: <br />
  96. <input type="text" name="adres" value="'.$adres.'" style="width:400px;"><br />
  97.  
  98. <b>Dodatkowe informacje</b>
  99. <hr>
  100.  
  101. Telefon: <br />
  102. <input type="text" name="telefon" value="'.$tel.'" style="width:400px;"><br />
  103.  
  104. Strona domowa: <br />
  105. <input type="text" name="www" value="'.$www.'" style="width:400px;"><br />
  106.  
  107. Email kontaktowy*: <br />
  108. <input type="text" name="email" value="'.$email.'" style="width:400px;"><br />
  109.  
  110. <b>Opis obiektu</b>
  111. <hr>
  112.  
  113. Tresć*: <br />
  114. <textarea name="tresc" value="'.$tresc.'" style="width:400px;height:200px;"></textarea><br />
  115.  
  116. <b>Dodatkowo</b>
  117. <hr>
  118.  
  119. <input type="submit" name="ok" value="Dodaj">
  120. </form>';
  121. }
jaslanin
jeżeli chcesz je dodawać przez panel administratora najłatwiej jest stworzyć sobie tabelę kategorie, w niej id, nazwa i stamtąd pobierać ich listę i na jej podstawie robić listę checkboxów w pętli

najłatwiej by checkbox miał name tj. "kategoria[51]" gdzie 51 to id kategorii z bazy danych

wtedy w tablicy POST lub GET będziesz miał coś w stylu

Kod
array(
....,
'kategoria' => array(
            51 => 1,
            ...
)
....,

)



dzięki temu łatwo będziesz mógł sobie zrobić foreach na $_POST['kategoria'] i zapisać zaznaczone kategorii do tabeli wiele kategorii dla jednego ogłoszenia tj. taka tabela będzie mniej więcej wyglądała tak:

Kod
oglosznie id | kategoria_id
       1                  51
       1                  77
       2                  51
       3                   3
       3                   4
       3                   5


listę ogłoszeń z takiej kategorii najłatwiej uzyskasz przez INNER JOIN z WHERE o id kategorii

tak to mniej więcej powinno wyglądać
crew123
Mógłbyś podać jakiś przykład tego? smile.gif
---
Dobra poradziłem sobie, dzięki smile.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.