En el artículo anterior, hemos realizado la operación de inserción de datos . En este artículo, realizaremos la operación de lectura de datos. Antes de realizar esta operación, primero debemos crear un nuevo script PHP para leer datos de la base de datos SQL .
Requisito previo: debe tener Postman instalado en su sistema para probar este script PHP.
Cree un script PHP para leer datos de My SQL Database
Construiremos un script PHP simple en el que se usará para leer datos de nuestra tabla SQL que hemos creado en nuestro artículo anterior. Usando este script, leeremos datos de nuestra tabla SQL.
Implementación paso a paso
Paso 1: inicie su servidor XAMPP que hemos visto comenzar en el artículo anterior
En el artículo anterior, hemos visto iniciar nuestro servidor XAMPP y también hemos creado nuestra base de datos. En este artículo, crearemos un script para agregar datos a nuestra base de datos.
Paso 2: navega a la carpeta xampp
Ahora tenemos que navegar a la unidad C en su PC y dentro de eso verificar el nombre de la carpeta como xampp. Dentro de esa carpeta, navegue a la carpeta htdocs y cree una nueva carpeta en ella y asígnele el nombre CourseApp. Dentro de esta carpeta, almacenaremos todos nuestros scripts PHP. Ahora, para escribir su script PHP, podemos usar cualquier editor de texto simple. Estoy usando el código VS. Después de crear esta carpeta, simplemente tenemos que abrir esta carpeta en código VS.
Paso 3: Crear un nuevo archivo PHP
Después de abrir su carpeta en el código VS, dentro de esa carpeta tenemos que presionar una tecla de acceso directo como Ctrl+N, se creará nuestro nuevo archivo. Tenemos que guardar este archivo con el nombre readCourses.php y agregarle el siguiente código. Se agregan comentarios en el código para conocer con más detalle.
PHP
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "id16310745_gfgdatabase"; // connect with database demo $conn = new mysqli($servername, $username, $password, $dbname); // an array to display response $response = array(); // on below line we are checking if the parameter send is id or not. if($_POST['id']){ // if the parameter send from the user id id then // we will search the item for specific id. $id = $_POST['id']; //on below line we are selecting the course detail with below id. $stmt = $conn->prepare("SELECT courseName,courseDescription,courseDuration FROM courseDb WHERE id = ?"); $stmt->bind_param("s",$id); $result = $stmt->execute(); // on below line we are checking if our // table is having data with specific id. if($result == TRUE){ // if we get the response then we are displaying it below. $response['error'] = false; $response['message'] = "Retrieval Successful!"; // on below line we are getting our result. $stmt->store_result(); // on below line we are passing parameters which we want to get. $stmt->bind_result($courseName,$courseDescription,$courseDuration); // on below line we are fetching the data. $stmt->fetch(); // after getting all data we are passing this data in our array. $response['courseName'] = $courseName; $response['courseDescription'] = $courseDescription; $response['courseDuration'] = $courseDuration; } else{ // if the id entered by user donot exist then // we are displaying the error message $response['error'] = true; $response['message'] = "Incorrect id"; } } else{ // if the user donot adds any parameter while making request // then we are displaying the error as insufficient parameters. $response['error'] = true; $response['message'] = "Insufficient Parameters"; } // at last we are printing // all the data on below line. echo json_encode($response); ?>
Paso 4: Obtener URL para su script PHP
Para obtener la URL de nuestro script PHP, simplemente tenemos que escribir localhost en nuestro navegador y tenemos que agregarle el nombre de nuestra carpeta y nuestro nombre de archivo. Verá la URL resaltada a continuación:
http://localhost/courseApp/readCourses.php
Ahora probaremos nuestra API usando Postman.
Paso 5: Probando nuestro PHP Script en Postman
Para probar su secuencia de comandos PHP, seleccione el método POST en cartero, ya que obtendremos datos de nuestra tabla SQL y dentro de la sección URL agregue la URL anterior. Después de agregar la URL. Ahora haga clic en la pestaña Cuerpo que se muestra en la captura de pantalla a continuación y dentro de eso seleccione x-www-form-urlencoded y luego agregue los parámetros en la sección a continuación como se muestra en la captura de pantalla. Asegúrese de que la clave que está ingresando debe ser la misma que hemos usado para nombrar nuestras columnas en nuestra tabla SQL. Después de agregar todos los datos. Ahora haga clic en la opción Enviar para enviar nuestra identificación y recibir datos de nuestra tabla SQL.
Podrá ver la respuesta de la API en la pantalla anterior.
Operación de lectura de datos
En la parte superior, hemos creado un script PHP para leer los datos de la tabla SQL. En esta parte, integraremos eso en nuestra aplicación de Android y leeremos datos en nuestra tabla SQL desde nuestra aplicación de Android.
¿Qué vamos a construir en este artículo?
Construiremos una aplicación simple en la que leeremos datos de nuestra tabla SQL pasando la ID. Estaremos leyendo estos datos usando scripts PHP que hemos creado anteriormente. A continuación se muestra el video en el que veremos lo que vamos a construir en este artículo.
Implementación paso a paso
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: agregue la dependencia a continuación en su archivo build.gradle
A continuación se muestra la dependencia de Volley que usaremos para obtener los datos de la API. Para agregar esta dependencia, vaya a la aplicación > Gradle Scripts > build.gradle(app) y agregue la dependencia a continuación en la sección de dependencias.
implementation ‘com.android.volley:volley:1.1.1’
Después de agregar esta dependencia, sincronice su proyecto y ahora muévase hacia la parte AndroidManifest.xml.
Paso 3: agregar permisos a Internet en el archivo AndroidManifest.xml
Vaya a la aplicación > AndroidManifest.xml y agréguele el siguiente código.
XML
<!--permissions for INTERNET--> <uses-permission android:name="android.permission.INTERNET"/>
Paso 4: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <!--Edit text for getting course id--> <EditText android:id="@+id/idEdtCourseId" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:layout_marginTop="20dp" android:layout_marginEnd="10dp" android:hint="Enter Course Id" android:importantForAutofill="no" android:inputType="number" /> <!--Button for adding your course to Firebase--> <Button android:id="@+id/idBtnGetCourse" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="Get Course Details" android:textAllCaps="false" /> <androidx.cardview.widget.CardView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/idCVCOurseItem" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:visibility="gone" app:cardCornerRadius="6dp" app:cardElevation="4dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="2dp" android:orientation="vertical" android:padding="4dp"> <!--Textview for displaying our Course Name--> <TextView android:id="@+id/idTVCourseName" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp" android:text="CourseName" android:textColor="@color/purple_500" android:textSize="18sp" android:textStyle="bold" /> <!--Textview for displaying our Course Duration--> <TextView android:id="@+id/idTVCourseDuration" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp" android:text="Duration" android:textColor="@color/black" /> <!--Textview for displaying our Course Description--> <TextView android:id="@+id/idTVCourseDescription" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp" android:text="Description" android:textColor="@color/black" /> </LinearLayout> </androidx.cardview.widget.CardView> </LinearLayout>
Paso 5: trabajar con el archivo MainActivity.java
Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
Java
import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.cardview.widget.CardView; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; public class MainActivity extends AppCompatActivity { // creating variables for our edit text private EditText courseIDEdt; // creating variable for button private Button getCourseDetailsBtn; // creating variable for card view and text views. private CardView courseCV; private TextView courseNameTV, courseDescTV, courseDurationTV; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // initializing all our variables. courseNameTV = findViewById(R.id.idTVCourseName); courseDescTV = findViewById(R.id.idTVCourseDescription); courseDurationTV = findViewById(R.id.idTVCourseDuration); getCourseDetailsBtn = findViewById(R.id.idBtnGetCourse); courseIDEdt = findViewById(R.id.idEdtCourseId); courseCV = findViewById(R.id.idCVCOurseItem); // adding click listener for our button. getCourseDetailsBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // checking if the id text field is empty or not. if (TextUtils.isEmpty(courseIDEdt.getText().toString())) { Toast.makeText(MainActivity.this, "Please enter course id", Toast.LENGTH_SHORT).show(); return; } // calling method to load data. getCourseDetails(courseIDEdt.getText().toString()); } }); } private void getCourseDetails(String courseId) { // url to post our data String url = "http://localhost/courseApp/readCourses.php"; // creating a new variable for our request queue RequestQueue queue = Volley.newRequestQueue(MainActivity.this); // on below line we are calling a string // request method to post the data to our API // in this we are calling a post method. StringRequest request = new StringRequest(Request.Method.POST, url, new com.android.volley.Response.Listener<String>() { @Override public void onResponse(String response) { try { // on below line passing our response to json object. JSONObject jsonObject = new JSONObject(response); // on below line we are checking if the response is null or not. if (jsonObject.getString("courseName") == null) { // displaying a toast message if we get error Toast.makeText(MainActivity.this, "Please enter valid id.", Toast.LENGTH_SHORT).show(); } else { // if we get the data then we are setting it in our text views in below line. courseNameTV.setText(jsonObject.getString("courseName")); courseDescTV.setText(jsonObject.getString("courseDescription")); courseDurationTV.setText(jsonObject.getString("courseDuration")); courseCV.setVisibility(View.VISIBLE); } // on below line we are displaying // a success toast message. } catch (JSONException e) { e.printStackTrace(); } } }, new com.android.volley.Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // method to handle errors. Toast.makeText(MainActivity.this, "Fail to get course" + error, Toast.LENGTH_SHORT).show(); } }) { @Override public String getBodyContentType() { // as we are passing data in the form of url encoded // so we are passing the content type below return "application/x-www-form-urlencoded; charset=UTF-8"; } @Override protected Map<String, String> getParams() { // below line we are creating a map for storing our values in key and value pair. Map<String, String> params = new HashMap<String, String>(); // on below line we are passing our key and value pair to our parameters. params.put("id", courseId); // at last we are returning our params. return params; } }; // below line is to make // a json object request. queue.add(request); } }
Ahora ejecute su aplicación y vea el resultado del código.
Producción:
Publicación traducida automáticamente
Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA