Return to Snippet

Revision: 56600
at April 4, 2012 06:51 by rickyslow


Initial Code
#Funcion para paginar resultados con condiciones
#opciones:
#$where = array(array(campo_bd => "campo_1", condicion => '=', dato => '1234'),array(campo_bd => "campo_2", condicion => 'LIKE', dato => '1234'));
#$campos = array('campo_1','campo_2','campo_3','campo_4');
#autor: Luis Jofre G.
function paginarResultados($tabla,$where,$pagina,$porPagina,$btn_inicio,$btn_final,$numeros,$campos,$conn)
{
	echo '<input type="hidden" id="paginaHidden" value="'.$pagina.'" />';
	$start = $pagina * $porPagina;
	if($pagina == 0){ $pagina = 1; }
	
	#consulta obtener datos
	$query_pag_data = "SELECT * FROM ".$tabla."";
	
	#si existen condiciones se concatenan
	if(count($where)>1)
	{
		$pasada = 0;
		foreach($where as $condiciones)
		{
			if($pasada == 0)
			{
				$query_pag_data .=" WHERE ".$condiciones["campo_bd"]." ".$condiciones["condicion"]." '".$condiciones["dato"]."'";
			}
			elseif(count($where) > 1 && $pasada == 1)
			{
				$query_pag_data .= " AND ".$condiciones["campo_bd"]." ".$condiciones["condicion"]." '".$condiciones["dato"]."'";
			}
			
			$pasada = 1;
		}
	}
	
	$query_pag_data .= " LIMIT $start, $porPagina";
	#echo "\n<br>".__FUNCTION__.": <pre>".$query_pag_data."</pre>".mysql_error($conn);
	$result_pag_data=mysql_query($query_pag_data,$conn)or die("Error en: ".__FUNCTION__." - Funcion obtener datos");
	$count_result=mysql_num_rows($result_pag_data);
	
	#obtener total
	$query_pag_num = "SELECT COUNT(*) AS count FROM ".$tabla; 
	#echo "\n<br>".__FUNCTION__.": <pre>".$query_pag_num."</pre>".mysql_error($conn);
	$result_pag_num=mysql_query($query_pag_num,$conn)or die("Error en: ".__FUNCTION__." - Funcion obtener cantidad total");
					
	$row = mysql_fetch_array($result_pag_num);
	$count = $row['count'];
	$total = (ceil($count/$porPagina)-1);
	
	#validaciones
	if($btn_inicio==true)
	{
		if($pagina>1)
		{
				$btn_inicio_html =  "<li id='1'><<</li>";
				$btn_inicio_html .=  "<li id='".($pagina-1)."'><</li>";
		}
	}
	if($btn_final==true)
	{
		if($total > 0 || $pagina != $total ){ 
			if($pagina<$total)
			{
				$btn_final_html =  "<li id='".($pagina+1)."'>></li>";
				$btn_final_html .=  "<li id='".($total)."'>>></li>"; 
			}
		} 
	}	
	
	if($count_result > 0)
	{
		$listaPaginador = '<tr>
						<td colspan="5" class="listado_blanco"><b>Pagina <span id="Npagina">'.$pagina.'</span> de '.$total.'</b>
						
						<table border="0" cellspacing="0">
						<tr>
						<td><div id="pagination" align="center">
						<ul>'.$btn_inicio_html.'</ul>
						</div>
						</td>
						
						<td><select id="select_paginador">';
							for($i=1; $i<=$total; $i++)
							{
								if($total >= $i)
								{
									if($pagina == $i){ $selected = "selected='selected'"; }else{ $selected = ""; }
									$listaPaginador .= '<option '.$selected.' value="'.$i.'">'.$i.'</option>';
								}
							}
						
						$listaPaginador .= '</select></td>
						
						<td><div id="pagination" align="center">
						<ul>'.$btn_final_html.'</ul>
						</div>
						</td>
						</tr>
						</table>
														
						</td>
						</tr>';
						
	
	$numero = $start+1;
	while ($row = mysql_fetch_array($result_pag_data))
	{
		$Tablapaginado .= '<tr class="listado_plomo">';
			if($numeros == true){
				$Tablapaginado .= '<td>'.$numero.'</td>';
			}
			foreach($campos as $campo){
				$Tablapaginado .= '<td>'.$row[$campo].'</td>';
			}
			$Tablapaginado .= '</tr>';
		$numero++;
	}
	
	}
	else
	{
		$listaPaginador = "";
		$Tablapaginado = "<td colspan=".count($campos)." class='listado_plomo'>No se encontraron resultados</td>";
	}
	
	return compact('Tablapaginado','listaPaginador');
}


#llamar funcion
extract(paginarResultados("cliente",'',$page,15,true,true,true,$campos,$link_perfiles));

#armar tabla
echo '<table border="1" cellspacing="0" valign="top" align="center" width="90%">';
echo $listaPaginador;
echo '<tr>
<td colspan="5" class="titulo_negro" height="32" align="center"> Listado de Clientes</td>
</tr>
<tr class="titulo_negro">
<td width="1%">N°</td>
<td width="5%">Rut</td>
<td width="30%">Nombre</td>
<td width="35%">Dirección</td>
<td width="20%">Giro</td>
</tr>';
echo $Tablapaginado;
echo $listaPaginador;
echo '</table>';

#jquery
 jQuery(document).ready(function ($) {
	function loading_show(){
		$('#loading').html("<img src='../images/loading.gif'/>").fadeIn('fast');
	}

	function loading_hide(){
		$('#loading').html('');
	}
	
	function loadData(page){
		loading_show();
		$.ajax({
			type: "POST",
			url: "datos.php",
			data: "page="+page,
			success: function(data){
				$("#resultadosClientes").ajaxComplete(function(event, request, settings){
					loading_hide();
					$("#resultadosClientes").html(data);
				});
			}
		});
	}
	
	loadData(0); //cargar pagina primera vez
	
	$('#pagination li').live('click',function(){
		var page = this.id;
		loadData(page);
	});
	
	$('#select_paginador').live('change',function(){
		var page = this.value;
		loadData(page);
		$('#select_paginador option[value='+$("#paginaHidden").val()+']').attr('selected', true);
	});
});

Initial URL


Initial Description
paginar resultados con jquery y ajax, permite ingresar condiciones (where, like, =...)
solo se ingresa el nombre de los campos de la base de datos que se desean listar

ver opciones.

Initial Title
paginar resultados con php y jquery ajax

Initial Tags
ajax, php, jquery

Initial Language
PHP