Foros del Web » Programando para Internet » PHP »

Campo Auto Numerico

Estas en el tema de Campo Auto Numerico en el foro de PHP en Foros del Web. $token = strtok ($archivo_name,"."); $token = strtok ("."); $img = "img/".$f_nombre.".".$token; if (copy ($archivo,$img)) { $consulta_insertar = "INSERT Tengo este scrip que renombra una imagen ...
  #1 (permalink)  
Antiguo 02/02/2004, 06:51
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 20 años, 5 meses
Puntos: 1
Campo Auto Numerico

$token = strtok ($archivo_name,".");
$token = strtok (".");
$img = "img/".$f_nombre.".".$token;
if (copy ($archivo,$img)) {


$consulta_insertar = "INSERT

Tengo este scrip que renombra una imagen y quiero que asigne el nombre automaticamente del siguiente modo:

tengo la imagen pepe.jpg

la inseto con el scrip anterior y busca en la base de datos el campo "cod" (principal y autonumerico) y le suma uno

y quedaria de esta manera:

FORM.HTML

pepe.jpg

INSERTAR.PHP

$nombre=img

img_20.jpg (20 por que el ultimo de la BD es el 19)

Última edición por concric; 02/02/2004 a las 06:52
  #2 (permalink)  
Antiguo 02/02/2004, 07:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En tu Base de datos ya usas un campo autonumérico?

Tendrás que hacer una consulta a tu tabla por ese último ID generado y sumarle uno .. Ejemplo:

Código PHP:
// conectas a tu BD .. seleccionas la BD .. etc ...
$sql="SELECT id FROM tabla ORDER BY id DESC LIMIT 1";
$result=mysql_query($sql);
$ultimo_id=mysql_result($result,0); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 02/02/2004, 07:43
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 20 años, 5 meses
Puntos: 1
Ya me funciona perfecto le he añadido un par de lineas

$unomas ="1";
$sql="SELECT cod FROM tabla ORDER BY cod DESC LIMIT 1";
$result=mysql_query($sql);
$ultimo_id=mysql_result($result,0);

$imgcod=$ultimo_id + $unomas;

Pero tengo un problema si la Base de datos termina en el cod="5" despues de borrar datos si inserto uno nuevo no le asigna el cod="6" si no el cod="10" si borro este, el ultimo es el de nuevo "6" y al repetir el proceso es el "11" es de SQL el autoincrementar (¿se puede hacer el autoincrementar que sea siempre consecuntivo con el anterior sin recurrir al PHP)
__________________

diseño web

Última edición por concric; 02/02/2004 a las 07:46
  #4 (permalink)  
Antiguo 02/02/2004, 07:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Mira el primer comentario de www.php.net/mysql_insert_id :
Cita:
To get the NEXT insert id use the mysql query SHOW TABLE STATUS LIKE 'tablename' and get the field Auto_increment
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 02/02/2004, 07:55
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 20 años, 5 meses
Puntos: 1
There is a typo in sly at noiretblanc dot org´s posting:
auto_increment -> Auto_increment

To get the NEXT insert id use the mysql query SHOW TABLE STATUS LIKE 'tablename' and get the field Auto_increment

No me entero
__________________

diseño web

Última edición por concric; 02/02/2004 a las 07:58
  #6 (permalink)  
Antiguo 02/02/2004, 08:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ese campo "cod" es autoincremental? (parece que no lo es por el error que te dá ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 02/02/2004, 08:15
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 20 años, 5 meses
Puntos: 1
`cod` int(11) NOT NULL auto_increment,

Si funciona mi duda es:
Si es autoincrementar porque si termina en 6 y borrar algunos datos me inserta el 15 lo borro se queda el ultimo el 6 inserto 16 pero el 7 ni el 8,9,10,11, guarda en una cache o algo no lo entiendo
__________________

diseño web
  #8 (permalink)  
Antiguo 02/02/2004, 08:20
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 20 años, 5 meses
Puntos: 1
Lo he tenido que solucionar a nivel de php con este scrip:

$unomas ="1";
$sql="SELECT cod FROM control ORDER BY cod DESC LIMIT 1";
$result=mysql_query($sql);
$ultimo_id=mysql_result($result,0);
$cod=$ultimo_id + $unomas;

$consulta_insertar = "INSERT INTO tabla (cod) VALUES('$cod')

ASI QUE EL AUTO_INCREMENTAR DE MYSQL NA DE NA
__________________

diseño web
  #9 (permalink)  
Antiguo 02/02/2004, 08:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Vamos a ver ...

Un campo autoincremental -es así- para mantener la integridad Referncial de tus datos ...

Se trata de que si tu relacionas ese "ID" que en algún momento se creó y posteriormente se borró .. que .. -corresponda- con el que existia .. En esos caso que diga "ID" borrado . .no existe el tema ..

SI tu "cambias" o mejor dicho "rellenas" esos ID's borrados .. ya no va a corresponder tu .. por ejemplo articulo id=1 que hablaba de "la fruta de los arboles" .. y ahora ese id=1 que borrastes en su momento y lo volvistes a crear denuevo con otros datos .. ahora es el artículo sobre "la carne enlatada" ...

Como veras .. si yo por ejemplo me he guardado un link de tus articulos como nose.php?id=1 para verlo .. en algún momento (si borras esos ID's y los "rellenas" como lo haces) ya no van a corresponder...

Peor todavía si relacionas varias tablas por ese ID (1 -> N u otras relaciones). Ahí tu Base de datos pierde "consistencia" por qué ya no corresponden los Identificadores al contenido que era.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 18:38.