2017-02-12 7 views
-2

私は、食事をデザインし、食材を追加または削除することができるアプリケーションを作成しています。しかし、私が苦労している問題は$ _POSTデータです。私が遭遇している問題は $ _POSTデータフォームのボタンが必要です。

例えば、私はビューの食事のボタンを使用して(写真に見られるように)成分をリストすることができますが、このアクションはページを更新するので、$ _POST [食事]データは存在しません。だから、私が成分を取り除こうとすると、それは選択された成分を与えることができますが、食事の名前は与えません。

$ _POSTデータを取得する正しい方法は何ですか?私は基本的にすべての提出に対して新しいフォームとボタンを作る必要があります。何らかのAJAXを使用する必要があるので、必ずしもページをリフレッシュする必要はなく、そのデータは失われますか?または$ _GETメソッドを使用する必要がありますか?

enter image description here

<?php 
    if (isset($_POST['view_meal'])){ 
     $meal = (string)$_POST['meal_names']; 
     $meal_fk_q = "SELECT item 
         FROM meal_ingredients 
         WHERE meal_name='$meal' 
         ORDER BY item"; 
     $meal_fk_c = $conn->query($meal_fk_q); 
     $option_string = ""; 
     echo "<div class='view_meal_table_wrapper'>"; 
     while ($row = $meal_fk_c->fetch_assoc()){ 
      $view_ingredient = $row['item']; 
      echo "<table class='view_meal_table'> 
         <tr> 
         <td class='view_meal cell'>$view_ingredient</td> 
         </tr> 
        </table>"; 
       $option_string .= "<option>" . $view_ingredient . "</option>"; 
     } 
     echo "</div>"; 
     echo "<form action='createmeal.php' method='post'> 
       <select name='remove_ingredients'> 
       <option disabled selected value> -- Remove Ingredient -- </option>"; 
     echo $option_string; 
     echo "</select> 
       <input type='submit' name='remove_ingredient' value='Remove Ingredient'>"; 

    } 


    if (isset($_POST['remove_ingredient'])){ 
     $ingr = $_POST['remove_ingredients']; 
     $sql = "DELETE FROM meal_ingredients 
       WHERE item='$ingr'"; 

     if ($conn->query($sql) === TRUE) { 
      echo "Record deleted successfully"; 

     } else { 
      echo "Error deleting record: " . $conn->error; 
     }  
    } 


?> 
+0

何らかのエラーならば、あなたが望むいけない場合ページを更新すると、AJAXは方法です。 AJAXはphpとjavascriptの組み合わせです。それを使用すると、サーバーと通信して、javascriptを使用してテーブルに項目を追加することができます。すべてのアイテムがそこにある場合は、通常のフォームのようにページを送信します。すべてのPOSTデータが処理ページに表示されます。 – NoLiver92

+0

フォームの送信間で情報を維持する場合は、送信され、次に更新されるたびにその情報をフォームに戻す必要があります。 – RiggsFolly

+0

PHPを使用してページリロードの間にデータを保存する場合は、 '$ _SESSION'を使用して' $ _POST'データを保存してください。 '$ input '=' – Kitson88

答えて

0

アヤックスは、この1のあなたのための転送方法です。基本はそこより多くのあなたが改善するために、それに追加することができます負荷がありますが、 - jQueryのを使用して:

var variable-to-send = 42; 
$.ajax ({ 
    type: 'POST', 
    url: 'php_file_location.php', 
    data: {name-in-post: variable-to-send, more: more, andmore: andmore} 
    success: function (response) { 
     // handle the returned details here 
     console.log(response); 
    } 
}); 

次にPHPで、あなたが謝罪ので、携帯に$data = $_POST ['name-in-post']; を型付きんだろうが

関連する問題