Answer the question
In order to leave comments, you need to log in
android studio json how to make users see only their own posts?
Greetings! How to organize the "correct" json request. Let's say I need to get some data from the server. (in other words, users should only see their posts)
If you do this:
// url получения списка всех продуктов
private static String url_all_order = "http://example.com/api/get_order.php";
$result = mysql_query("SELECT *FROM products") or die(mysql_error());
$id = $_GET['id'];
$result = mysql_query("SELECT *FROM order WHERE id=$id") or die(mysql_error());
private static String url_all_order = "http://example.com/api/get_order.php?id=2";
public class AllOrderActivity extends ListActivity {
private ProgressDialog pDialog;
// Создаем JSON парсер
JSONParser jParser = new JSONParser();
ArrayList<HashMap<String, String>> productsList;
// url получения списка всех продуктов
private static String url_all_order = "http://example.com/api/get_order.php";
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_PRODUCTS = "order";
private static final String TAG_PID = "id";
private static final String TAG_NAME = "note";
// тут будет хранится список продуктов
JSONArray products = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.all_order);
// Hashmap for ListView
productsList = new ArrayList<HashMap<String, String>>();
// Загружаем прожукты в фоновом потоке
new LoadAllProducts().execute();
// получаем ListView
ListView lv = getListView();
// на выбор одного продукта
// запускается Edit Product Screen
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String pid = ((TextView) view.findViewById(R.id.pid)).getText()
.toString();
// Запускаем новый intent который покажет нам Activity
Intent in = new Intent(getApplicationContext(), EditOrderActivity.class);
// отправляем pid в следующий activity
in.putExtra(TAG_PID, pid);
// запуская новый Activity ожидаем ответ обратно
startActivityForResult(in, 100);
}
});
}
// Ответ из Edit Product Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// если результующий код равен 100
if (resultCode == 100) {
// если полученный код результата равен 100
// значит пользователь редактирует или удалил продукт
// тогда мы перезагружаем этот экран
Intent intent = getIntent();
finish();
startActivity(intent);
}
}
/**
* Фоновый Async Task для загрузки всех продуктов по HTTP запросу
* */
class LoadAllProducts extends AsyncTask<String, String, String> {
/**
* Перед началом фонового потока Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(AllOrderActivity.this);
pDialog.setMessage("Загрузка. Подождите...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
/**
* Получаем все продукт из url
* */
protected String doInBackground(String... args) {
// Будет хранить параметры
List<NameValuePair> params = new ArrayList<NameValuePair>();
// получаем JSON строк с URL
JSONObject json = jParser.makeHttpRequest(url_all_order, "GET", params);
Log.d("All Products: ", json.toString());
try {
// Получаем SUCCESS тег для проверки статуса ответа сервера
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// продукт найден
// Получаем масив из Продуктов
products = json.getJSONArray(TAG_PRODUCTS);
// перебор всех продуктов
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
// Сохраняем каждый json елемент в переменную
String id = c.getString(TAG_PID);
String name = c.getString(TAG_NAME);
// Создаем новый HashMap
HashMap<String, String> map = new HashMap<String, String>();
// добавляем каждый елемент в HashMap ключ => значение
map.put(TAG_PID, id);
map.put(TAG_NAME, name);
// добавляем HashList в ArrayList
productsList.add(map);
}
} else {
// продукт не найден
// Запускаем Add New Product Activity
Intent i = new Intent(getApplicationContext(),
NewOrderActivity.class);
// Закрытие всех предыдущие activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* После завершения фоновой задачи закрываем прогрес диалог
* **/
protected void onPostExecute(String file_url) {
// закрываем прогресс диалог после получение все продуктов
pDialog.dismiss();
// обновляем UI форму в фоновом потоке
runOnUiThread(new Runnable() {
public void run() {
/**
* Обновляем распарсенные JSON данные в ListView
* */
ListAdapter adapter = new SimpleAdapter(
AllOrderActivity.this, productsList,
R.layout.list_item, new String[] { TAG_PID,
TAG_NAME},
new int[] { R.id.pid, R.id.name });
// обновляем listview
setListAdapter(adapter);
}
});
}
}
}
<?php
$response = array();
require 'db_connect.php';
$db = new DB_CONNECT();
$result = @mysql_query("SELECT * FROM order");
if (mysql_num_rows($result) > 0) {
$response["order"] = array();
while ($row = mysql_fetch_array($result)) {
$product = array();
$product["id"] = $row["id"];
$product["date"] = $row["date"];
$product["note"] = $row["note"];
$product["status"] = $row["status"];
array_push($response["order"], $product);
}
$response["success"] = 1;
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No order found";
echo json_encode($response);
}
?>
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question