Foros del Web » Programando para Internet » PHP »

generar nuevos caracteres aleatorios si los generados ya existen en la base de datos

Estas en el tema de generar nuevos caracteres aleatorios si los generados ya existen en la base de datos en el foro de PHP en Foros del Web. Hola, tengo un script que me genera caracteres aleatorios y me los inserta en una base de datos. Actualmente el script genera esos caracteres y ...
  #1 (permalink)  
Antiguo 06/06/2012, 18:09
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 12 años, 5 meses
Puntos: 0
generar nuevos caracteres aleatorios si los generados ya existen en la base de datos

Hola,
tengo un script que me genera caracteres aleatorios y me los inserta en una base de datos.

Actualmente el script genera esos caracteres y revisa si aun no existen en la base de datos. Si los caracteres generados no existen aun en la base de datos, entoces los inserta. Si los caracteres generados ya existen en la base de datos, entonces me dice que esos caracateres ya existen.

Como le puedo hacer para que me genere nuevos caracteres en lugar de que me diga que ya existen.

Aqui les dejo una parte del codigo para que vean como funciona.
Gracias de antemano.
Código PHP:
<?php
include("config.php");
include(
"random.php"); 

//en random.php se encuentra el codigo que genera los carateres aleatorios
//$randomcn es la variable donde se almacenan los caracteres generados

if($query mysql_query("SELECT COUNT(id) FROM $tabla WHERE `imageCN` = '$randomcn'")){
  while(
$row mysql_fetch_assoc($query)){
    
$totalrows $row['COUNT(id)'];
    
  }
  
mysql_free_result($query);
}

if (
$totalrows 0) { 
    echo 
"$randomcn ya existe en la base de datos";


if (
$totalrows == 0) { 
    
mysql_query("insert INTO $tabla (date,ip,proxy,browser,imageCN,email) values ('$date','$ip','$proxy','$agent','$randomcn','$email')");
    echo 
"$randomcn no existia en la tabla, ahora ya existe";
}  

?>
  #2 (permalink)  
Antiguo 06/06/2012, 18:23
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: generar nuevos caracteres aleatorios si los generados ya existen en la bas

Tendrías que tener un ciclo para crear nuevamente el número aleatorio e intentar nuevamente insertarlo. Pero lo que quisiera saber es para qué requieres dicho aleatorio. Muchas veces no es necesario...
  #3 (permalink)  
Antiguo 06/06/2012, 20:39
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 21 años, 3 meses
Puntos: 105
Respuesta: generar nuevos caracteres aleatorios si los generados ya existen en la bas

Holas,


Si generas un md5 de un date("Ymdhis"), podria ser una opción:

Código PHP:
Ver original
  1. md5(date('YmdHis'));

o sino:

Código PHP:
Ver original 

Seguro existen más opciones.

Saludos
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 07/06/2012, 01:55
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 84
Respuesta: generar nuevos caracteres aleatorios si los generados ya existen en la bas

Código PHP:

$existeEnBaseDeDatos 
true;

do
{
// Genero el código aleatorio.
// Compruebo si existe en la base de datos.
// Si el codigo no existe en la base de datos.
     // Lo guardo en la Base de datos
     
$existeEnBaseDeDatos false ;

} while (
$existeEnBaseDeDatos == true) ; 
__________________
» Presupuesto Pagina Web
  #5 (permalink)  
Antiguo 07/06/2012, 20:46
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 21 años, 3 meses
Puntos: 105
Respuesta: generar nuevos caracteres aleatorios si los generados ya existen en la bas

Solo como un comentario, mientras mas consultes a la base de datos mas lento es tu aplicativo, mientras menos consultes es mejor.

Saludos
__________________
.: Gildus :.
  #6 (permalink)  
Antiguo 08/06/2012, 12:49
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: generar nuevos caracteres aleatorios si los generados ya existen en la bas

voy a intentar con el do-while, gracias
  #7 (permalink)  
Antiguo 08/06/2012, 15:02
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 12 años, 5 meses
Puntos: 32
Respuesta: generar nuevos caracteres aleatorios si los generados ya existen en la bas

Y porque no le dejas la tarea de los caracteres aleatorios a mysql con un query asi.

Suponiendo que tu tabla tiene un id numerico entero y secuencial.

Código PHP:
Ver original
  1. $query = "INSERT INTO '".$tabla."'(
  2.             date,
  3.             ip,
  4.             proxy,
  5.             browser,
  6.             imageCN,
  7.             email
  8.         )
  9.         VALUES (
  10.             '".$date."',
  11.             '".$ip."',
  12.             '".$proxy."',
  13.             '".$agent."',
  14.             MD5(RAND() * (SELECT IFNULL(MAX(id),1) FROM '".$tabla."')),
  15.             '".$email."'
  16.         )";


Espero sirva, saludos.
__________________
http://www.latinium.com.ar/
  #8 (permalink)  
Antiguo 09/06/2012, 12:17
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 21 años, 3 meses
Puntos: 105
De acuerdo Respuesta: generar nuevos caracteres aleatorios si los generados ya existen en la bas

Me parece mas óptimo lo de @elgoncho99.

Saludos
__________________
.: Gildus :.
  #9 (permalink)  
Antiguo 10/06/2012, 16:53
 
Fecha de Ingreso: junio-2012
Mensajes: 12
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: generar nuevos caracteres aleatorios si los generados ya existen en la bas

Gracias elgoncho99 es buena tu idea. Sin embargo continue haciendo el script a mi manera y asi es como salio el codigo
Código PHP:
do
{
$randomcn generate_imagecn();
if(
$query mysql_query("SELECT COUNT(id) FROM $tabla WHERE `imageCN` = '$randomcn'")){
  while(
$row mysql_fetch_assoc($query)){
    
$totalrows $row['COUNT(id)'];
    
  }
  
mysql_free_result($query);
}
if (
$totalrows == 0) {
    
mysql_query("insert INTO $tabla (date,ip,proxy,browser,imageCN,email) values ('$date','$ip','$proxy','$agent','$randomcn','$email')");
}   

} while (
$totalrows 0) ;  

El problema ahora es que algunas veces los caracteres no se insertan en la base de datos aunque no existan. No se si el problema sea con mi codigo o el servidor.
Apenas estoy empezando a hacer scripts en php por eso no tengo idea cual sea el problema ahora

Etiquetas: mysql, tabla, variables
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 13:05.