Herramientas Informaticas

Etiqueta: PHP

Select2 Con Server Side Miles de registros en el ComboBox

Cuando se requiere poner miles o cientos de miles de options en un select no es bueno ponerlos todos ya que la carga de la pagina y la pagina misma se pondría lenta

La mejor opción es ponerlo via ajax y solo muestre de 5 a 10 registros cuando se haga la busqueda, a continuación mostraremos como hacerlo, basado en el sistema de punto de venta POS 2021, usando el modelo vista controlador

Ejemplo

CREATE TABLE `unidadMedidasSAT` (
  `id` bigint(20) NOT NULL,
  `c_ClaveUnidad` varchar(3) DEFAULT NULL,
  `Nombre` varchar(106) DEFAULT NULL,
  `Descripción` varchar(551) DEFAULT NULL,
  `Nota` varchar(221) DEFAULT NULL,
  `Fecha de inicio de vigencia` varchar(10) DEFAULT NULL,
  `Fecha de fin de vigencia` varchar(10) DEFAULT NULL,
  `Símbolo` varchar(21) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Insertando datos



INSERT INTO `unidadMedidasSAT` (`id`, `c_ClaveUnidad`, `Nombre`, `Descripción`, `Nota`, `Fecha de inicio de vigencia`, `Fecha de fin de vigencia`, `Símbolo`) VALUES
(1, '18', 'Tambor de cincuenta y cinco galones (EUA)', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL),
(2, '19', 'Camión cisterna', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL),
(3, '26', 'Tonelada real', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL),
(4, '29', 'Libra por mil pies cuadrados', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, 'Lb / kft²'),
(5, '30', 'Día de potencia de caballos por tonelada métrica de aire seco', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL),
(6, '31', 'Pescar', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL),
(7, '32', 'Kilogramo por tonelada métrica seca del aire', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL),
(8, '36', 'Pie cúbico por minuto por pie cuadrado', 'Se requiere factor de conversión', 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, 'Ft³ / (min / ft²)'),
(9, '44', 'Bolsa a granel de quinientos kilos', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL),
(10, '45', 'Bolsa a granel de trescientos kilos', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL),
(11, '46', 'Bolsa a granel de cincuenta libras', NULL, 'Las unidades marcadas como borradas en el catálogo internacional de UNECE, serán retenidas indefinidamente en las listas de códigos. En su caso, estas unidades podrán ser reinstalado a través del proceso de mantenimiento.', '13/08/2017', NULL, NULL);

HTML

<div class="form-group">
                            <span class="input-group-addon">Unidad De Medida SAT</span>


                            <select class="form-control input-lg nuevoUnidades select2 " id="nuevoUnidades" name="nuevoUnidades" required style="width: 100%;"> 

                                <option value="">Selecionar unidades</option>



                            </select>


                        </div>

<script src="vistas/js/productos.js"></script>

JAVASCRIPT


// TRAE EL CODIGO DE LAS UNIDADES 
$('.nuevoUnidades').select2({
  ajax: {
    url: 'ajax/autocompletarUnidades.php',
    dataType: 'json'
    // Additional AJAX parameters go here; see the end of this chapter for the full code of this example
  }
});

AJAX


<?php

require_once "../modelos/unidadMedidasSAT.modelo.php";


if(isset($_GET["term"])){
    $buscar = "%".$_GET["term"]."%";
}else{
    $buscar ="%%";
}


$datos = ModeloUnidadMedidasSAT::mdlMostrarAjax("unidadMedidasSAT", $buscar);


//echo json_encode($datos);



$jsonVariable =' { "results": [';

foreach ($datos as $key => $value) {
    
    $jsonVariable .=' {
      "id": '.$value["id"].',
      "text": "'.$value["text"].'"
    },';
    
    
}
      $jsonVariable = substr($jsonVariable, 0, -1);


$jsonVariable .= ' ]
}';

echo $jsonVariable; 

Modelo


<?php
require_once "conexion.php";

Class ModeloUnidadMedidasSAT {



   
     /* =============================================
     MOSTRAR UNIDADMEDIDASSAT
      ============================================= */

    Static Public Function mdlMostrarAjax($tabla, $buscar) {

       If ($buscar != Null) {

           $stmt = Conexion:: conectar() -> prepare( "Select id
,Nombre as text

           From unidadMedidasSAT a WHERE Nombre like :buscar  limit 10");  

             $stmt -> bindParam( ":buscar" , $buscar, PDO::PARAM_STR);

           Try {
               $stmt -> execute();

                Return $stmt -> fetchAll();
           } Catch (PDOException $e) {

               $arr = $stmt -> errorInfo();
                $arr[3] = " Error ";

               If ($e -> getMessage() == 23000) {
                   $mensaje = " El registro esta duplicado, Favor de checar el numero de nomina ";
                   Return $mensaje;
               } Else {
                  Return $arr[2];
              }
           }
           
           
       } Else {

           $stmt = Conexion:: conectar() -> prepare("Select id
,Nombre as text

           

           From unidadMedidasSAT a limit 10 "); 

           $stmt -> execute();

           Return $stmt -> fetchAll();
       }


       $stmt -> close();

        $stmt = Null;
   }


}

Archivo Conexión



<?php
include_once "../configuracion.php";

include_once "../../../configuracion.php";

include_once "../../configuracion.php";
class Conexion{

	static public function conectar(){

		
            try { 
                
                $link = new PDO("mysql:host=".BD_HOST.";dbname=".BD_NOMBRE."",
                    BD_USUARIO,
                   BD_CONTRA);
                }
            catch (PDOException $e){
                
                
                if($e->getCode()==2002){
                    echo '<!DOCTYPE html> <html lang=&quot;es&quot;>      
                    <head> 		
                    <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /> 		
                    <meta name=&quot;description&quot; content=&quot;Esta Tienda está desarrollada con PrestaShop&quot; />         
                    <style>   s          ::-moz-selection {background: #b3d4fc; text-shadow: none;}             ::selection {background: #b3d4fc; text-shadow: none;}        
                    html {padding: 30px 10px; font-size: 16px; line-height: 1.4; color: #737373; background: #f0f0f0;                
                    -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;}             html,             
                    input {font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;}             body 
                    {max-width:700px; _width: 700px; padding: 30px 20px 50px; border: 1px solid #b3b3b3;                 
                    border-radius: 4px;margin: 0 auto; box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;                 background: #fcfcfc;}            
                    h1 {margin: 0 10px; font-size: 50px; text-align: center;}             h1 span {color: #bbb;}            
                    h2 {color: #D35780;margin: 0 10px;font-size: 40px;text-align: center;}             h2 span {color: #bbb;font-size: 80px;}            
                    h3 {margin: 1.5em 0 0.5em;}             p {margin: 1em 0;}             ul {padding: 0 0 0 40px;margin: 1em 0;}             .container 
                    {max-width: 380px;_width: 480px;margin: 0 auto;}             input::-moz-focus-inner {padding: 0;border: 0;}         </style>     </head>     
                    <body>         <div class=&quot;container&quot;>             <h2><span>500</span> Error interno del servidor</h2>             
                    <p>¡Vaya! Algo salió mal.<br /><br />No se pudo conectar con la base de datos, revise los datos de conexion.</p>         
                    </div>     
                    </body> 
                    </html>';
                }
                
                
                return "ERROR DE CONEXION";
             
            }

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

		return $link;
                
        
	}

}

MAS CORRECCIONES Y AGRADECIMIENTOS 26

Saludos camaradas, en este vídeo se verán algunas correcciones al sistema así como un nuevo panel para los colaboradores Saludos y esperemos que les sirva

Ver demo en linea
http://pos.cesarsystems.com.mx/

CORRECCIÓN EN EL REPORTE DE VENTAS POR FECHA 14

En este vídeo se vera como se hace la corrección del reporte de ventas con productos
Les dejo el fuente en los comentarios
Ver demo en linea
http://pos.cesarsystems.com.mx/
Pueden seguirme en las siguientes redes sociales
VK
https://vk.com/id543521033
FACEBOOK
https://www.facebook.com/rasec555
TWITTER
https://twitter.com/JulioLeyvaR
CHANNEL TELEGRAM
https://telegram.me/CesarSystems
PAGINA WEB
https://cesarsystems.com.mx
MOVIL
+52 6688612348

GITHUB EN NETBEANS 12 Clone, Push, Pull

Bien ahora veremos el uso del Git GitHub , las cuales nos darán muchas ventajas significativas en contraste a como guardábamos los cambios antes, continuación veremos las ventajas.

QUITAR EL NUMERO DE RENGLON DEL CODIGO FUENTE CON SUBLIME Y EXPRESIONES REGULARES

INTRODUCCIÓN

Es muy común que cuando volvemos a ver algún fuente que subimos antiguamente en nuestro blog y o necesitamos de nuevo algunas veces esta con el numero de renglón y cuando el código es muy extenso es muy difícil quitar uno a uno el numero de renglón.

OBJETIVO

Remplazar el numero de renglón por un espacio en blanco usando las expresiones regulares en sublime

CARGANDO MILLONES DE REGISTROS EN UNA TABLA VIA AJAX Y SERVER SIDE #56

Buenas tardes amigos, les dejo este video en donde vemos como meter 3 millones de registros a la tabla bitácora para que posteriormente hagamos pruebas para leer rápidamente la información mediante server side

COMO METER RAPIDAMENTE 3 MILLONES DE REGISTROS A UNA TABLA MYSQL PARA HACER PRUEBAS #55

Buenas tardes amigos, les dejo este video en donde vemos como meter 3 millones de registros a la tabla bitacora para que posteriormente hagamos pruebas para leer rápidamente la información mediante server side

ERROR AL GUARDAR EL PRODUCTO DESDE LA VENTA, NO SE ENCUENTRA LA CLASE #42

Buenos días amigos,les dejo este video de una corrección en el punto de venta, que es al guardar el producto al hacer la venta

Saludos y espero que les sirva

Página 8 de 8

Creado con WordPress & Tema de Anders Norén