1. Con una cuenta podrás:

    • Publicar preguntas y pedir ayuda
    • Crear tutoriales
    • Acceder a contenido privado
    • Convertirte en un Héroe de la web
    Cerrar notificación
  2. Eres nuevo en la comunidad y necesitas ayuda?
    Sigue estos pasos y recomendaciones antes de publicar tu duda:
    Cerrar notificación

Tutorial Mostrar Posts Aleatorios[PHP/MYSQLI]

Tema en 'PHP y MySQL' comenzado por AngelKrak, 21 de Diciembre de 2016.

  1. AngelKrak

    AngelKrak Miembro conocido

    Se incorporó:
    29 de Abril de 2015
    Mensajes:
    1.106
    Me gusta recibidos:
    490
    Puntos de trofeos:
    83
    Género:
    Hombre
    Ocupación:
    Freelancer
    Localización:
    Guadalajara
    Página web:
    [​IMG]
    Hola Heroes, ya tengo algo de tiempo sin Programar asi que esta vez les traigo un Tutorial de como hacer Posts Aleatorios ya sea mostrándolos o mediante un link.
    El Método que yo use es extraerlos de la Base de Datos en un Array y con la Funcion mt_rand los ordeno aleatoriamente.

    CAPTURAS
    upload_2016-12-21_0-15-36.png

    upload_2016-12-21_0-19-18.png

    Primero que Nada yo uso una Clase para la Conexion y para Agregar los Posts, La cual es la siguiente:
    PHP:
    <?php
    header('Content-type: text/html; charset=utf-8');

    // My database Class called myDBC
    class myDBC {
        // our mysqli object instance
        public $mysqli;
        // Class constructor override
        public function __construct() {
            $this->mysqli = new mysqli('localhost', 'root', '', 'RandomPost');
            if ($this->mysqli->connect_errno) {
                echo "Error MySQLi: ("&nbsp. $this->mysqli->connect_errno.") " . $this->mysqli->connect_error;
                exit();
            }
            $this->mysqli->set_charset("utf8");
        }
        // Class deconstructor override
        public function __destruct() {
            $this->CloseDB();
        }
        // runs a sql query
        public function runQuery($qry) {
            $result = $this->mysqli->query($qry);
            return $result;
        }
        // Close database connection
        public function CloseDB() {
            $this->mysqli->close();
        }

        public function agregarPost($titulo, $contenido) {
          $this->mysqli->set_charset("utf8");
          $sql = "INSERT INTO posts (titulo, link, contenido) VALUES ('$titulo', '$titulo', '$contenido')";
          $result = $this->mysqli->query($sql);
          $id = $this->mysqli->insert_id;
          header("Location: ../id/$id");
        }
    } // Termina la Clase
    ?>
    Despues Para Invocar la Clase hacemos un Require Primero y despues el Codigo para invocar la Clase y extraer los posts
    PHP:
    <?php
    require 'php/myDBC.php';

    $clase = new myDBC();
    $Query = $clase->runQuery("SELECT * FROM posts");
    while ($get = $Query->fetch_array(MYSQLI_BOTH)) {
      $a[] = $get['id'];
    }
    $RandomFilas = $a[mt_rand(0, count($a) - 1)];
    $GetFila = $clase->runQuery("SELECT * FROM posts WHERE id = $RandomFilas");
    $post = $GetFila->fetch_array(MYSQLI_BOTH);
    ?>
    Aqui hare una Breve Explicación del Codigo.
    Primero, hacemos un Require para agregar el codigo de la Clase.
    Segundo, Invocamos la Clase en una Variable para posteriormente llamarla en otras funciones.
    Tercero, Ejecutamos la Funcion de Query para Seleccionar todos los Posts y Posteriormente en un While Extraemos los ID de los Posts en un Array.
    Cuarto, Hacemos una Variable para Ordenar Aleatoriamente los Posts guardado en el array mediante la funcion mt_rand() donde hacemos un conteo de los posts guardados en el array con la funcion count() y le restamos un numero al conteo.
    Quinto, Ejecutamos la Query para Mostrar el Post que se eligio aleatoriamente.
    Sexto, Obtenemos las Filas del Post Aleatorio Elegido para mostrarlo despues.

    Ya lo unico que falta es mostrar el contenido guardado en la base de datos(el Titulo del Post o el Contenido) para eso el codigo es:
    Código (Text):
    <?php
      echo $post['titulo'];

      echo $post['contenido'];
    ?>
    Hasta ahi ese es el codigo para mostrar un Post Aleatorio mostrando su Contenido y Titulo del Post.
    Ahora seguimos con el codigo para mostrar un enlace de un post aleatorio

    El Codigo es Sencillo y para eso se ocupa usar de nuevo la Funcion mt_rand()
    PHP:
    <a class="item" href="../id/<?php $RandomFilas = $a[mt_rand(0, count($a) - 1)]; echo $RandomFilas; ?>">
        Ir a un Post Aleatorio
      </a>
    para eso yo use .htaccess(urls amigables) y lo que hace ese codigo es agregar un enlace haciendo de nuevo la Ordenacion de los Post Aleatorios que se extrajeron de la Base de Datos y despues se muestra.

    Para eso si quieren mostrar solo un link aleatorio, este es el codigo
    PHP:
    <?php
    require 'php/myDBC.php';

    $clase = new myDBC();
    $Query = $clase->runQuery("SELECT * FROM posts");
    while ($get = $Query->fetch_array(MYSQLI_BOTH)) {
      $a[] = $get['id'];
    }
    ?>

    <a class="item" href="../id/<?php $RandomFilas = $a[mt_rand(0, count($a) - 1)]; echo $RandomFilas; ?>">
        Ir a un Post Aleatorio
      </a>
    Demo
    http://randomposts.hol.es/

    Descarga
    https://mega.nz/#!XUtUyIAa!tWDgQ2Uf_GYRbg6yB8Bmg_adRkZsTNQUeTSwEVDYEm0
     
  2. Maddenamy

    Maddenamy Miembro conocido

    Se incorporó:
    9 de Enero de 2015
    Mensajes:
    860
    Me gusta recibidos:
    483
    Puntos de trofeos:
    63
    Ocupación:
    Estudiante
    Localización:
    México
    Página web:
    Bueno, esta bien, buen aporte. :)

    Aunque es algo que con una simple query se puede hacer y es más óptimo. :rolleyes:
     
  3. AngelKrak

    AngelKrak Miembro conocido

    Se incorporó:
    29 de Abril de 2015
    Mensajes:
    1.106
    Me gusta recibidos:
    490
    Puntos de trofeos:
    83
    Género:
    Hombre
    Ocupación:
    Freelancer
    Localización:
    Guadalajara
    Página web:
    pero segun entendi usa muchos recursos esa funcion RAND()
     

Comparte esta página