2015-04-05 3 views
0

Я строю поверх существующего приложения на PHP, чтобы обновлять имя и цены пунктов меню.Пронумеруйте значения формы из динамической формы php

Я создал динамическую форму, заполненную результатами из базы данных. Идея состоит в том, что пользователь может обновить имя или цену элемента для обновления информации в базе данных.

Форма работает нормально, но у меня возникла проблема с куполом, чтобы получить информацию из формы. каждый элемент имеет отдельный идентификатор, поэтому мне нужно по существу сделать foreach через форму и каждый раз вызывать функцию обновления с соответствующим идентификатором элемента.

Я могу обрабатывать сторону БД вещей хорошо, но приложение, на котором я основано, имеет функцию getInput для проверки ввода и получения формы ввода формы, и я хотел бы использовать это.

Это функция getInput:

public static function exists($type = 'post') { 
     switch($type) { 
      case 'post': 
       return (!empty($_POST)) ? true : false; 
      break; 
      case 'get'; 
       return (!empty($_GET)) ? true : false; 
      break; 
      default: 
       return false; 
      break; 
     } 
    } 

    public static function get($item) { 
     if(isset($_POST[$item])) { 
      return $_POST[$item]; 
     } else if(isset($_GET[$item])) { 
      return $_GET[$item]; 
     } 
     return ''; 
    } 

} 

Проблема у меня есть, при вызове этой функции она возвращает только последний элемент образует форму. Есть ли способ, которым я могу перебирать форму и получать каждый элемент?

Это динамическая форма и код getInput до сих пор:

$menuItems = DB::getInstance()->get('menu_items', array('cat_id', '=', $cat_id)); 

        if($menuItems->count()) { 

         echo '<form class="updateMenu" action="" method="post">'; 
         echo '<table class="gridtable gridtableMenu">'; 
         echo '<tr><th>Item Name</th><th>Item Price</th></tr>'; 

          foreach($menuItems->results() as $item) { 

           echo '<tr>'; 
           echo '<td class="menu-name"><input type="text" name="itemName" value="' . $item->item_name . '" required></td>'; 
           echo '<td class="menu-price"><input type="number" step="any" name="itemPrice" value="' . $item->item_price . '" required></td>'; 
           echo '<input type="hidden" name="id" value="' . $item->id . '">'; 
           echo '</tr>'; 

          } 

         echo '</table>'; 
         echo '<input type="submit" name="updateMneu" value="Update Menu">'; 
         echo '</form>'; 

        } else { 
         echo '<div class="error">No items have been added to this menu</div>'; 
        } 

      } // close categories foreach 

     } // close if category set 


     if(isset($_POST['updateMneu'])) { 

      echo Input::get('id'), '</br>'; 
      echo Input::get('itemName'), '</br>'; 
      echo Input::get('itemPrice'), '</br>'; 

     } //close if isset updateMenu If 

Так что я хотел бы Еогеасп я думаю, что вокруг этого раздела:

if(isset($_POST['updateMneu'])) { 

     echo Input::get('id'), '</br>'; 
     echo Input::get('itemName'), '</br>'; 
     echo Input::get('itemPrice'), '</br>'; 

     //update ite in the database, and move to gthe next item. 

    } //close if isset updateMenu If 

Я буду обрабатывать проверки данных и что не позже.

+0

из названия вашего текста ввода типа я предполагаю несколько 'имя =«ITEMNAME»', 'имя =«itemPrice»и' имя = «идентификатор» ' – noobHere

+0

Привет, да жаль, что я должен упомянули об этом. поэтому id, itemName и itemPrice, очевидно, являются отдельными элементами, их будет несколько в форме. и моя текущая функция, чтобы получить вход, просто вытягивает последний из формы. – chinds

+0

это можно сделать, если имя является массивом 'name =" itemName [] "' – noobHere

ответ

0

Как отправил «noobHere», ответ заключался в том, чтобы задать имя типа ввода как массивы. например name="itemName[]" вместо name="itemName"

Смежные вопросы