Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Formularze z tablicy
charlie-cherry
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 15.12.2007

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


Myślę, jak by sobie uprościć proces robienia formularza na potrzeby własnych mini-cmsów. Decolowo może być nawet kilkanaście pól, które chciałbym 'edytować' w jednym pliku. Chwilowo wpadłem na coś takiego:

  1. <?php
  2. // 1 - nazwapola, label_pola, typ pola
  3.  
  4. $tabl[0] = array('tytul', 'Tytuł', 'input_text');
  5. $tabl[1] = array('data', 'Data wydania', 'input_text');
  6. $tabl[2] = array('opis', 'Opis obiektu', 'textarea');
  7.  
  8. for ($x=0; $x < count($tabl); $x++) {
  9. if ($tabl[$x][2] == 'input_text'){
  10. echo '<label>'.$tabl[$x][1].'</label><br><input type="text" name="'.$tabl[$x][0].'"><br>';}
  11. elseif ($tabl[$x][2] == 'textarea')
  12. {echo '<label>'.$tabl[$x][1].'</label><br><textarea name="'.$tabl[$x][0].'"></textarea><br>';}
  13. }
  14. ?>


Pewnie można lepiej, ale nie jestem pewien jak. Poza tym jest problem, gdy chcę dołączyć pole wyboru (select, option) w tym stylu:

  1. <?php
  2. $tabl[2] = array('rodzaj', 'Rodzaj Obiektu', 'select', 'pierwsza_możliwość', 'druga_możliwość', 'trzecia_możliwość');
  3. ?>


Liczba możliwości będzie się zmieniała w zależności od projektu i nie wiem jak tę zmienność przerobić na gotowy kod html.

Ten post edytował charlie-cherry 15.07.2008, 18:16:41
Go to the top of the page
+Quote Post
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Może tak:

  1. <?php
  2.  
  3. $tabl[0] = array('tytul', 'Tytuł', 'input_text');
  4. $tabl[1] = array('data', 'Data wydania', 'input_text');
  5. $tabl[2] = array('opis', 'Opis obiektu', 'textarea');
  6. $tabl[3] = array('rodzaj', 'Rodzaj Obiektu', 'select', 'pierwsza_możliwość', 'druga_możliwość', 'trzecia_możliwość');
  7.  
  8. foreach ($tabl as $pole) {
  9.  list($nazwa, $tytul, $typ) = $pole;
  10.  echo '<label>' . $tytul . '</label><br />' . PHP_EOL;
  11.  switch ($typ) {
  12. case 'input_text':
  13.  echo '<input type="text" name="' . $nazwa . '">' . PHP_EOL;
  14.  break;
  15. case 'textarea':
  16.  echo '<textarea name="' . $nazwa . '"></textarea>' . PHP_EOL;
  17.  break;
  18. case 'select':
  19.  echo '<select name="' . $nazwa . '">' . PHP_EOL;
  20.  for($i = 3; $i < count($pole); $i++) {
  21. echo "\t" . '<option value="' . $pole[$i] . '">' . $pole[$i] . '</option>' . PHP_EOL;
  22.  }
  23.  echo '</select>' . PHP_EOL;
  24.  break;
  25. default:
  26.  exit('Nieznany rodzaj pola "' . $typ . '"');
  27.  } 
  28. }
  29.  
  30. ?>


Ten post edytował nexis 15.07.2008, 18:55:52


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
charlie-cherry
post
Post #3





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 15.12.2007

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


Dzięki za pomoc. Przy okazji odkryłem, że pola wyboru można 'zrobić' również i takim sposobem, dołączając do całości:

  1. <?php
  2. elseif ($tabl[$x][2] == 'select') {
  3. echo '<label>'.$tabl[$x][1].'</label><br><select name="'.$tabl[$x][0].'">';
  4. for ($y=3; $y < count($tabl[$x]); $y++) {
  5. {echo '<option value="'.$tabl[$x][$y].'">'.$tabl[$x][$y].'</option>';}
  6. } echo '</select><br>';
  7. }
  8. ?>
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 Aktualny czas: 21.08.2025 - 10:56