Foros del Web » Programando para Internet » PHP »

Comprobar número en DB

Estas en el tema de Comprobar número en DB en el foro de PHP en Foros del Web. Hola, les paso un código y luego les explico un poco el problema: Código PHP: $terminado  =  0 ; $lol  =  0 ; while ( $terminado ...
  #1 (permalink)  
Antiguo 06/03/2008, 07:03
 
Fecha de Ingreso: julio-2004
Mensajes: 43
Antigüedad: 19 años, 9 meses
Puntos: 0
Exclamación Comprobar número en DB

Hola, les paso un código y luego les explico un poco el problema:

Código PHP:
$terminado 0;
$lol 0;
while (
$terminado==0) {
    
$aleatorio substr(rand0time() ),0,1);
    
$numerodepedido mysql_query("SELECT * FROM pedidos WHERE numero_pedido = '" $aleatorio "'",$dbc);
    
$data mysql_fetch_array($numerodepedido);
    if (
$data['numero_pedido'] == $aleatorio) {
                
    }
    else {
        
$terminado 1;
    }
    
$lol++;
}
$sql "INSERT INTO pedidos (numero_pedido) "."VALUES (".$aleatorio.")";
$result mysql_query($sql); 
Mi propósito es generar un número aleatorio, comprobar si existe en la DB, si existe, generar otro número, en el momento que no exista, lo inserto en la DB.

El código genera el número aleatorio y lo inserta en la base de datos, pero siempre que se repite lo inserta igualmente, por lo que pienso que el problema esta en la condición, pero he probado varias cosas y no consigo nada, seguro que es alguna tonteria, pero es que no lo consigo hacer funcionar.

EL campo numero_pedido de la DB es Int(11).

Gracias por la ayuda.
  #2 (permalink)  
Antiguo 06/03/2008, 07:19
 
Fecha de Ingreso: diciembre-2006
Mensajes: 65
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Comprobar número en DB

if ($data['numero_pedido'] == $aleatorio) {
$terminado = 0; //Creo que deberías añadir esto.
}
  #3 (permalink)  
Antiguo 06/03/2008, 10:11
 
Fecha de Ingreso: julio-2004
Mensajes: 43
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Comprobar número en DB

Hola elbrocheta.

Gracias por tu respuesta pero no es necesario añadir esa linea puesto que $terminado sigue siendo 0 y no hace falta indicarselo, por lo que el problema persiste.
  #4 (permalink)  
Antiguo 06/03/2008, 10:29
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
Pregunta Re: Comprobar número en DB

Código PHP:
<?php
  $terminado 
0
  
$lol 0
  while (
$terminado==0) { 
    
$aleatorio substr(rand0time() ),0,1); 
    
$sql "SELECT count(*) as cantidad FROM pedidos WHERE numero_pedido = '" $aleatorio "'";
    
$pedido mysql_query($sql$dbc);
    
$num_pedido mysql_num_rows($pedido);
    if (
$num_pedido==0) { 
      
$terminado 1
    } 
    else {
    } 
      
$lol++; 
    } 
  
$sql "INSERT INTO pedidos (numero_pedido) "."VALUES (".$aleatorio.")"
  
$result mysql_query($sql);  
?>
estas trabajando mal en la condicion if, mejor trabaja con mysql_num_rows, en caso de una cantidad de registros mayor a 1 significa que existen repetidos...

la sintaxis que mando tal vez este mala, por que la escribi en frio, espero te de una idea...
  #5 (permalink)  
Antiguo 06/03/2008, 10:50
 
Fecha de Ingreso: julio-2004
Mensajes: 43
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Comprobar número en DB

Hola hector2c.

Acabo de probar tu respuesta, es buena idea lo que me propones, acabo de probarlo y nada, no hay manera .

Sospecho que pueda tener algo que ver con que el tipo de datos de "$aleatorio", el tipo de campo numero_pedido de la base de datos y la forma con la que lo compruebo en la sentencia SQL. ¿Tal vez no sea la forma correcta?
  #6 (permalink)  
Antiguo 06/03/2008, 11:03
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Comprobar número en DB

