Foros del Web » Programando para Internet » PHP »

Dos auto_increment en una tabla

Estas en el tema de Dos auto_increment en una tabla en el foro de PHP en Foros del Web. hola amigos, estoy haciendo un mini foro en PHP tengo dos tablas, una con los títulos y otra con los mensajes (asociados a los títulos) ...
  #1 (permalink)  
Antiguo 10/05/2005, 19:44
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
Dos auto_increment en una tabla

hola amigos, estoy haciendo un mini foro en PHP

tengo dos tablas, una con los títulos y otra con los mensajes (asociados a los títulos)

el problema es que al crear un título se debe cargar unos valores en una tabla (discusiones) y otros en la otra (mensajes)...

quedando así:

$result=mysql_db_query("db","insert into discusiones (IdForo,Titulo,Fecha,Nombre,Email) values ('$IdForo','$Titulo',now(),'$Nombre','$Email')",$l ink);
$result=mysql_db_query("db","insert into mensajes (IdDiscusion,Texto,Fecha,Nombre,Email) values ('$IdDiscusion','$tex_db',now(),'$Nombre','$Email' )",$link);

el problema es crear un nuevo $IdDiscusion en la segunda tabla... ya que dicha tabla ya tiene un IdMensaje con auto_increment...

se les ocurre como puedo generar un valor único (y en lo posible seguidos) para este segundo campo ???

gracias
  #2 (permalink)  
Antiguo 10/05/2005, 19:57
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
se me ocurre algo
seleccionar el valor más alto de IdDiscusion y sumarle 1 y luego que ese valor sea el guardado para la nueva discusion, sabén como puedo hacer esto??

gracias =)
  #3 (permalink)  
Antiguo 10/05/2005, 20:22
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
Yo estoy ante el mismo problema al hacer un foro. Todavía no decidí exactamente como voy a hacer, pero antes que eso, preferiría lo siguiente

Código PHP:
$result=mysql_db_query("db","insert into discusiones (IdForo,Titulo,Fecha,Nombre,Email) values ('$IdForo','$Titulo',now(),'$Nombre','$Email')",$link);

$q_discusion mysql_db_query("db","SELECT IdDiscusion FROM discusiones WHERE 
IdForo = '$IdForo' AND Titulo = '$Titulo'  AND Nombre = '$Nombre' AND Email = '$Email' ORDER BY IdDiscusion DESC LIMIT 1"
,$link) or die(mysql_error());
$discusion mysql_fetch_assoc($q_discusion);
$result=mysql_db_query("db","insert into mensajes (IdDiscusion,Texto,Fecha,Nombre,Email) values ('$discusion["IdDiscusion"]','$tex_db',now(),'$Nombre','$Email' )",$link); 
  #4 (permalink)  
Antiguo 10/05/2005, 20:27
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
Seppo, no estoy muy ducho en el tema...

me podrías aclarar un poco tu código?? gracias
  #5 (permalink)  
Antiguo 10/05/2005, 20:35
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
Primero hacés el INSERT del tema, y después un SELECT con el id y ponés los datos, o sea que sea el mismo nombre, mismo titulo, mismo foro, etc y agarrar el último de todos esos. Después cuando insertás el tema usas el id q recuperaste.
Igual no me convence del todo..................... No me convence para nada, en realidad.
  #6 (permalink)  
Antiguo 10/05/2005, 20:37
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
claro, yo hice algo similar
selecciono el valor del último registro y le sumo uno, pero me parece mucha consulta en vano =(
  #7 (permalink)  
Antiguo 10/05/2005, 20:49
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
Bueno, comparto con uds mi solución desilusionada =( pero efectiva ;)

$result=mysql_query("select IdDiscusion from mensajes order by IdMensaje desc limit 1",$link);
while($row = mysql_fetch_array($result)) {
$NuevoIdDiscusion=($row["IdDiscusion"]+1);
}
$tex_db=str_replace("\n", '<br>', $Texto);
$result=mysql_db_query("inesshawyoga_com_-_db","insert into discusiones (IdForo,Titulo,Fecha,Nombre,Email) values ('$IdForo','$Titulo',now(),'$Nombre','$Email')",$l ink);
$result=mysql_db_query("inesshawyoga_com_-_db","insert into mensajes (IdDiscusion,Texto,Fecha,Nombre,Email) values ('$NuevoIdDiscusion','$tex_db',now(),'$Nombre','$E mail')",$link);
  #8 (permalink)  
Antiguo 10/05/2005, 20:54
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
parááá... de donde sale ese while?! si el query está limitado a 1 resultado máximo, el while no tiene mucho sentido
  #9 (permalink)  
Antiguo 10/05/2005, 20:56
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
estoy re quemado, quiero terminar esto
y así quedó lindo (?)

me falta un paginador y soy feliz
  #10 (permalink)  
Antiguo 10/05/2005, 21:07
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
che momento.. es buggie lo que puse....
está mal
maten este post
  #11 (permalink)  
Antiguo 10/05/2005, 22:10
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
Listo, aquí logré un segundo "auto_increment"... espero que les sirva

$result=mysql_query("select max(IdDiscusion) from mensajes",$link);
$NuevoIdDiscusion=(mysql_result($result,0)+1);
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 00:34.