Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/07/2013, 23:30
Avatar de bowiecamaleon
bowiecamaleon
 
Fecha de Ingreso: mayo-2013
Ubicación: Mexico
Mensajes: 15
Antigüedad: 11 años
Puntos: 1
Respuesta: Aporte- Busquedas en PHP & MySQL varios casos

Ahora este lo hice por si el usuario busca entre algunos articulos en especifico ejemplo: entre el registro 40 y 60, solo se mostraran esos registros

Código PHP:
<?php 

include('php/conexion.php'); 
include(
'php/funciones.php'); 

//Evitamos injecciones SQL
$input_arr = array(); 
foreach (
$_POST as $key => $input_arr

  
$_POST[$key] = addslashes(limpiarCadena($input_arr)); 
}
 
$input_arr = array(); 
foreach (
$_GET as $key => $input_arr

  
$_GET[$key] = addslashes(limpiarCadena($input_arr)); 
}


//Asigno un valor NULL a las variables que en un futuro se ocuparan para no probocar un notice.
$criterio="";
$msg="";
$cantidad="";

//Creo un array que contendra los mensajes dependiendo el caso
$mensajes = array(  
        
0=>"<em>Los campo ingresados no son numericos</em>",
        
1=>"<em>El campo inicial no es numerico <br/> Y ademas el campo final es mayor a 100</em>"
        
2=>"<em>El campo inicial no es numerico</em>",
        
3=>"<em>El el campo inicial es mayor a 100 <br/> Y ademas campo final no es numerico</em>",
        
4=>"<em>El campo final no es numerico</em>",
        
5=>"<em>Los dos campos son mayores a 100</em>",
        
6=>"<em>El campo inicial es mayor a 100</em>",
        
7=>"<em>El campo final es mayor a 100</em>",
        
8=>"<em>El campo final es menor al inicial</em>",
        
9=>"<em>Tu busqueda fue un exito estos son los campos</em>",);


/*SELECT *FROM `libros_cien` LIMIT 0 , 30*/
$consulta "SELECT * FROM  `libros_cien`".$criterio;
$ejecutar_consulta $conexion->query($consulta);
/* $fila = $ejecutar_consulta->fetch_assoc(); */
$numero_registros $ejecutar_consulta->num_rows;

  if (isset(
$_GET['rango_btn'])) {

          
$inicia=$_GET['inicia_txt'];
          
$finaliza=$_GET['finaliza_txt'];

          if     (!
is_numeric($inicia) && !is_numeric($finaliza)) {//Si los dos no son numericos.
            
$msg=$mensajes['0'];
        } elseif (!
is_numeric($inicia) && is_numeric($finaliza)) {//Si inicio no es numericos.
                
if ($finaliza>$numero_registros) {//El rango inicial no es numerico y ademas el campo final es mayor a 100.
                    
$msg=$mensajes['1'];
                }else {
//El rango inicial no es numerico y finaliza es menor a 100.
                    
$msg=$mensajes['2'];
                }
        } elseif (
is_numeric($inicia) && !is_numeric($finaliza)) {//Si final no es numerico.
              
if ($inicia>$numero_registros) {//El rango final no es numerico y ademas el campo inicial es mayor a 100.
                
$msg=$mensajes['3'];
             }else {
//El rango final no es numerico y inicial es menor a 100.
                
$msg=$mensajes['4'];
             }
        } elseif (
is_numeric($inicia) && is_numeric($finaliza)) {//Si los dos son numericos se verificaran mas cosas (un if dentro de este ifelse)
            
                          
$inicia round($inicia);//Redondeo inicia.
                          
$finaliza round($finaliza);//Redondeo finaliza.


                  
if     ($inicia>$numero_registros && $finaliza>$numero_registros) {//Si los dos son mayores ha 100.
                          
$msg=$mensajes['5'];
                } elseif (
$inicia>$numero_registros && $finaliza<=$numero_registros) {//Si inicio es mayor y el final no es mayor a 100.
                          
$msg=$mensajes['6'];
                } elseif (
$inicia<=$numero_registros && $finaliza>$numero_registros) {//Si final es mayor y el inicio no es mayor a 100.
                          
$msg=$mensajes['7'];
                } elseif (
$inicia<=$numero_registros && $finaliza<=$numero_registros) {//Si los dos son menores a 100

                        
if ($finaliza<$inicia) {//Si el campo final es menor al inicial 
                          
$msg=$mensajes['8']; 
                        }else{
// Todo esta bien, son numericos menores a 100, y finaliza es mayor a inicia.

                          
$msg=$mensajes['9'];
                          
$correr="si";
                          
// $criterio= "WHERE column_name BETWEEN value1 AND value2;
                          
$criterio=" WHERE `ID` BETWEEN ".$inicia.  " AND " .$finaliza;  
                          
$consulta "SELECT * FROM  `libros_cien`".$criterio;
                          
$ejecutar $conexion->query($consulta);
                          
$numero $ejecutar->num_rows;
                          
                        }
                }
        }

  }

?>

               <p>Numero total de libros: <em><?php echo $numero_registros ?></em></p>
            <form id="rango-busqueda" name="rango_frm" action="rango.php" method="get" autocomplete="off" enctype="application/x-www-form-urlencoded">
                       <label for="inicia">Inicia en: </label>
                       <input type="text"   id="inicia" name="inicia_txt" placeholder="Inidica donde inicia la busqueda" title="Inicia" required/>
                 <label for="finaliza">Finaliza en </label>
                 <input type="text"   id="finaliza" name="finaliza_txt" placeholder="Indica donde finaliza la busqueda" title="Finaliza" required/>
                 <input type="submit" id="rango"  name="rango_btn" value="Buscar"/>
            </form>
            <?php echo $msg.'<br/>'?>
            <hr/>

            <?php 

                 
if (isset($correr) && $correr=="si") { // Todo esta bien, son numericos menores a 100, y finaliza es mayor a inicia.

                          
echo "Son ".$numero" registros a mostrar. <br/>";
                          echo 
'La busqueda incia en: '.$inicia.'<br/>';
                          echo 
'Y finaliza en el registro: '.$finaliza.'<br/>';
                                  echo 
"<table width='100%'>";
                                  echo  
"<tr>";
                                  echo      
"<td>No.</td>";
                                  echo      
"<td>Titulo</td>";
                                  echo      
"<td>Autor</td>";
                                  echo      
"<td>Publicacion</td>";
                                  echo      
"<td>Pais</td>";
                                  echo      
"<td>Idioma</td>";
                                  echo  
"</tr>";
                            
                                while (
$fila $ejecutar->fetch_assoc())
                                {
                                        
$id=$fila['id'];  
                                        
$titulo=$fila['titulo'];
                                        
$autor=$fila['autor'];
                                        
$publicacion=$fila['publicacion'];
                                        
$pais=$fila['pais'];
                                        
$idioma=$fila['idioma'];
                                  echo 
"<tr class='brillo'>";
                                  echo    
"<td>".$id."</td>";
                                  echo    
"<td>".$titulo."</td>";
                                  echo    
"<td>".$autor."</td>";
                                  echo    
"<td>".$publicacion."</td>";
                                  echo    
"<td>".$pais."</td>";
                                  echo    
"<td>".$idioma."</td>";
                                  echo 
"</tr>";
                                };
                                  echo 
"</table>";

                  }

            
?>
            </div>