Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zapis właściwości checkbox do bazy danych
Kerth
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Witam,
mam pewien problem. Z bazy danych pobieram zdjęcia, które tworzą pewnego rodzaju galerię(a raczej nazwy zdjęć), które później są odpowiednio wyświetlane. Obok każdego zdjęcia mam pole typu checkbox. Do każdego artykułu można będzie dodać dajmy na to 12 zdjęć. I tu pojawia się pytanie. W jaki sposób najlepiej zapisać wartość tych zdjęć do bazy danych? Z ustawieniem parametry value nie ma problemu, bo pobieram to z bazy danych i potem tylko wstawiam. Zastanawia mnie kwestia, czy do tabeli z artykułami(`article`) wstawić kolumny typu `image1`, image2`, image3` itd, czy może skorzystać z pól typu ENUM/SET?

Tak to wygląda, zdjęcia po kopiowane więc nazwy są takie same - bez znaczenia:
{{Image:edit.png}}

I teraz jak zaznaczę 2 zdjęcia to do bazy zapiszą się 2, jak 5 to 5, etc. Ma ktoś jakiś pomysł jak to rozwiązać? Czekam na kreatywne pomysły.
Pozdrawiam (IMG:style_emoticons/default/smile.gif)

Zdecydowałem się na tą drugą opcję. W ten sposób tworzę checkbox dla każdego zdjęcia:
  1. <input type="checkbox" value="'.$getImage['name'].'" name="'.$getImage['name'].'" style="vertical-align: middle;"/>

Przypisuje mu dla atrybutu value indywidualną wartość, która ma zostać zapisana w bazie danych. Problem jest z atrybutem name. Jak go dynamicznie utworzyć?

---Edit:
W ten sposób przypisuję zmienną $_POST do metod setImage1 oraz setImage2

  1. if($rowAllImage){
  2. foreach($rowAllImage as $getImage){
  3. $news->setImage1($_POST[''.$getImage['name'].'']);
  4. $news->setImage2($_POST[''.$getImage['name'].'']);
  5. }
  6. }



Co skutkuje wyświetleniem notatek typu: Undefined variables...

Pytane brzmi, jak zapisać do bazy TYLKO TE POLA co są zaznaczone?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Fred1485
post
Post #2





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Nie wiem po co ci do każdego image osobny setter (IMG:style_emoticons/default/wink.gif)
Przykładowa implementacja. Oczywiście ty masz swoją klasę Images, ja użyłem tylko dla testów.

  1. class Images
  2. {
  3. private $image1;
  4. private $image2;
  5. private $image3;
  6. private $image4;
  7. private $image5;
  8. private $image6;
  9. private $image7;
  10. private $image8;
  11. private $image9;
  12. private $image10;
  13. private $image11;
  14. private $image12;
  15.  
  16.  
  17. public function setImage1($image1)
  18. {
  19. $this->image1 = $image1;
  20. }
  21.  
  22. public function setImage2($image2)
  23. {
  24. $this->image2 = $image2;
  25. }
  26.  
  27. public function setImage3($image3)
  28. {
  29. $this->image3 = $image3;
  30. }
  31.  
  32. public function setImage4($image4)
  33. {
  34. $this->image4 = $image4;
  35. }
  36.  
  37. public function setImage5($image5)
  38. {
  39. $this->image5 = $image5;
  40. }
  41.  
  42. public function setImage6($image6)
  43. {
  44. $this->image6 = $image6;
  45. }
  46.  
  47. public function setImage7($image7)
  48. {
  49. $this->image7 = $image7;
  50. }
  51.  
  52. public function setImage8($image8)
  53. {
  54. $this->image8 = $image8;
  55. }
  56.  
  57. public function setImage9($image9)
  58. {
  59. $this->image9 = $image9;
  60. }
  61.  
  62. public function setImage10($image10)
  63. {
  64. $this->image10 = $image10;
  65. }
  66.  
  67. public function setImage11($image11)
  68. {
  69. $this->image11 = $image11;
  70. }
  71.  
  72. public function setImage12($image12)
  73. {
  74. $this->image12 = $image12;
  75. }
  76.  
  77. public function getImages()
  78. {
  79. $response =[];
  80. for ($i = 1; $i <= 12; $i++) {
  81. if ($this->{'image'.$i} !== null) {
  82. $response[] = $this->{'image'.$i};
  83. }
  84. }
  85. return $response;
  86. }
  87. }
  88.  
  89. $_POST['images'] = [
  90. 0 => 'image1',
  91. 4 => 'image5',
  92. 5 => 'image6',
  93. 8 => 'image9',
  94. 11 => 'image12',
  95. ];
  96.  
  97. $images = new Images();
  98.  
  99. foreach ($_POST['images'] as $index => $image) {
  100. $images->{'setImage'.++$index}($image);
  101. }
  102.  
  103. echo '<pre>';
  104.  
  105. print_r($images->getImages());


Ten post edytował Fred1485 18.07.2016, 20:01:33
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 29.12.2025 - 00:52