Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Problema al insertar varios renglones (https://www.clubdelphi.com/foros/showthread.php?t=47169)

Vinicio 20-08-2007 23:46:07

Problema al insertar varios renglones
 
Que tal amigos, tengo un problema a la hora de insertar varios registros en una base de datos mysql, debo insertar varios registros con codigos diferentes, el codigo que presento acontinuacion
muestra la forma en que lo estoy intentando hacer, basicamente hago un ciclo FOR para insertar los registros dependiendo de la cantidad que el usuario asigne, el problema esta en que solo inserta una vez no importando cuantas veces le diga al FOR k haga iteraciones... alguno tiene otra idea, o me peuden decir en donde estoy fallando?

Código PHP:

for($e=0;$e<=$cantidad;$e++)
  {  

    
srand((double)microtime()*1000000); 
     
$codigo;
  
     for(
$i=0;$i<=11;$i++)
          {  
  
               
$nol rand(0,1);
   
           switch(
$nol)
           {
            case 
0$valor chr(rand(48,57));break; //0-9
            
case 1$valor chr(rand(65,90));break; //A-Z
              
}
           
$codigo .= $valor;
        }

$result mysql_query("INSERT INTO codigo (id_codigo, lote, codigo, id_usuario, id_distribuidor, activa, fecha_gen, fecha_act, credito) VALUES (NULL, '$maxlote', '$codigo', NULL, NULL, '0', '$fecha_gen', NULL, '0');",$cnx);

  
//termina inserta Codigo
  
}
     
header ("Location: codigo_asigna.php"); 


kayetano 21-08-2007 18:50:32

Hola

Dejando a un lado que no entiendo porque te moentas ese pollo para crear una clave cuando existen opciones mucho más simples para crear claves únicas.

Yo no veo nada raro, no entiendo el porque de la línea donde simplemente pones "$codigo" ya que si quieres una inicialización deberías asignarle un valor
Código PHP:

$codigo ""
// o
$codigo 0

Yo para estos casos lo que suelo hacer es imprimir la sentencia SQL que se genera es decir cambio:
Código PHP:

$result mysql_query("INSERT INTO codigo (id_codigo, lote, codigo, id_usuario, id_distribuidor, activa, fecha_gen, fecha_act, credito) VALUES (NULL, '$maxlote', '$codigo', NULL, NULL, '0', '$fecha_gen', NULL, '0')",$cnx); 

por
Código PHP:

echo "INSERT INTO codigo (id_codigo, lote, codigo, id_usuario, id_distribuidor, activa, fecha_gen, fecha_act, credito) VALUES (NULL, '$maxlote', '$codigo', NULL, NULL, '0', '$fecha_gen', NULL, '0')" 

Así puedes ver realmente que esta pasando. El punto y como que pones al final no sirve para nada.
También es muy util el "or die"
Código PHP:

$result mysql_query("INSERT INTO codigo (id_codigo, lote, codigo, id_usuario, id_distribuidor, activa, fecha_gen, fecha_act, credito) VALUES (NULL, '$maxlote', '$codigo', NULL, NULL, '0', '$fecha_gen', NULL, '0')",$cnx) or die(mysql_error()); 

Con esto imprimes el posible error generado por la consulta SQL.

Vinicio 21-08-2007 18:56:51

Gracias, ya logré encontrar el error, precisamente hice lo que sugeriste y me di cuenta que el error estaba en que se concatenaban los demas codigos generados en la variable $codigo, es decir, la primera vez si insertaba pues se generaba un codigo de 12 digitos , la sigueinte vez como se generaba un codigo de 24 no permitia insertar en la base pues el campo solo tiene de longitud 12, entonces resolvi el problema inicializando la variable antes de entrar al segundo FOR, muchisimas gracias por tu respuesta :D.

PD. Si tienes una forma mas sencilla de generar codigos te agradeceria me la compartieras , pues es la unica que encontré jeje.

Muchas gracias de Nuevo!


La franja horaria es GMT +2. Ahora son las 02:57:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi