Foros del Web » Programando para Internet » PHP »

Mensajes aleatorios que no se repitan sacados de una base de datos

Estas en el tema de Mensajes aleatorios que no se repitan sacados de una base de datos en el foro de PHP en Foros del Web. Buenas a ver si me pueden ayudar. Tengo un código PHP para mandar mensajes aleatorios desde una base de datos MySQL, esto lo estoy usando ...
  #1 (permalink)  
Antiguo 21/02/2013, 12:21
 
Fecha de Ingreso: febrero-2013
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Mensajes aleatorios que no se repitan sacados de una base de datos

Buenas a ver si me pueden ayudar.

Tengo un código PHP para mandar mensajes aleatorios desde una base de datos MySQL, esto lo estoy usando para una cuenta en twitter, al cosa es que necesito que no se repita hasta llegar a completar toda la lista de frases, y ahi empezar de nuevo y se pueda repetir, este es el codigo que tengo.

Código PHP:
<?php

// Requiere la libreria de twitter y las llaves (tokens) y el archivo de configuración

require_once 'twitter.php';
require_once 
'keys.php';
require 
"config.php";


// Crear una nueva instancia

$twitter = new Twitter($consumerKey$consumerSecretKey);
// Setear tokens
$twitter->setOAuthToken($oAuthToken);
$twitter->setOAuthTokenSecret($oAuthTokenSecret);

// Verificar credenciales
$user $twitter->accountVerifyCredentials();


/* El código para las frases */

mysql_select_db($based$conexion);

$sql "SELECT * FROM cine";  // sentencia sql
$result mysql_query($sql);
$numero mysql_num_rows($result); // obtenemos el número de filas

srand ((double) microtime() * 1000000);  //Introducimos la "semilla" para generar aleatorios
$aleatorio rand(1,47);    //(mínimo=1,máximo=número de filas);



$queEmp "SELECT frase FROM cine where ID='".$aleatorio."'";
$resEmp mysql_query($queEmp$conexion) or die(mysql_error());
$totEmp mysql_num_rows($resEmp);

if (
$totEmp0) {

   while (
$rowEmp mysql_fetch_assoc($resEmp)) {

$mensaje $rowEmp['frase'];

  }

}

/* FIN FIN */


// Enviar
$response $twitter->statusesUpdate($mensaje);
//echo $mensaje;
?>
Realmente no se mucho de PHP, cosas muy básicas, este código lo saque de una guía para hacer un bot que publicara mensajes aleatorios en twitter. Saludos.
  #2 (permalink)  
Antiguo 21/02/2013, 13:13
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Mensajes aleatorios que no se repitan sacados de una base de datos

No entiendo mucho de twitter y el funcionamiento con PHP... imagino que tienes un plugging que te extrae los mensajes.. ahora bien, una pregunta...

Te trae este código los mensajes que quieres, por mas que no sea en el orden que esperas?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 21/02/2013, 15:18
 
Fecha de Ingreso: febrero-2013
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Mensajes aleatorios que no se repitan sacados de una base de datos

Cita:
Iniciado por loncho_rojas Ver Mensaje
No entiendo mucho de twitter y el funcionamiento con PHP... imagino que tienes un plugging que te extrae los mensajes.. ahora bien, una pregunta...

Te trae este código los mensajes que quieres, por mas que no sea en el orden que esperas?
Plugging? no a ver... para escribir un mensaje en twitter simplemente tengo que tener la librería de twitter que se descarga desde una página, la cual sería ''twitter.php'', en la misma pagina de twitter puedes crear aplicaciones, estas aplicaciones traen una especia de codigo de autentificacion con el cual ejecutando codigos PHP puedes escribir mensajes a su plataforma, lo que yo tengo es un simple bot, que escribe las frases que tengo almacenadas en una base de datos MySQL a twitter ejecutando el script php con cron jobs, si no me explico aqui está la guía de donde saque todos los codigos.. http://entretecnologia.blogspot.com/2012/08/creando-un-bot-que-publique-frases.html

Ahora bien yo lo que necesito es que con el código que ya les mostré (que ya está aleatorio y demas) no repita los mensajes hasta completar el ciclo de TODA la lista de frases (es decir si yo tengo una lista de frases con 47 frases, que no las repita hasta haber publicado las 47 y de esta manera vuelva a empezar desde la 1, todo de manera aleatoria).

Me explico?
  #4 (permalink)  
Antiguo 22/02/2013, 05:59
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Mensajes aleatorios que no se repitan sacados de una base de datos

Guarda todas las ID en un array, después generas un nuevo ID con el rango de items dentro del array, cuando salga el nuevo ID tomas el valor del indice indicado, luego borras el indice y vuelves a acomodar los items en el array, así cada vez generas un ID con el numero exacto de items dentro del array y así te aseguras que no se repita y que el ID generado salga rapidamente, para que se entienda mejor...

Código PHP:
Ver original
  1. <?php
  2.  
  3. //obtienes TODOS los registros de tu base de datos la 1ra vez y los guardas en un array, este después
  4. //lo puedes guardar en una sesión o en un archivo, yo que se...
  5. $array = array(1,2,3,4,5,6,7,8,9,0);
  6.  
  7. $indice = rand(0,count($array));
  8. $valor = $array[$indice];
  9. unset($array[$indice]);
  10. sort($array);
  11.  
  12. //guardas el array con el item borrado...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: mensajes, mysql, select, sql
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 22:25.