1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Tutorial: Listado de Registros PHP / MySQL

Tema en 'Tutoriales Desarrollo Web' iniciado por elQuique, 25 May 2006.

  1. elQuique

    elQuique Usuario activo

    unpapelito, esta bien lo que comentas y si es posible, sorry por no responder antes.

    Sobre lo de PHP y HTML, tu haces un archivo.php y adentro metes PHP y HTML sin problemas, mira acá las básicas del lenguaje:

    panoptes, gracias por tus comentarios, bienvenido al foro, espero sigas posteando y siguiendo nuestros tutoriales, no se si viste ya los de la web de inmobiliarias o bienes raíces, están acá:

    <a href="http://www.tallerwebmaster.com/Tutoriales-Programacion-Web-con-PHP-y-MySQL-c-9.html" target="_blank">http://www.tallerwebmaster.com/Tutoriales-...-MySQL-c-9.html</a>

    todos tienen un link al foro al final, para evacuar dudas :)
     
  2. Ercik

    Ercik Nuevo usuario

    BUeno pues ya que estamos listando, quisiera saber como sería el caso de que hubieran 1000 registros, y los quiero listar de 20 en 20; algo así como los mails o los resultados del google...
     
  3. elQuique

    elQuique Usuario activo

    Bien, en caso de querer paginar debes crear una nueva variable llamada $pagina para saber la pagina que estas mostrando, esta sera una nueva variable de URL tambien. Y la vas a utilizar para saber que registros seleccionar.

    Lo primero es que obtengamos el numero de pagina, que viene en la url asi:

    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->
    $pagina = 1;&nbsp;&nbsp; // por defecto suponemos que es la pagina 1
    if (isset($_GET['pagina']) && intval($_GET['pagina']) > 1) {&nbsp;&nbsp; // si esta definido el parametro pagina y el numero que contiene es mayor de cero ...
    $pagina = intval($_GET['pagina']);&nbsp;&nbsp; // ... guardaremos ese nuevo numero en la variable $pagina
    }
    <!--c2--></div><!--ec2-->

    con eso sabras el numero de pagina.

    Si es la pagina 1, y vas a mostrar de a 20, estaras comenzando en 0 y muestras los 20 siguiente.

    Si es la pagina 2, y vas a mostrar de a 20, estaras comenzando en 20 y muestras los 20 siguiente.

    Si es la pagina 20, y vas a mostrar de a 20, estaras comenzando en 380 y muestras los 20 siguiente.

    O sea que para cada caso tendras, un inicio que llamaremos $inicio, como calculamos ese inicio asi:

    $inicio = ($pagina-1) * 20;

    veamos los casos mencionados:

    Si es la pagina 1 - 1 = 0, y 0 * 20 = 0, $inicio sera 0.

    Si es la pagina 2 - 1 = 1, y 1 * 20 = 20, $inicio sera 20.

    Si es la pagina 20 - 1 = 19, y 19 * 20 = 380, $inicio sera 380.

    Ahora debemos modificar este SELECT del listado:
    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->
    $tabla = mysql_query("SELECT id, nombre, email FROM usuarios ORDER BY nombre ASC"); // selecciono todos los registros de la tabla usuarios, ordenado por nombre
    <!--c2--></div><!--ec2-->

    para que quede asi:

    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->
    $tabla = mysql_query("SELECT id, nombre, email FROM usuarios ORDER BY nombre ASC LIMIT $inicio, 20"); // selecciono todos los registros de la tabla usuarios, ordenado por nombre PEROOO limito a que comience en $inicio y muestre solo 20.
    <!--c2--></div><!--ec2-->

    O sea utilizas al final de la consulta MySQL la orden LIMIT para establecer el comienzo, cantidad de registros a mostrar :)
     
  4. Ercik

    Ercik Nuevo usuario

    Gracias de hecho... ni idea de la existencia de ASC LIMIT ahí pues me quedadba o haci auna consulta que na que ver con todos los registros asias elQuique :)
     
  5. elQuique

    elQuique Usuario activo

    ojo !!!!
    ASC no tiene nada que ver con LIMIT !!!

    el ASC es del ORDER ;) para decir ORDER BY uncampo ASCendente o DEScendente

    el LIMIT actua solito y sus parametros son inicio y cantidad, o sea LIMIT inicio, cantidad

    y van uno detras de otro en la linea del SELECT de MySQL.

    Igualmente los parametros de SELECT son bastante mas :p

    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->
    SELECT
    [ALL | DISTINCT | DISTINCTROW ]
    [HIGH_PRIORITY]
    [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr, ...
    [INTO OUTFILE 'file_name' export_options
    | INTO DUMPFILE 'file_name']
    [FROM table_references
    [WHERE where_definition]
    [GROUP BY {col_name | expr | position}
    [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_definition]
    [ORDER BY {col_name | expr | position}
    [ASC | DESC] , ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [FOR UPDATE | LOCK IN SHARE MODE]]
    <!--c2--></div><!--ec2-->

    Mas información:
    <a href="http://dev.mysql.com/doc/refman/5.0/es/select.html" target="_blank">http://dev.mysql.com/doc/refman/5.0/es/select.html</a>
     
  6. Ercik

    Ercik Nuevo usuario

    Wow... ya pues verdad... :) Asias Elquique
     
  7. Ercik

    Ercik Nuevo usuario

    Wueno siento molestar, tengo una duda más respecto; tengo una tabla de la cual necesito conocer el lemento mayor de una columna en este caso el último id que se h apuesto, bueno tengo esta consulta: "select max(id) as mayor from propiedades"

    HAsta aquí esta el código:
    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->$tabla=mysql_query("select max(id) as mayor from propiedades");
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while($registro=mysql_fetch_array('$tabla'))
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mayor=$registro['mayor'];<!--c2--></div><!--ec2-->
     
  8. elQuique

    elQuique Usuario activo

    Asi esta bien, igualmente si vas a necesitar solo 1 registro no precisas el while

    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->
    $tabla=mysql_query("select max(id) as mayor from propiedades");
    $registro=mysql_fetch_array('$tabla');
    echo $registro['mayor'];
    <!--c2--></div><!--ec2-->

    o igual puedes ordenarlo escendente por ID y el primero sera el mas alto:

    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->
    $tabla=mysql_query("select id from propiedades ORDER BY id DESC");
    $registro=mysql_fetch_array('$tabla');
    echo $registro['id'];
    <!--c2--></div><!--ec2-->

    :)

    y si el id que quieres saber es le recién insertado es mas fácil porque usas el mysql_insert_id()

    Más info:
    <a href="http://www.php.net/manual/es/function.mysql-insert-id.php" target="_blank">http://www.php.net/manual/es/function.mysql-insert-id.php</a>
     
  9. Ercik

    Ercik Nuevo usuario

    Bueno tengo un problema bien loko que me ha estado sacando d equicio u npoquitín lo admito...

    El caso es que utilizo el mysql_fetch_array y tira un error... Este es el código:

    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->
    function Ver_foto($cn,$id){
    $sql="SELECT COUNT(idpropiedad) as total FROM fotos WHERE idpropiedad=$id";
    $tabla=mysql_query($sql,$cn);
    $registro=mysql_fetch_array('$tabla');
    echo $registro['total'];
    $total=$registro['total'];
    }
    <!--c2--></div><!--ec2-->

    El error sale en la línea dónde utilizo mysql_fetch_array('tabla') y es el siguiente:
    <!--quoteo--><div class='quotetop'>CITA</div><div class='quotemain'><!--quotec-->mysql_fetch_array(): supplied argument is not a valid MySQL result resource in<!--QuoteEnd--></div><!--QuoteEEnd-->

    Gracias de antemano por leer.
     
  10. elQuique

    elQuique Usuario activo

    '$tabla' <<< no va entre comillas
     
  11. Ercik

    Ercik Nuevo usuario

    Con razón, puuuut.... no me di cuenta incluso cuando vi en php.net... Aunque encontré otra forma de lograr lo mismo, asias por despejar las dudas :)...
     
  12. pallmall

    pallmall Nuevo usuario

    Creo que aca es donde debería hacer mi pregunta... sino, pido disculpas de antemano.

    Resulta que tengo tengo una tabla en una base mysql, la tabla tiene aprox 10 campos y unos 200 registros y necesito mostrar un registro a la vez, pero no varios registros en una misma página, sino solamente un registro, seleccionado por medio de la clave principal pasada por url... algo así: <b>productos.php?id=XXX</b> y luego cada campo mostrarlo en celdas de una tabla, como en tu ejemplo.
    Si no es mucho pedir... como tendría que modificar tu código para pasar esa variable por url y que solo me muestre un registro por página?

    Saludos cordiales y gracias por tu valioso aporte
     
  13. elQuique

    elQuique Usuario activo

    Es muy facil, solo debes recibir la variable con $_GET y agregar eso como condicion en el SELECT ... WHERE y en vez de un while para repetir seria un if si lo encuentra, ya que es un solo registro:


    <!--c1--><div class='codetop'>CÓDIGO</div><div class='codemain'><!--ec1-->
    $id = $_GET['id'];&nbsp;&nbsp;// **** SE AGREGA ESTA LINEA PARA OBTENER EL PARAMETRO DE LA URL ****

    $conexion = mysql_connect('localhost', 'userbase', 'topsecret');&nbsp;&nbsp; // se conecta con el servidor

    mysql_select_db('ForoCreativo', $conexion);&nbsp;&nbsp; // selecciona la base de datos

    //**** ACA SE AGREGA EL WHERE PARA FILTRAR ***

    $tabla = mysql_query("SELECT id, nombre, email FROM usuarios WHERE id = '$id' ORDER BY nombre ASC"); // selecciono todos los registros de la tabla usuarios, ordenado por nombre

    // *** ACA SE CAMBIA EL WHILE POR UN IF ****
    if ($registro = mysql_fetch_array($tabla)) {&nbsp;&nbsp;// comienza un bucle que leera todos los registros y ejecutara las ordenes que siguen
    &nbsp;&nbsp;&nbsp;&nbsp;echo 'Numero del Usuario: ' . $registro['id'] . '<br>';&nbsp;&nbsp; // imprime el texto, el valor del numero del campo id y hace un salto de linea
    &nbsp;&nbsp;&nbsp;&nbsp;echo 'Nombre: ' . $registro['nombre'] . '<br>';&nbsp;&nbsp;// imprime el nombre
    &nbsp;&nbsp;&nbsp;&nbsp;echo 'Email: ' . $registro['email'] . '<br>'; // imprime el email
    }&nbsp;&nbsp;// **** fin del if que muestra 1 registro ****

    mysql_free_result($tabla);&nbsp;&nbsp;// libera los registros de la tabla

    mysql_close($conexion); // cierra la conexion con la base de datos
    <!--c2--></div><!--ec2-->

    bienvenido al foro :)
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·