Foros del Web » Programando para Internet » PHP »

LIMIT ayuda !!

Estas en el tema de LIMIT ayuda !! en el foro de PHP en Foros del Web. Tabla:Empresas Empresa | Telefono | Ciudad | Acciones | ------------------------------------------------------------------------------ | empresa_1 | 57-88988 | Bucaramanga | borrar modificar empresa_2 | 57-75988 | Bucaramanga | ...
  #1 (permalink)  
Antiguo 03/11/2007, 13:27
 
Fecha de Ingreso: octubre-2007
Mensajes: 54
Antigüedad: 16 años, 6 meses
Puntos: 0
LIMIT ayuda !!

Tabla:Empresas

Empresa | Telefono | Ciudad | Acciones |
------------------------------------------------------------------------------ |
empresa_1 | 57-88988 | Bucaramanga | borrar modificar
empresa_2 | 57-75988 | Bucaramanga | borrar modificar
------------------------------------------------------------------------------ |
1 2 3... back next

En la consulta se muestran muchos datos y solo quiero que se muestren 8, para eso se que debo usar el SELECT asi ....... LIMIT 0,8 y es solo que no se como hacer si por ejemplo son 20 filas la que tiene esa consulta, y se puedan mostrar de a 8 registros y por medio de unos controles de next y back se puedan mirar los 20 registros !!!, o que mejor aun mostrara que son 3 pagina de a 8 registros por pagina....


Las ideas que tengo son hacer la consulta de todos los registros, y determinar cuantas filas tiene esa consulta. pero no se como hacer los controles de back y next y que se muestren cuantas paginas son....

  #2 (permalink)  
Antiguo 03/11/2007, 17:29
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: LIMIT ayuda !!

eso se llama paginacion la cual la puedes configurar por la cantidad de registros que quieres por pagina pues busca en el foro debe haber algun codigo para hacerla son faciles
  #3 (permalink)  
Antiguo 03/11/2007, 22:44
 
Fecha de Ingreso: octubre-2007
Ubicación: Buenos Aires
Mensajes: 9
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: LIMIT ayuda !!

ESte es un ejemplo de paginacion....

tienes que cambiar los queries por los tuyos y los datos de conexion a la base de datos.

Espero que te sirva :

Código PHP:
<?php
    
@mysql_connect($localhost$user$password) or die("ERROR--CAN'T CONNECT TO SERVER");
    @
mysql_select_db($database) or die("ERROR--CAN'T CONNECT TO DB");
    
$limit          25;
    
$query_count    "SELECT count(*) FROM table";
    
$result_count   mysql_query($query_count);
    
$totalrows      mysql_num_rows($result_count);
    if(empty(
$page)){
        
$page 1;
    }
    
$limitvalue $page $limit - ($limit);
    
$query  "SELECT * FROM table LIMIT $limitvalue, $limit";
    
$result mysql_query($query) or die("Error: " mysql_error());
    if(
mysql_num_rows($result) == 0){
        echo(
"Nothing to Display!");
    }
    
$bgcolor "#E0E0E0"// light gray
    
echo("<table>");
    while(
$row mysql_fetch_array($result)){
        if (
$bgcolor == "#E0E0E0"){
            
$bgcolor "#FFFFFF";
        }else{
            
$bgcolor "#E0E0E0";
        }
    echo(
"<tr bgcolor=".$bgcolor.">n<td>");
    echo(
$row["users"]);
    echo(
"</td>n<td>");
    echo(
$row["usersID"]);
    echo(
"</td>n</tr>");
    }
    echo(
"</table>");
    if(
$page != 1){
        
$pageprev $page--;
        echo(
"<a href=\"$PHP_SELF&page=$pageprev\">PREV".$limit."</a> ");
    }else{
        echo(
"PREV".$limit." ");
    }
    
$numofpages $totalrows $limit;
    for(
$i 1$i <= $numofpages$i++){
        if(
$i == $page){
            echo(
$i." ");
        }else{
            echo(
"<a href=\"$PHP_SELF?page=$i\">$i</a> ");
        }
    }
    if((
$totalrows $limit) != 0){
        if(
$i == $page){
            echo(
$i." ");
        }else{
            echo(
"<a href=\"$PHP_SELF?page=$i\">$i</a> ");
        }
    }
    if((
$totalrows - ($limit $page))> 0){
        
$pagenext $page++;
        echo(
"<a href=\"$PHP_SELF?page=$pagenext\">NEXT".$limit."</a>");
    }else{
        echo(
"NEXT".$limit);
    }
    
mysql_free_result($result);
?>
  #4 (permalink)  
Antiguo 04/11/2007, 00:31
 
Fecha de Ingreso: octubre-2007
Mensajes: 54
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: LIMIT ayuda !!

Gracias por el código esta interesante, lo de la paginacion lo entiendo el problema que tengo... es que todo lo estoy realizando en un solo archivo que se llama buscar.php

En él hay un formulario que tiene dos select. y grupo de opciones type radio, ese formulario utiliza el metodo "POST" y action="<?php echo $_SERVER['PHP_SELF'];?>" Lo que quiero paginar es el resultado de esa consulta hecha por el formulario pero cuando accedo al enlace NEXT los datos del POST se pierden y aparece el siguiente Error SQL:Query was empty y creo que se debe a que vuelvo acceder a la misma pagina pero los datos del POST ya no existen !!!!

El código esta mas o menos así:
Código PHP:
<html>
<head>
<body>
<?php require_once('Connections/sts_local.php'); ?>
<?php
$pag
=$_SERVER['PHP_SELF'];  // el nombre y ruta de esta misma página.
mysql_select_db($database_sts,$link);
$sql_bus_empresa "SELECT ciudad FROM empresas GROUP BY ciudad";
$bus_empresa mysql_query($sql_bus_empresa$link);
$inicio=0$final=4;
?>
<!--FORMULARIO PARA CONSULTA-->
<form action="<?php echo $pag.'?accion=buscar';?>" method="post" name="form_empresa">
<table><tbody>
<tr><td><label>Ciudad:</label><select name="ciudad"><?php while ($row_bus_empresa mysql_fetch_assoc($bus_empresa)) { ?>
        <option value="<?php echo $row_bus_empresa["ciudad"]?>"><?php echo $row_bus_empresa["ciudad"]?></option>
        <?php }?></select></td>
    <td><label>Tipo:</label><select name="tipo" class="txt_tab" id="tipo">
                              <option value="p">Proveedor</option><option value="c">Cliente</option>
                              </select></td></tr>
<tr><td><input name="Submit_bus_empresa" type="submit" value="Enviar" /></td></tr>
</tbody></table>
</form>
<?php
if ($_GET['accion']=="buscar")
    {
// Procesar form EMPRESA
    
$a=$_POST['ciudad'];
    
$b=$_POST['tipo'];
    
$sql_buscar "SELECT Id_empresa, empresa, telefax, ciudad, tipo FROM empresas WHERE ciudad='$a' AND tipo='$b'";
    
$buscar mysql_query($sql_buscar$link)or die("Error SQL:".mysql_error());
    
$filas=mysql_num_rows($buscar);
    if (!isset(
$_GET['navegacion']))
        {
        
$sql_buscar.=" LIMIT $inicio,$final";
        
$buscar mysql_query($sql_buscar$link)or die("Error SQL:".mysql_error());
        }
    if(
$_GET['navegacion']=="Next")
        {
        
$inicio=4$final=8;
        
$sql_buscar.=" LIMIT $inicio,$final";
        
$buscar mysql_query($sql_buscar$link)or die("Error SQL:".mysql_error());
        }
     
?>
    <table border="1">
        <tr><th scope="col">Empresa</th>
            <th scope="col">Telefono</th>
            <th scope="col">Ciudad</th>
            <th scope="col">Tipo</th></tr>
        <?php while($row_buscar mysql_fetch_assoc($buscar)) { ?>
           <tr><td><?php echo $row_buscar["empresa"]?></td>
            <td><?php echo $row_buscar["telefax"]?></td>
            <td><?php echo $row_buscar["ciudad"]?></td>
            <td><?php echo $row_buscar["tipo"]?></td>
        </tr><?php }?>
    </table>
<a href="<?php echo $pag.'?accion=buscar&navegacion=Next';?>">next</a>
<?php }?>
</body>
</html>
En el anterior archivo cuando se accede al enlace Next no muestra ningun resultado y creo que es debido a que las variables tipo POST ya no estan.....

Se que hasta ahora no he aplicado lo de paginacion pero pienso que para poderla hacer lo primordial es que funcione este script

Última edición por fa61an; 04/11/2007 a las 01:16
  #5 (permalink)  
Antiguo 04/11/2007, 02:07
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: LIMIT ayuda !!

Es probable que ya no esten porque no estas poniendo ningun input value=tusDatos...

Trata poniendo un input hidden con los datos de busqueda y que cada vez que apreten next se envie el formulario nuevamente (con javascript o algo asi)

Si no pon los datos en Get y en el link Next llevalos de nuevo ;)

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #6 (permalink)  
Antiguo 04/11/2007, 08:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 54
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: LIMIT ayuda !!

Ya había intentado hacerlo con el método GET pero paso lo mismo y me funciono, y con los inputs Hidden pienso que también seria los mismo, lo de JavaScript me suena, tendré que buscar como guardar las variables $a y $b, que se reciben con el método POST....

Si alguien sabe le agradezco

Edicion: hice lo siguente y funciono

Código PHP:
session_start(); 
$_SESSION['a']=$_POST['ciudad']; 
$_SESSION['b']=$_POST['tipo']; 
$a=$_SESSION['a'];
$b=$_SESSION['b'
Para que al ejecutar no se muestre un Waring colocar sesion Start(); antes de la etiqueta HTML asi:

Código PHP:
<?php session_start(); ?>
<html>
<head>
......................

Última edición por fa61an; 04/11/2007 a las 09:49
  #7 (permalink)  
Antiguo 04/11/2007, 16:07
 
Fecha de Ingreso: octubre-2007
Mensajes: 54
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: LIMIT ayuda !!

Como ya habia escrito antes ya pude guardar las variables POST utilizando sesiones ahora me encuentro haciendo lo de paginacion que es el objetivo final
y resulta que cuando ejecuto esta consulta en el phpMyAdmin
Código:
SELECT Id_empresa, empresa, telefax, ciudad, tipo
FROM empresas
WHERE ciudad = 'bucaramanga'
LIMIT 2 , 4
me entrega los registro desde el 3 hasta al 6... estoy entiendo mal el LIMIT ??? o es que el primer valor del LIMIT es en donde comienza y otro valor son los registros a mostrar ?????
  #8 (permalink)  
Antiguo 04/11/2007, 16:25
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: LIMIT ayuda !!

El primer valor del LIMIT es en donde comienza y el otro valor son los registros a mostrar

por ej, para ver los primeros 10 registros hay que usar LIMIT 0, 10
  #9 (permalink)  
Antiguo 06/11/2007, 11:50
 
Fecha de Ingreso: octubre-2007
Mensajes: 54
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: LIMIT ayuda !!

Ok gracias !!!! asi lo estoy realizando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:43.