Ejercicio detalle

Función en adb:

   function creaSelect($tabla,$campo,$id="selRegistro"){
        $filas=$this->seleccionar($tabla,0,-1);
        ?>
            <select id="<?=$id?>">
                <option value="0">Seleccione...</option>
            <?php
            foreach($filas as $fila){
                ?>
                 <option value="<?=$fila["id$tabla"]?>"><?=$fila["$campo"]?></option>
                <?php
            }
            ?>
            </select>
                 <?php
    }
 

Detalle:

require_once 'adb.php';
$adb=new adb();

$adb->creaSelect('test', 'nombre');

Detalle, script:

 $(function() {
            $( "#selRegistro" ).change(function(){
                console.log($(this).val());
                   $.get("ajax.php",{detalle:1,tabla:'test',id:$(this).val()}, function(data, status){
                 
                 $("#resultado").html(data);
    });
        });
            });

ajax.php

if (isset($_GET['detalle']) && isset($_GET['id']) && isset($_GET['tabla'])){
    $filas=$adb->seleccionarId($_GET['tabla'], $_GET['id']);
    echo json_encode($filas);
}

Cambio en seleccionar:

 $sql = "select * from $tabla " . (empty($cond) ? '' : " where $cond ") . (($numero!=-1)?" limit $inicio,$numero ":"");

Cambios en adb para introducir ajax

Función en adb:

function seleccionarAuto($tabla, $campo, $term="",$inicio = 0, $numero = 10) {
        try {

            $sql = "select * from $tabla  where $campo like '%$term%'  limit $inicio,$numero ";

            $sqlst = $this->con->prepare($sql);
            $sqlst->execute();
            $this->filas = $sqlst->fetchAll(PDO::FETCH_ASSOC);
            $res=array();
            foreach ($this->filas as $fila){
                $res[]=$fila[$campo];
            }
            return $res;
        } catch (Exception $ex) {
            $this->tratarError("seleccionar", $ex->getMessage(), $sql);
            die($ex->getMessage());
        }
    }

La página ajax.php:

require_once "adb.php";
$adb=new adb();
if (isset($_GET['buscar']) && isset($_GET['tabla']) && isset($_GET['campo'])){
    $filas=$adb->seleccionarAuto($_GET['tabla'],$_GET['campo'],$_GET['term'],0,10);
    echo json_encode($filas);
}

La llamada:

 $(function() {
            $( "#buscar" ).autocomplete({
              source: "ajax.php?buscar=1&tabla=test&campo=nombre",
      minLength: 2,  

        });
            });

Busqueda con get (ajax 2)

$nombres="ana,juan,eva,luis,rosa,jose,marc";
$nombres=explode(",",$nombres);

if (!empty($_GET['cadena'])) {
$res="";

foreach($nombres as $nombre){
        if (strpos($nombre,$_GET['cadena'])!==false){
            $res.=$nombre." ";
        }
    }
        echo $res;
}
else{
echo "Faltan datos";
}

HTML:

$(document).ready(function(){
                $("#nombre").keyup(function(){
                    var nom=$("#nombre").val();
             $.get("busqueda.php",{cadena:nom}, function(data, status){
                 
                 $("#resultado").html(data);
        console.log("Datos: " + data + "\nStatus: " + status);
    });       
                });
             
    });

Ajax con jquery (1)

tabla.php

if (empty($_GET[‘numero’])) $num=1; else $num=$_GET[‘numero’];

for ($i=1;$i<=10;$i++){
echo “$i x $num=”.($i*$num).”<br/>”;
}

test.html

$(document).ready(function(){ $.get(“tablas.php”,{numero:5}, function(data, status){ console.log(“Datos: ” + data + “\nStatus: ” + status); }); });

 

Nueva versión:

$(document).ready(function(){ $(“#ver”).click(function(){

var num=$(“#numero”).val();

$.get(“tablas.php”,{numero:num}, function(data, status){

$(“#resultado”).html(data);

console.log(“Datos: ” + data + “\nStatus: ” + status); }); }); });

Funciones HTML

Estas son las primeras funciones para crear HTML:

function creaCampos($tabla) {
$campos = $this->getColumnas($tabla);
foreach ($campos as $campo) {
if ($campo != “id” . $tabla) {
?>
<p><label><?= ucwords($campo) ?>:</label> <input class=”form-control” placeholder=”Introduzca el <?= ucwords($campo) ?>” type=”text” name=”<?= $campo ?>” /></p>
<?php
}
}
}

function creaCamposDatos($tabla, $fila) {
$campos = array_keys($fila);
foreach ($campos as $campo) {
?>
<p><label><?= ucwords($campo) ?>:</label> <input class=”form-control” value=”<?= $fila[$campo] ?>” type=”text” name=”<?= $campo ?>” <?= ($campo == “id” . $tabla) ? ‘readonly’ : ” ?> /></p>
<?php
}
}

Mini framework

Primera parte de la clase para conectar adb:

class adb {

private $server = “localhost”;
private $user = “root”;
private $pass = “intelisen”;
private $db = “tienda”;
private $log = “errores.log”;

private $con;
public $numFilas;
public $filas;

function __construct() {
$this->conectar();
}
/**
* Devuelve el número de filas de una tabla
*
* @param string $tabla Tabla a buscar
* @param string $cond Condición opcional para el where
* @return int Número de filas
*/
function numFilas($tabla, $cond = “”) {
try {
$sql = “select count(*) as total from $tabla ” . (empty($cond) ? ” : ” where $cond”);
$sqlst = $this->con->prepare($sql);
$sqlst->execute();
$fila = $sqlst->fetch(PDO::FETCH_ASSOC);
$this->numFilas = $fila[‘total’];
return $this->numFilas;
} catch (Exception $ex) {
$this->tratarError(“numFilas”, $ex->getMessage(), $sql);
die($ex->getMessage());
}
}
/**
* Selecciona los registros de una tabla.
*
* Podemos añadir los datos del limit y una condición para el where
*
* @param string $tabla Tabla de la base de datos

* @param int $inicio Registro inicial
* @param int $numero Número de registros
* @param string $cond Condición para el where
* @return Array Registros de la base de datos
*/
function seleccionar($tabla,$inicio=0,$numero=10,$cond=””) {
try{

$sql = “select * from $tabla ” . (empty($cond) ? ” : ” where $cond “). ” limit $inicio,$numero “;

$sqlst = $this->con->prepare($sql);
$sqlst->execute();
$this->filas = $sqlst->fetchAll(PDO::FETCH_ASSOC);

return $this->filas;

} catch (Exception $ex) {
$this->tratarError(“seleccionar”, $ex->getMessage(),$sql);
die($ex->getMessage());
}
}
function seleccionarId($tabla,$id){
try{
$condicion=”id$tabla=$id”;
$filas=$this->seleccionar($tabla,0,1,$condicion);
if (count($filas)>0) return $filas[0];
} catch (Exception $ex) {
$this->tratarError(“numFilas”, $ex->getMessage());
die($ex->getMessage());
}
}
function conectar() {
try {
$this->con = new PDO(“mysql:host=$this->server;dbname=$this->db;charset=utf8”, $this->user, $this->pass);
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $ex) {
$this->tratarError(“conectar”, $ex->getMessage());
die($ex->getMessage());
}
}

private function tratarError($origen, $error, $sql = “”) {
$f = fopen($this->log, “a”);
fwrite($f, $origen . “|” . $error . “\r\n”);
if (!empty($sql)) {
fwrite($f, $sql . “\r\n”);
}
fclose($f);
}

}