Operación CRUD en MySQL usando PHP, Volley Android – Leer datos

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *