2014-01-11 45 views
0

delete_product.php如果我想刪除所選的行,我該如何編寫一個php代碼?

<?php 

/* 
* Following code will delete a product from table 
* A product is identified by product id (pid) 
*/ 

// array for JSON response 
$response = array(); 

// check for required fields 
if (isset($_POST['id'])) { 
    $id = $_POST['id']; 

    // include db connect class 
    require_once __DIR__ . '/config.inc.php'; 

    // connecting to db 
    $db = new DB_CONNECT(); 

    // mysql update row with matched pid 
    $result = mysql_query("DELETE FROM foodordered WHERE id = $id"); 

    // check if row deleted or not 
    if (mysql_affected_rows() > 0) { 
     // successfully updated 
     $response["success"] = 1; 
     $response["message"] = "Product successfully deleted"; 

     // echoing JSON response 
     echo json_encode($response); 
    } else { 
     // no product found 
     $response["success"] = 0; 
     $response["message"] = "No product found"; 

     // echo no users JSON 
     echo json_encode($response); 
    } 
} else { 
    // required field is missing 
    $response["success"] = 0; 
    $response["message"] = "Required field(s) is missing"; 

    // echoing JSON response 
    echo json_encode($response); 
} 
?> 

Food.java

package com.yiqiexample.cc; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
//import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 



public class Food extends ListActivity 
    implements OnClickListener { 
    // Progress Dialog 
     private ProgressDialog pDialog; 
     private ListAdapter adapter; 

    //testing on Emulator: 
    private static final String READ_COMMENTS_URL = "http://10.0.2.2/pbda2/foodordered.php"; 
    private static final String url_delete_product = "http://10.0.2.2/pbda2/delete_product.php"; 

    // my ip add 192.168.43.176 
    //private CheckBox chkFood, chkDrinks, chkServices; 
     //private Button btnDisplay, chkClear, deliever, chkClearFood, fooddeliever, drinksdeliever, servicesdeliever, chkClearDrinks, chkClearServices; 
     //private TextView clearThis,orderdisplay, clearThisFood, foodorderdisplay, drinksorderdisplay, servicesorderdisplay, clearThisDrinks, clearThisServices; 

     private static final String TAG_SUCCESS = "success"; 
     private static final String TAG_POSTS = "posts"; 
     private static final String TAG_SEATNUMBER = "seatnumber"; 
     private static final String TAG_FOODORDERED = "foodordered"; 
     //it's important to note that the message is both in the parent branch of 
     //our JSON tree that displays a "Post Available" or a "No Post Available" message, 
     //and there is also a message for each individual post, listed under the "posts" 
     //category, that displays what the user typed as their message. 

     //An array of all of our comments 
     private JSONArray mComments = null; 
     //manages all of our comments in a list. 
     private ArrayList<HashMap<String, String>> mCommentList; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.food); 



     View v = findViewById(R.id.backmain); 
     //set event listener 
      v.setOnClickListener(this); 

      View z = findViewById(R.id.drinksbtn); 
      //set event listener 
       z.setOnClickListener(this); 

       View x = findViewById(R.id.servicebtn); 
       //set event listener 
        x.setOnClickListener(this); 




    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     //loading the comments via AsyncTask 
     new LoadComments().execute(); 
    } 


    /** 
    * Retrieves recent post data from the server. 
    */ 
    public void updateJSONdata() { 

     // Instantiate the arraylist to contain all the JSON data. 
     // we are going to use a bunch of key-value pairs, referring 
     // to the json element name, and the content, for example, 
     // message it the tag, and "I'm awesome" as the content.. 

     mCommentList = new ArrayList<HashMap<String, String>>(); 

     // Bro, it's time to power up the J parser 
     JSONParser jParser = new JSONParser(); 
     // Feed the beast our comments url, and it spits us 
     //back a JSON object. Boo-yeah Jerome. 
     JSONObject json = jParser.getJSONFromUrl(READ_COMMENTS_URL); 

     //when parsing JSON stuff, we should probably 
     //try to catch any exceptions: 
     try { 

      //I know I said we would check if "Posts were Avail." (success==1) 
      //before we tried to read the individual posts, but I lied... 
      //mComments will tell us how many "posts" or comments are 
      //available 
      mComments = json.getJSONArray(TAG_POSTS); 

      // looping through all posts according to the json object returned 
      for (int i = 0; i < mComments.length(); i++) { 
       JSONObject c = mComments.getJSONObject(i); 

       //gets the content of each tag 
       String seatnumber = c.getString(TAG_SEATNUMBER); 
       String foodordered = c.getString(TAG_FOODORDERED); 



       // creating new HashMap 
       HashMap<String, String> map = new HashMap<String, String>(); 

       map.put(TAG_SEATNUMBER, seatnumber); 
       map.put(TAG_FOODORDERED, foodordered); 


       // adding HashList to ArrayList 
       mCommentList.add(map); 

       //annndddd, our JSON data is up to date same with our array list 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 









    @Override 
      public void onClick(View arg0) { 
     if(arg0.getId() == R.id.backmain){ 
      //define a new Intent for the second Activity 
      Intent intent = new Intent(this,MainActivity.class); 

      //start the second Activity 
      this.startActivity(intent); 
      } 
     if(arg0.getId() == R.id.drinksbtn){ 
      //define a new Intent for the second Activity 
      Intent intent = new Intent(this,Drinks.class); 

      //start the second Activity 
      this.startActivity(intent); 
      } 
     if(arg0.getId() == R.id.servicebtn){ 
      //define a new Intent for the second Activity 
      Intent intent = new Intent(this,Services.class); 

      //start the second Activity 
      this.startActivity(intent); 
      } 



    } 

    /** 
    * Inserts the parsed data into the listview. 
    */ 
    private void updateList() { 
     // For a ListActivity we need to set the List Adapter, and in order to do 
     //that, we need to create a ListAdapter. This SimpleAdapter, 
     //will utilize our updated Hashmapped ArrayList, 
     //use our single_post xml template for each item in our list, 
     //and place the appropriate info from the list to the 
     //correct GUI id. Order is important here. 

     //ListAdapter 
     adapter = new SimpleAdapter(this, mCommentList, 
       R.layout.single_comment, 
       new String[] { TAG_SEATNUMBER, TAG_FOODORDERED 
       //TAG_DRINKSORDERED, TAG_SERVICES 
       }, new int[] { R.id.seatnumber, R.id.orders 
       //R.id.drinkstv, R.id.servicestv, 
     //adapter = new SimpleAdapter(this, mCommentList, 
       //R.layout.single_comment, new String[] { TAG_SEATNUMBER, TAG_FOODORDERED 
       //TAG_DRINKSORDERED, TAG_SERVICES 
        // }, new int[] { R.id.seatnumber, R.id.orders 
       //R.id.drinkstv, R.id.servicestv, 


     }); 

     setListAdapter(adapter); 
     ListView lv = getListView();  
     lv.setOnItemClickListener(new OnItemClickListener() { 

      @SuppressLint("NewApi") 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, 
        final int arg2, long arg3) { 
       // TODO Auto-generated method stub 

       AlertDialog.Builder alt = new AlertDialog.Builder(
         Food.this, 
         android.R.style.Theme_DeviceDefault_Dialog); 
       alt.setMessage("Order delivered??"); 
       alt.setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, 
            int which) { 
           // TODO Auto-generated method stub 
           mCommentList.remove(arg2); 

           ((BaseAdapter) adapter).notifyDataSetChanged(); 


           //new 
          new DeleteProduct().execute(); 

         //end new  

          } 
         }); 

       alt.setNegativeButton("No", 
         new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, 
            int which) { 
           // TODO Auto-generated method stub 

           dialog.dismiss(); 

          } 
         }); 
       AlertDialog dialog = alt.create(); 
       dialog.show(); 

       return; 
      } 
     }); 
    } 


     // I shouldn't have to comment on this one: 
     //etListAdapter(adapter); 

     // Optional: when the user clicks a list item we 
     //could do something. However, we will choose 
     //to do nothing... 
     //ListView lv = getListView(); 
     //lv.setOnItemClickListener(new OnItemClickListener() { 

      //@Override 
      //public void onItemClick(AdapterView<?> parent, View view, 
       // int position, long id) { 

       // This method is triggered if an item is click within our 
       // list. For our example we won't be using this, but 
       // it is useful to know in real life applications. 





      //} 
     //}); 



    // } 




    public class LoadComments extends AsyncTask<Void, Void, Boolean> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(Food.this); 
      pDialog.setMessage("Loading orders..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 
     @Override 
     protected Boolean doInBackground(Void... arg0) { 
      //we will develop this method in version 2 
      updateJSONdata(); 
      return null; 

     } 


     @Override 
     protected void onPostExecute(Boolean result) { 
      super.onPostExecute(result); 
      pDialog.dismiss(); 
      //we will develop this method in version 2 
      updateList(); 
     } 
    } 



    //new 

    /***************************************************************** 
    * Background Async Task to Delete Product 
    * */ 
    class DeleteProduct extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(Food.this); 
      pDialog.setMessage("Deleting Product..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 

     /** 
     * Deleting product 
     * */ 
     protected String doInBackground(String... args) { 

      // Check for success tag 
      int success; 
      try { 
       // Building Parameters 
       //List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       //params.add(new BasicNameValuePair("pid", pid)); 

       // getting product details by making HTTP request 
       //JSONObject json = jsonParser.makeHttpRequest(
        //  url_delete_product, "POST", params); 

       JSONParser jParser = new JSONParser(); 
       // Feed the beast our comments url, and it spits us 
       //back a JSON object. Boo-yeah Jerome. 
       JSONObject json = jParser.getJSONFromUrl(url_delete_product); 

       // check your log for json response 
       Log.d("Delete Product", json.toString()); 

       // json success tag 
       success = json.getInt(TAG_SUCCESS); 
       if (success == 1) { 
        // product successfully deleted 
        // notify previous activity by sending code 100 
        Intent i = getIntent(); 
        // send result code 100 to notify about product deletion 
        setResult(100, i); 
        finish(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog once product deleted 
      pDialog.dismiss(); 

     } 

    } 





} 

foodordered.php

<?php 

/* 
Our "config.inc.php" file connects to database every time we include or require 
it within a php script. Since we want this script to add a new user to our db, 
we will be talking with our database, and therefore, 
let's require the connection to happen: 
*/ 
require("config.inc.php"); 

//initial query 
$query = "Select * FROM foodordered"; 

//execute query 
try { 
    $stmt = $db->prepare($query); 
    $result = $stmt->execute(); 
} 
catch (PDOException $ex) { 
    $response["success"] = 0; 
    $response["message"] = "Database Error!"; 
    die(json_encode($response)); 
} 

// Finally, we can retrieve all of the found rows into an array using fetchAll 
$rows = $stmt->fetchAll(); 


if ($rows) { 
    $response["success"] = 1; 
    $response["message"] = "Post Available!"; 
    $response["posts"] = array(); 

    foreach ($rows as $row) { 
     $post    = array(); 
     $post["seatnumber"] = $row["seatnumber"]; 
     $post["foodordered"] = $row["foodordered"]; 
     //$post["drinksordered"] = $row["drinksordered"]; 
     //$post["services"] = $row["services"]; 



     //update our repsonse JSON data 
     array_push($response["posts"], $post); 
    } 

    // echoing JSON response 
    echo json_encode($response); 


} else { 
    $response["success"] = 0; 
    $response["message"] = "No Post Available!"; 
    die(json_encode($response)); 
} 

?> 

請告訴我,如果你需要我的其他Java,XML或PHP代碼。 我添加了刪除功能,當該項目被選中時,它將刪除該項目,但它不會從數據庫中刪除。請幫我看看我是否在php代碼或java代碼中有錯誤。 我是一個初學java編程的人,請幫忙,如果可以的話。謝謝

+0

你有一個名爲表** foodordered **和**的$ id **總是匹配一個? – Cilan

+0

檢查天氣config.inc.php包含在文件中並確保config.inc.php沒有任何錯誤。否則我認爲你的php是正確的 – sanjeev

+0

@ManofSnow我有一個表叫foodordered。但我真的不明白$ id部分來自哪裏。我會發布我的插入我的插入數據PHP和你能幫我看看我應該如何編輯? –

回答

0

你不要張貼id的一切都在這裏:

JSONObject json = jParser.getJSONFromUrl(url_delete_product); 

你可以使用一個GET變量,並將其追加到URL,或做一個有效的POST。

隨着得到它可能的工作是這樣的:

JSONObject json = jParser.getJSONFromUrl(
      url_delete_product+"?id="+idOfYourFoodItem); 

和PHP獲取ID是這樣的:

$id = $_GET['id']; 
+0

你介意如何編輯? –

+0

取決於你想要的,GET還是POST? GET通常簡單很多,只需一個ID即可。 –

+0

JSONObject json = jParser.makeHttpRequest( url_delete_product,「POST」,params); 這是正確的嗎?但即使我使用這個我仍然不能得到的數據被刪除。 –

相關問題