Это мой файл кода
Результат будет верным для всех искомых строк. Не знаю почему?
это мой файл JSON на сервере
https://vikasbajpayee.000webhostapp.com/villagesapi.php
Файл с PHP-кодом
ссылка на PHP код
Скажите, пожалуйста, если здесь кто-нибудь знает. Спасибо заранее.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (name!= null && !TextUtils.isEmpty(name)&&!name.equals("null"))
new AsyncFetch(name).execute();
else
Toast.makeText(Checkout.this, "Please Enter Village name", Toast.LENGTH_SHORT).show();
}
});
private class AsyncFetch extends AsyncTask<String, String, String> {
ProgressDialog pdLoading = new ProgressDialog(Checkout.this);
HttpURLConnection conn;
URL url = null;
String searchQuery;
public AsyncFetch(String searchQuery){
this.searchQuery=searchQuery;
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
pdLoading.setMessage("\tLoading...");
pdLoading.setCancelable(false);
pdLoading.show();
}
@Override
protected String doInBackground(String... params) {
try {
url = new URL("https://vikasbajpayee.000webhostapp.com/villagesapi.php");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return e.toString();
}
try {
// Setup HttpURLConnection class to send and receive data from php and mysql
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(READ_TIMEOUT);
conn.setConnectTimeout(CONNECTION_TIMEOUT);
// setDoInput and setDoOutput to true as we send and recieve data
conn.setDoInput(true);
conn.setDoOutput(true);
Uri.Builder builder = new Uri.Builder().appendQueryParameter("searchQuery", searchQuery);
String query = builder.build().getEncodedQuery();
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
conn.connect();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return e1.toString();
}
try {
int response_code = conn.getResponseCode();
// Check if successful connection made
if (response_code == HttpURLConnection.HTTP_OK) {
// Read data sent from server
InputStream input = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
StringBuilder result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
// Pass data to onPostExecute method
return (result.toString());
} else {
return("Connection error");
}
} catch (IOException e) {
e.printStackTrace();
return e.toString();
} finally {
conn.disconnect();
}
}
@Override
protected void onPostExecute(String result) {
//this method will be running on UI thread
pdLoading.dismiss();
pdLoading.dismiss();
if (result.equals("no rows")) {
Toast.makeText(Checkout.this, "No Village exist with this name", Toast.LENGTH_LONG).show();
} else {
//success
Toast.makeText(Checkout.this, "Success", Toast.LENGTH_SHORT).show();
Intent intent=new Intent(Checkout.this,FinalCheckout.class);
intent.putExtra("namedata",name);
startActivity(intent);
}
}
}
}
Я ищу "имя" после нажатия кнопки в базе данных MySQL PHP, как я могу это сделать. Так что в результате будет выполняться поиск имени в другом действии .этот код не работает, потому что он выполняется для всех искомых строк (имя здесь). Он выполняется во всех случаях.






Сторона Android:
На самом деле вы ничего не ищете. Вы просто получаете данные с определенного URL-адреса, который дает вам одни и те же данные при каждом запросе.
вам нужно добавить какой-то параметр в URL-адрес, например:
example.com/villagesapi.php?name=myvillage
Сторона сервера:
И в вашем PHP-скрипте вы должны сгенерировать ответ в соответствии с запрошенным параметром. вы можете сделать это так:
if (isset($_GET['name'])) {
//search from database where name = $_GET['name']
//then echo json_encode(database response array)
}
и текущая проблема здесь,
if (result.equals("no rows")) {
Toast.makeText(Checkout.this, "No Village exist with this name", Toast.LENGTH_LONG).show();
}
Вы проверяете, является ли ответ «нет строк», а затем показываете ложное сообщение. Но вы всегда получаете строковый ответ JSON, который не является «без строк». Вот почему для всех запросов вы выполняете правду.
Примечание: в Android вы не должны искать строку с помощью метода .содержать(), вы должны анализировать строку JSON на предмет имени.
В Android с помощью PHP? В чем именно проблема. ?