2015-04-05 54 views
0

我建立在現有基於PHP的應用程序之上,可以更新菜單項名稱和價格。從動態php表格循環表格值

我已經生成,其填充了結果形成數據庫動態形式。這個想法是,用戶可以更新項目名稱或價格來更新數據庫中的信息。

形式工作正常,但我有圓頂麻煩表單的信息。每個項目都有一個單獨的ID,所以我需要通過表單實質上完成一次foreach,並且每次使用相應的項目ID調用更新函數。

我可以處理數據庫方面的事情很好,但我建立的應用程序有一個'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 

所以我想一個foreach我認爲解決此節:

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

,因爲你的輸入文本類型的名稱我相信 多個'NAME = 「ITEMNAME」','NAME = 「ITEMPRICE」'和'NAME = 「ID」' – noobHere 2015-04-05 14:19:27

+0

你好,是的,對不起我應該已經提到過。所以id,itemName和itemPrice顯然是單個項目,在表單中會有多個這樣的項目。而我目前得到輸入的函數只是將最後一個拉出表單。 – chinds 2015-04-05 14:22:15

+0

如果名稱是一個數組'name =「itemName []」' – noobHere 2015-04-05 14:25:55

回答

0

由於發表「noobHere」的答案是集名稱爲數組的輸入類型。例如name="itemName[]"代替name="itemName"