Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]checkbox
crew123
post 26.06.2012, 15:19:32
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 0
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował crew123 26.06.2012, 15:29:24
Go to the top of the page
+Quote Post
jaslanin
post 26.06.2012, 18:19:54
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


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ć

Ten post edytował jaslanin 26.06.2012, 18:20:24


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
crew123
post 26.06.2012, 21:32:26
Post #3





Grupa: Zarejestrowani
Postów: 89
Pomógł: 0
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


Mógłbyś podać jakiś przykład tego? smile.gif
---
Dobra poradziłem sobie, dzięki smile.gif

Ten post edytował crew123 27.06.2012, 09:34:31
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 12:17