Foros del Web » Programando para Internet » PHP »

Autonumerico en php

Estas en el tema de Autonumerico en php en el foro de PHP en Foros del Web. Estoy haciendo una cosilla y tengo un problema,tengo que crear un libro en la base de datos,pero el usuario no le puede poner al libro ...
  #1 (permalink)  
Antiguo 04/03/2008, 12:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Autonumerico en php

Estoy haciendo una cosilla y tengo un problema,tengo que crear un libro en la base de datos,pero el usuario no le puede poner al libro un codigo,lo tiene que hacer php para que cuando yo me meta a la pagina de insercion de libros ya me apareciera automaticamente un codigo nuevo, y no tengo ni idea de cual es, he probado con todo y no lo consigo
Espero que podais ayudarme.Graciassssssssssssssssssssss
  #2 (permalink)  
Antiguo 04/03/2008, 12:51
 
Fecha de Ingreso: noviembre-2006
Mensajes: 437
Antigüedad: 17 años, 5 meses
Puntos: 3
Re: Autonumerico en php

Hola! En la base de datos, en la tabla libros pones un campo id (clave primaria y autonumerico) esto lo que hará es asignar un id único para cada libro que insertes y se irá incrementando.

Es esto lo que necesitas?

Un saludo
  #3 (permalink)  
Antiguo 04/03/2008, 15:22
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

El problema es que la base de datos me la han dado hecha y no la puedo modificar,tiene que ser con php
Un saludo
  #4 (permalink)  
Antiguo 04/03/2008, 15:31
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Autonumerico en php

Holas Zarkiria

¿Cómo debe ser el formato del código de nuevo libro? ¿Puede ser un simple número, o tiene letras y prefijos?

Como sea, asumo que en la tabla de libros en la base de datos debe tener el espacio (campo) para guardar ese código, cierto?

Ahora, justo antes de insertar un nuevo libro en la base desde PHP, pregunta el código del último que fue ingresado. De acuerdo al formato de tus códigos, arma uno nuevo y se lo asignas al nuevo libro en la sentencia sql.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 04/03/2008, 15:36
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
De acuerdo Re: Autonumerico en php

si es numerico, puedes obtener el ultimo valor y agregarle +1..., aver como seria, algo asi...

Código PHP:
<?php
  
//obtener un nuevo valor
  
$sql "select max(ide_lib) from libro";
  
$lib mysql_query($sql);
  
$rs_lib mysql_fetch_assoc($lib);
  
$ide_lib_nuevo $rs_lib['ide_lib'] + 1;
  
  
$sql "insert into libro values ($ide_lib_nuevo, 'nombre', blablablablablabla)";
  
mysql_query($sql);
?>
y bueno, espero te de alguna idea, el codigo esta a mano alzada, tomalo como refrencia.
  #6 (permalink)  
Antiguo 04/03/2008, 16:04
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Seria mas o menos esto?
<?php
//obtener un nuevo valor
$sql = "select max(codlibro) from libro";
$lib = mysql_query($sql);
$rs_lib = mysql_fetch_assoc($lib);
$ide_lib_nuevo = $rs_lib['codlibro'] + 1;

$sql = "insert into libro values ($ide_lib_nuevo, 'nombre', blablablablablabla)";
mysql_query($sql);
?>

En la ultima linea la funcion: $ide_lib_nuevo equivaldria al codigo,nombre al nombre del libro ,y blablabla al resto de cosas que quiera ponerle no?
Es que esto no es que se me de especialmente bien
  #7 (permalink)  
Antiguo 04/03/2008, 16:12
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Autonumerico en php

Exactamente como lo has dicho, te da algun error? o cual es tu inquietud

Saludos.
  #8 (permalink)  
Antiguo 04/03/2008, 16:57
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Todavia no lo he probado,luego lo pruebo,ahora estoy viendo como borrar desde una combo.
Ya mañana os contare que tal ha ido.
Un saludo y buenas noches.
  #9 (permalink)  
Antiguo 04/03/2008, 18:55
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Me da este error :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1,dni,nombre,direccion,telefono)values('12314','' ,'123455','maria','de la O','12' at line 1
Este es el codigo que tengo:
Código PHP:
$cnn=mysql_connect($hostname,$username,$password) or die (mysql_error());
mysql_select_db($database,$cnn);
 
$sql "select max(cs) from socios"
  
$soc mysql_query($sql); 
  
$rs_cs mysql_fetch_assoc($soc); 
  
$codigousu $rs_cs['cs'] + 1;
  
$ssql="insert into socios(clave,$codigousu,dni,nombre,direccion,telefono)values('".$_REQUEST['campoclave']."','".$_REQUEST['campocs']."','".$_REQUEST['campodni']."','".$_REQUEST['camponombre']."','".$_REQUEST['campodireccion']."','".$_REQUEST['campotelefono']."')";
//echo $ssql;
mysql_query($ssql,$cnn) or die(mysql_error($cnn));
mysql_close($cnn); 
Nesesitaba tambien que aparte de meter el autonumerico tambien le pusiese ceros por la izquierda,he conseguido que salgan ceros a efectos visuales,pero a efectos de la base de datos el codigo sigue siendo el numero a secas y ahora mismo no se cual de los dos me sirve(me lo tienen que decir),sabrias decirme como hacer para que aparte de sumarle 1 al ultimo numero tambien le añada ceros por la izquierda??
Un saludo y perdon por la parrada XD

Última edición por Zarkiria; 04/03/2008 a las 19:12
  #10 (permalink)  
Antiguo 05/03/2008, 06:41
 
Fecha de Ingreso: noviembre-2006
Mensajes: 437
Antigüedad: 17 años, 5 meses
Puntos: 3
Re: Autonumerico en php

Hola de nuevo. El error que te da en la sentencia es porque te has colado y has puesto una variable donde debe ir el nombre del campo.
Cita:
$ssql="insert into socios(clave,codigousu,dni,nombre,direccion,telefo no)values('".$_REQUEST['campoclave']."',$codigousu,'".$_REQUEST['campodni']."','".$_REQUEST['camponombre']."','".$_REQUEST['campodireccion']."','".$_REQUEST['campotelefono']."')";
Para poner 0 a la izquiera simplemente haz:

$codigousu = "000".$rs_cs['cs'] + 1;

Un saludo
  #11 (permalink)  
Antiguo 05/03/2008, 11:15
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

No me va, me da valor duplicado
  #12 (permalink)  
Antiguo 05/03/2008, 12:21
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Se podria hacer con un bucle?
  #13 (permalink)  
Antiguo 05/03/2008, 13:56
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Autonumerico en php

Holas Zarkiria

Retomando el primer código que pusiste para obtener el Nuevo ID:

Código PHP:
//obtener un nuevo valor
$sql "select max(codlibro) from libro";
$lib mysql_query($sql);
$rs_lib mysql_fetch_assoc($lib);
$ide_lib_nuevo $rs_lib['codlibro'] + 1// AQUI ESTA MAL

$sql "insert into libro values ($ide_lib_nuevo, 'nombre', blablablablablabla)";
mysql_query($sql); 
El resultado de la consulta "select max(codlibro)..." no llega como "codlibro", pues usaste la función MAX() de sql. Te sugiero hacer algo como esto:
Código PHP:
//obtener un nuevo valor
$sql "select max(codlibro) as ultimo_codlibro from libro"// das otro nombre al campo resultado
$lib mysql_query($sql);
$rs_lib mysql_fetch_assoc($lib);
$ide_lib_nuevo $rs_lib['ultimo_codlibro'] + 1;

$sql "insert into libro values ($ide_lib_nuevo, 'nombre', blablablablablabla)";
mysql_query($sql); 
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #14 (permalink)  
Antiguo 05/03/2008, 16:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Va perfecto,muchas gracias de verdad. En este mismo post me han dicho que para que salieran ceros por la izquierda tenia que ponerlos antes de $rs_lib pero lo he puesto asi y me sigue saliendo el valor a secas,sabrias decirme como puedo hacerlo(si no es mucha molestia claro).
Un saludo
  #15 (permalink)  
Antiguo 05/03/2008, 20:42
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Autonumerico en php

Con SQL mismo se puede formatear los campos numéricos de modo que agregue sólo los ceros a la izquierda. Pero como dices que no lo puedes modificar, pues pasemos a PHP.

De partida, en el código que estás usando, los ceros no funcionan porque hay un "+ 1" que convierte el valor tipo "cadena" a "número" irremediablemente:

Código PHP:
$ide_lib_nuevo "000".$rs_lib['codlibro'] + 1;

// Al sumar una cadena (que contiene un número) con un número, el resultado es siempre un número: "0001504" + 1 = 1505. 
Para hacer rápido y automatizado lo de los ceros, puedes hacer una mini función que lo haga por ti. Yo tengo esta, aunque seguramente habrán algunos métodos mucho más rápidos:

Código PHP:
function Zeros($numero$largo)
{
  while (
strlen($numero) < $largo)
  {  
$numero "0".$numero;  }
}

$valor 2541;
print 
Zeros($valor8);  // Esto imprime "00002541" 
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #16 (permalink)  
Antiguo 05/03/2008, 22:41
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Re: Autonumerico en php

mmm, por que no utilizas time();

es menos complicado no?

time te devuelve el tiempo real en numeros (desde el 1 de enero de 1970) y asi, cada vez que un usuario suba un libro, obtendras el tiempo (en segundos) actual, y nunca se repetira por que no pueden subir un libro al mismo tiempo (por lo menos, en el mismo segundo no)

Saludos
  #17 (permalink)  
Antiguo 06/03/2008, 03:57
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Ya está,he puesto que la variable valor sea igual a $ide_lib_nuevo,asi que ahora me hace el autonumero y le inserta los ceros.
Muchas gracias sois todos unos maquinas.jijiji
  #18 (permalink)  
Antiguo 08/03/2008, 09:12
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Ahora resulta que no me funciona,mi codigo es el siguiente:
Código PHP:
$cnn=mysql_connect($hostname,$username,$password) or die (mysql_error());
  
mysql_select_db($database,$cnn);
  
$sql "select max(cs) as autonumerico from socios"
  
$soc mysql_query($sql); 
  
$rs_cs mysql_fetch_assoc($soc); 
  
$codigousu $rs_cs ['autonumerico'] + 1;
   
  function 
Zeros($numero$largo)
{
  while (
strlen($numero) < $largo)
  {  
$numero "0".$numero;  }
}

$valor $codigousu;
$autocerosZeros($valor9);  
  
  
$ssql="insert into socios(clave,cs,dni,nombre,direccion,telefono)values('".$_REQUEST['campoclave']."','".$autoceros."','".$_REQUEST['campodni']."','".$_REQUEST['camponombre']."','".$_REQUEST['campodireccion']."','".$_REQUEST['campotelefono']."')";
//echo $ssql;
mysql_query($ssql,$cnn) or die(mysql_error($cnn));
mysql_close($cnn); 
Cuando veo lo que hay en la tabla el campo de codigo aparece vacio.
  #19 (permalink)  
Antiguo 08/03/2008, 09:28
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Autonumerico en php

Mmm esta muy raro, prueba asi tu código

Código PHP:
$cnn mysql_connect($hostname,$username,$password) or die (mysql_error()); 
mysql_select_db($database,$cnn); 
$sql "select max(cs) as autonumerico from socios";  
$soc mysql_query($sql$cnn) or die( mysql_error() );  
$rs_cs mysql_fetch_assoc($soc);  
$codigousu $rs_cs ['autonumerico'] + 1
    
function 
Zeros($numero$largo

  while(
strlen($numero) < $largo
  { 
       
$numero "0".$numero;  
  } 
  return 
$numero;


$valor $codigousu
$autoceros Zeros($valor9);   
   
   
$ssql "insert into socios(clave,cs,dni,nombre,direccion,telefono)values('".$_REQUEST['campoclave']."','$autoceros','".$_REQUEST['campodni']."','".$_REQUEST['camponombre']."','".$_REQUEST['campodireccion']."','".$_REQUEST['campotelefono']."')"
//echo $ssql; 
mysql_query($ssql,$cnn) or die(mysql_error($cnn)); 
mysql_close($cnn); 
Saludos.
  #20 (permalink)  
Antiguo 08/03/2008, 09:44
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

No va,no inserta nada.
  #21 (permalink)  
Antiguo 08/03/2008, 10:33
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Autonumerico en php

Probaste hacer un echo a tu variable pasa saber si te devuelve algun valor?
Código PHP:
echo $autoceros
Saludos.
  #22 (permalink)  
Antiguo 08/03/2008, 11:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Cita:
Iniciado por Carlojas Ver Mensaje
Probaste hacer un echo a tu variable pasa saber si te devuelve algun valor?
Código PHP:
echo $autoceros
Saludos.
Me pone:query was empty y yo no veo que este vacia pero bueno.
  #23 (permalink)  
Antiguo 08/03/2008, 11:19
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Autonumerico en php

Puede ser que la consulta del MAX() id no este devolviendo ningún valor , revisala o tengas un problema en la función de añadir ceros, aunque a simple vista parece que esta bien.



Saludos.
  #24 (permalink)  
Antiguo 08/03/2008, 11:30
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Autonumerico en php

Prueba hacer un echo a $codigousu para descartar que no este vacia o para ver que resultado te está devolviendo


Saludos.
  #25 (permalink)  
Antiguo 08/03/2008, 11:43
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

La funcion max esta bien,no se de donde puede venir el error
  #26 (permalink)  
Antiguo 08/03/2008, 14:16
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

El fallo esta en la funcion zeros
  #27 (permalink)  
Antiguo 10/03/2008, 13:02
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Autonumerico en php

Para mejorar al función Zeros() maneja el valor de $numero en otra variable, por ejemplo, $resultado. Algo así:
Código PHP:
function Zeros($numero$largo

  
$resultado $numero;
  while(
strlen($resultado) < $largo
  { 
       
$resultado "0".$resultado;  
  } 
  return 
$resultado;

Ahora, en cuanto a la sentencia SQL, veo que estás poniendo entre comillas el valor del nuevo ID... Si es numérico no debiera ir entre comillas.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #28 (permalink)  
Antiguo 10/03/2008, 18:07
 
Fecha de Ingreso: diciembre-2007
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Autonumerico en php

Ya me va,muchas gracias a todos,de verdad, me habeis sido de gran ayuda.
saludos a todos.
  #29 (permalink)  
Antiguo 09/03/2013, 09:21
 
Fecha de Ingreso: enero-2013
Mensajes: 4
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Autonumerico en php

hola amigos pasaba por este post xq ando buscando algo igual con el autonumerico ahora mi duda es si yo a momento de borrar algun registro se acomoda la enumeracion????
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 03:01.