Featured Post

Tablas Responsivas con Bootstrap 5 pc escritorio y dispositivos mobiles

WEB BUSCADOR ARTICULOS C/BASE DATOS MS ACCESS PDO PHP FETCH PUT API JSON

 





Conectarse al archivo de base de datos de 
MS-Access

Primero necesitamos conectarnos a la base de datos usando ODBC, si no puede conectar y muestre el error "could not find driver", muy probablemente debe habilitar la extensión "php_pdo_odbc" en el archivo PHP.ini, quite el simbolo punto y coma(;) de la extensión que desea habilitar como se muestra en la imagen y guarde los cambios,luego pulse stop y luego star en el Apache del panel del xampp, para re-iniciar el servidor. 





<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>

<style> 

body {
    font-family: Tahoma;
   

table {
  border-collapse: collapse;
  width: 100%;
}

th, td {
  padding: 8px;
  text-align: left;
  border-bottom: 1px solid #ddd;
}

tr:nth-child(even) {background-color: #f2f2f2;}

th {
  background-color: #D20076;
  color: white;
}

</style>
</head>
<body>

<input type="text" id="nombre" style="width:180px"> 

<hr>

<table>
        <thead>
          <tr>
            <th>Id</th>
            <th>Nombre</th>
            <th>Precio</th>
            <th>Rubro</th>
            <th>Sub-Rubro</th>
          </tr>
        </thead>
        <tbody id="tbody"></tbody>
      </table>






<script>
buscar();



function buscar(){


//let nombre = document.getElementById("nombre").value;


var dato = {
'nombre' : document.getElementById("nombre").value
};

json_dato = JSON.stringify(dato);

fetch('api_json_access.php',{
method : 'PUT',
body : json_dato,
headers: {
'Content-type' : 'application/json',
}
})
.then((response) => response.json())
.then((data)=>{

console.log(data['articulos'].length);

var tbody = document.getElementById('tbody');

if(data['articulos'].length === 0){

tbody.innerHTML = '<td colspan="5" style="background:yellow;color:red;">PRODUCTO NO REGISTRADO TODAVIA</td>'


}else{

var tr = '';

for(var i in data['articulos']){
               
               // var max = data['articulos'].length;
   // for(var i=0; i< max; i++){ // otra forma

tr += `<tr>

            <td>${data['articulos'][i].id}</td>
            <td>${data['articulos'][i].nombre}</td>
            <td>${data['articulos'][i].precio}</td>
            <td>${data['articulos'][i].rubros}</td>
            <td>${data['articulos'][i].subrubros}</td>

          </tr>`;
}

tbody.innerHTML = tr;
}
})
.catch((error) => {
show_message('error',"sin datos en la base datos");
});
}

//////////////////////////////////////////////


//document.getElementById('fetchDataBtn').addEventListener('click', ver_tabla);

document.getElementById('nombre').addEventListener('keyup', buscar);

 //document.getElementById('caja1').addEventListener('change', ver_tabla); 

document.getElementById('nombre').addEventListener('keypress', function (event) {
if (event.keyCode === 13) {
buscar();
}
});


</script>

/////////////////////

api_json_access.php

<?php

//$dbName ='C:/basedatos.accdb';
//$dbName ='base.mdb';


$dbName = realpath("basedatos.accdb");


if (!file_exists($dbName)) {
    die("Could not find database file.");
}

$pdo = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=$dbName;charset=utf8;Uid=;Pwd=;");

$pdo->exec("set names utf8");

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);




//$pdo=new PDO("mysql:dbname=selectfetch;host=localhost","root","root");
//$pdo->query("SET NAMES 'UTF8'");




//$sql = "SELECT articulos.id as id , articulos.nombre as nombre , precio, rubros.nombre as rubros, subrubros.nombre as subrubros FROM articulos INNER JOIN rubros ON articulos.idrubros = rubros.id INNER JOIN subrubros ON articulos.idsubrubros = subrubros.id";

//$nombre= isset($_POST['nombre']) ? trim($_POST['nombre']) : '';

//$nombre='coca';
/*
$sql = "SELECT articulos.id as id , articulos.nombre as nombre , precio, rubros.nombre as rubros, subrubros.nombre as subrubros FROM (articulos INNER JOIN rubros ON articulos.idrubros = rubros.id) INNER JOIN subrubros ON articulos.idsubrubros = subrubros.id WHERE articulos.nombre LIKE '%".$nombre."%'";
*/




$input = file_get_contents('php://input');
$decode = json_decode($input, true);

$nombre = $decode["nombre"];


// se agrego el simbolo  parentesis dentro inner join


$sql = "SELECT articulos.id as id , articulos.nombre as nombre , precio, rubros.nombre as rubros, subrubros.nombre as subrubros FROM (articulos INNER JOIN rubros ON articulos.idrubros = rubros.id) INNER JOIN subrubros ON articulos.idsubrubros = subrubros.id WHERE articulos.nombre LIKE '%".$nombre."%';";



$stmt = $pdo->prepare($sql);
$stmt->execute();

$response["articulos"] = array();

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {          

$tmp = array();

$tmp["id"] = $row["id"];
$tmp["nombre"] = utf8_encode($row["nombre"]);
$tmp["precio"] = $row["precio"];
$tmp["rubros"] = utf8_encode($row["rubros"]);
$tmp["subrubros"] = utf8_encode($row["subrubros"]);

array_push($response["articulos"], $tmp);


$json = json_encode($response,JSON_PRETTY_PRINT);

//print("<pre>".$json."</pre>");

echo $json;


Comentarios