Comunidad de diseño web y desarrollo en internet online

Realizar una busqueda en un array por dos campos

Citar            
MensajeEscrito el 30 Nov 2015 10:20 pm
Hola a tod@s
Mis conocimientos en php de momento son muy básicos, así que a ver si me podéis echar una mano.
Tengo un array con varios campos, asi que tengo un input donde escribo un texto y me hace la búsqueda en el campo nombre $valor[1] y tengo unos enlaces en donde al pinchar me tiene que hacer la búsqueda en el campo cargo $valor[0] así que he puesto este if

Código PHP :

         if ($t == $_POST['TxtBuscar']) {         
             $cadena = $valor[1];
         } else if ($t == $_GET['cargo']) {         
            $cadena = $valor[0];
      }   

para que cadena tenga un valor u otro en función de que la variable $t venga del input o de los enlaces y la búsqueda la hace bien pero el problema está en la paginación, porque al paginar pierde la variable $t y me dice que no se han encontrado resultados, aquí os pongo el código completo
index.php

Código PHP :

<?php

     include_once 'array.php';
     include_once 'paginar.php';

     if (isset($_GET['p']))
       $p = $_GET['p'];
     else
       $p=1;

     $t = '';
     if (isset($_GET['t']))
         $t = $_GET['t'];
     else if(isset($_POST['TxtBuscar']))
         $t = $_POST['TxtBuscar'];
     else if(isset($_GET['cargo']))
         $t = $_GET['cargo'];

 ?>

Código HTML :

 <form action="index.php" method="post">
    <input type="text" name="TxtBuscar" size="22" maxlength="150">
   <input type="submit" value="Buscar">
 </form>

Código PHP :

  <?php
    
    
     if (isset($t) && !empty($t))
     {
         
   $coincidencias = array();
         foreach($datos as $valor) {
                    
          if ($t == $_POST['TxtBuscar']) {
         
             $cadena = $valor[1];
         } else if ($t == $_GET['cargo']) {         
            $cadena = $valor[0];
         }       
          
          
             if($t !== false){       
                 $coincidencias[] = $valor;             
             }
         }
     }
    
     else
         
       $coincidencias = $datos;
       
       $d = (count($datos));
                   
         
 ?>

 <?php
 
      //Aqui pongo el número de elementos que quiero que aparezca por página, en este caso 3
     paginar($coincidencias, 3, $p, $t, $d);
    
 ?>

El código de paginación está en otro archivo paginacion.php

Por pedromir

29 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 01 Dic 2015 01:31 pm
Guárdate el valor de la variable $t en una variable de sesión para no perderlo entre páginas de la paginación.

Por DriverOp

Claber

2510 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Dic 2015 07:00 pm
Pero si la búsqueda la hago por un campo sólo, o sea, quito el if y busco sólo por el campo $valor[1] ya sea utilizando el input o los enlaces y en el archivo paginar.php en el enlace pongo el nombre para que me busque por el mismo campo que con el input $valor[1] la paginación me funciona perfectamente
paginar.php

Código PHP :

echo "<div class=\"codigo\"><a href=\"index.php?codigo=Antonio\">Nombres</a></div>";

Por pedromir

29 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 04 Dic 2015 08:15 am
Y no podría utilizar un if para comprobar si los datos se reciben por un POST y si es así, cadena tiene $valor[1] y si se recibe a través de un GET, o sea, a través del enlace, cadena tiene $valor[0] y por tanto realizar la búsqueda en un campo o en otro, sería algo así:

Código PHP :

    
           if(isset($_POST['TxtBuscar']))          
           $t = $_POST['TxtBuscar'];
           $cadena = $valor[1];

                if(isset($_GET['codigo'])){
             
           $cadena = $valor[0];


Lo he probado y la búsqueda a través del input funciona perfectamente, pero a través del enlace, la búsqueda la hace bien, pero cuando pinchas en siguiente pierde la variable y vuelve a hacer la búsqueda en el $valor[1] que corresponde al input y por tanto me dice que no se han encontrado resultados

Por pedromir

29 de clabLevel



 

mozilla

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.