prueba....

///generas tu aleatorio lo guardamos en $aleatorio....
//luego preguntamos si existe en base de datos o no.....

SELECT etc....

if ($data[aleatorio] != $aleatorio) //el primero de base de datos ovbio
{
//si es distinto o sea no existe lo ingresas
//y haces el insert aqui mismo...
INSERT INTO table......
}
else
{
//si existe entonces pasa aca y no haces nada
//y ves si sumas a tu variable etc...
}
$lol++

etc,.......
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #7 (permalink)  
Antiguo 06/03/2008, 11:18
 
Fecha de Ingreso: julio-2004
Mensajes: 43
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Comprobar número en DB

Agradezco tu respuesta kanimox, pero lo que me has explicado es exactamente lo mismo que he escrito yo en el primer mensaje, salvo que el insert lo haces en el mismo bucle y en lugar de hacer la condicion con == lo haces con !=, y cambias por tanto se cambia el lugar donde aparecen las instrucciones dentro del IF, el funcionamiento viene siendo el mismo, no obstante lo he probado y sigue pasando.

Sigo pensando en que hago algo mal en la sentencia SQL, ¿Alguien me puede decir si es la forma correcta?
  #8 (permalink)  
Antiguo 06/03/2008, 11:31
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 86
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Comprobar número en DB

El valor de $aleatorio va a ser un solo digito porque haces substr 0,1
Antes del mysql_fetch_array verificaria mysql_num_rows() ya que si no existe no deberia haber ninguna fila.
Si trae fila ya existe no necesitarias chequear nada mas
Si igualmente quieres chequear, yo me aseguraria de convertir ambos valores a numero, porque aleatorio, al ser creado con substr, es una cadena.

Código PHP:
if ($data['numero_pedido']  == $aleatorio 0
-ronnieb
  #9 (permalink)  
Antiguo 06/03/2008, 11:52
 
Fecha de Ingreso: julio-2004
Mensajes: 43
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Comprobar número en DB

Hola ronnieb.

El valor aleatorio es de un solo digito porque para hacer pruebas tardo menos en verificar si se repiten o no.

He eliminado el subsrt() y he dejado simplemente rand(0,9), para asegurarme de que $aleatorio es realmente numerico y no una cadena.

He probado ademas con mysql_num_rows() verificando asi si existe alguna fila.

Aunque no entiendo eso de $aleatorio - 0, puesto que creo que restar 0 no modifica ningun resultado, tambien lo he probado.

Nada funciona.
  #10 (permalink)  
Antiguo 06/03/2008, 16:20
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
Re: Comprobar número en DB

pedido es cadena o numerico ?? por que al hace la consulta agregar '' y al insertar no lo estas haciendo :SS puedes definir el tipo de variable ??
  #11 (permalink)  
Antiguo 06/03/2008, 16:32
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
Re: Comprobar número en DB

mm, ese numero aleatorio solo genera numeros entre 0 y 9, puees, ya lo resolvi,, ahi te va el codigo:

Código PHP:
<?php
$bd_host 
"localhost";
$bd_usuario "root";
$bd_password "";
$bd_base "prueba";

$con mysql_connect($bd_host$bd_usuario$bd_password) or die("Error en la conexión a mysql");
mysql_select_db($bd_base$con);


for (
$i=1;$i<=2;$i++)
{
  
$aleatorio substr(rand0time() ),0,1);
  
$sql "select count(*) as cantidad from pedidos where numero_pedido=".$aleatorio;
  
$pedido mysql_query($sql$con);
  
$rs_pedido mysql_fetch_assoc($pedido);
  if (
$rs_pedido['cantidad']==0)
    
$i=2;
  else
    
$i=1;
}

$sql "insert into pedidos values(".$aleatorio.")";
mysql_query($sql$con);

?>
te recomendaria aumentar los valores del numero aleatorio, por que cuando llegan a los dies registros con numeros entre 0 y 9, genera un bucle infinito por no poder generar numeros superiores a ese rango, pero el codigo que te mando esta bien, funciona, lo he probado... u.u
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:28.