Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Formularze z tablicy
Forum PHP.pl > Forum > Przedszkole
charlie-cherry
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.
nexis
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. ?>
charlie-cherry
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. ?>
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.