Foros del Web » Programando para Internet » PHP »

problemas con ID autoincrementable

Estas en el tema de problemas con ID autoincrementable en el foro de PHP en Foros del Web. Hola amigos de FDW. estoy creando un sistema que almacena registros, la particularidad de esto es que es autoincrementable el campo ID, lo que necesito ...
  #1 (permalink)  
Antiguo 08/06/2007, 14:45
 
Fecha de Ingreso: abril-2006
Mensajes: 140
Antigüedad: 18 años
Puntos: 0
problemas con ID autoincrementable

Hola amigos de FDW.

estoy creando un sistema que almacena registros, la particularidad de esto es que es autoincrementable el campo ID, lo que necesito es que al ingresar un nuevo registro mediante la pagina de ingreso, pueda automáticamente al abrirse visualizarse el nuevo ID (que no este asignado).

ayuda porfavor que lo necesito con urgencia.

de antemano gracias



PD: si tienen una mejor opcion, escucho sugerencias .
  #2 (permalink)  
Antiguo 08/06/2007, 14:55
 
Fecha de Ingreso: junio-2007
Mensajes: 3
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problemas con ID autoincrementable

no entiendo..
te refieres al [id del ultimo insert] -> elsiguiente ?
pues...
mysql_insert_id te devuelve el ultimo id del insert q has echo,
si quieres saber el siguiente solo haces un + 1 :P
no se si es lo q necesitabas,
saludos!
  #3 (permalink)  
Antiguo 08/06/2007, 15:03
 
Fecha de Ingreso: junio-2007
Mensajes: 10
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problemas con ID autoincrementable

yo tengo un problema parecido me xplico:

$insertSQL = sprintf("INSERT INTO usuarios (nick, password, nombre, email, pj_carac) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['nick'], "text"),
GetSQLValueString($_POST['password'], "text"),
GetSQLValueString($_POST['nombre'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['pj_carac'], "text"));

mysql_select_db($database_ninjarpg, $ninjarpg);
$Result1 = mysql_query($insertSQL, $ninjarpg) or die(mysql_error());
$result2 = mysql_db_query("ninjarpg","select id from usuarios where nick=$nick");
$result3 = mysql_db_query("pj_carac","insert into pj_carac (id,frz,des,int,magia,con_magia) values ($result2,0,0,0,0,0)");
$insertGoTo = "login.php";

mi idea es que en la variable $result1 uno me graba la ficha, todo perfecto, hasta aqui todo bien pero luego vuelvo a hacer otra consulta en $result2 aqui me ha de seleccionar la id de la ficha que acabo de insertar ya que esta la utilizare para crear una ficha en la tabla pj_carac en donde la id_pj a de ser = a la que se añadio a la ficha en usuarios (aqui la id es autoincrement) seguro es una chorrada pero en fin me vendria bien una mano.
  #4 (permalink)  
Antiguo 08/06/2007, 15:08
 
Fecha de Ingreso: junio-2007
Mensajes: 10
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problemas con ID autoincrementable

he hecho el siguiente cambio

$Result1 = mysql_query($insertSQL, $ninjarpg) or die(mysql_error());
$result2 = mysql_insert_id($result1);
$result3 = mysql_db_query("pj_carac","insert into pj_carac (id,frz,des,int,magia,con_magia) values ($result2,0,0,0,0,0)");


y me da este error.

Warning: mysql_insert_id(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\registrar.php on line 64
  #5 (permalink)  
Antiguo 08/06/2007, 15:15
 
Fecha de Ingreso: abril-2006
Mensajes: 140
Antigüedad: 18 años
Puntos: 0
Re: problemas con ID autoincrementable

Cita:
Iniciado por nicolas.camino Ver Mensaje
no entiendo..
te refieres al [id del ultimo insert] -> elsiguiente ?
pues...
mysql_insert_id te devuelve el ultimo id del insert q has echo,
si quieres saber el siguiente solo haces un + 1 :P
no se si es lo q necesitabas,
saludos!
si, pense en esa opcion, pero el problema que tengo, es que necesito saber desde el instante en que creare un nuevo registro el ID que se utilizará para poder pasarlo por la sesion y utilizarlo en el resto de las paginas de ingreso de datos.
  #6 (permalink)  
Antiguo 08/06/2007, 15:19
 
Fecha de Ingreso: junio-2007
Mensajes: 10
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problemas con ID autoincrementable

te entiendo lo que quieres es mas o menos lo mismo que yo quiero aunque quiero el que se hace en el momento, tu lo que tendrias que hacer es select la ultima fila insertada anteriormente, sabiendo el id+1 tendras el nuevo que se a de insertar.
  #7 (permalink)  
Antiguo 08/06/2007, 15:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas con ID autoincrementable

Tu problema esta en esta linea:
Código PHP:
$result2 mysql_insert_id($result1); 
Tienes que pasarle como parametro el $link a tu base de datos, no al resultado de tu consulta.

Saludos.
  #8 (permalink)  
Antiguo 08/06/2007, 15:43
 
Fecha de Ingreso: junio-2007
Mensajes: 10
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problemas con ID autoincrementable

no me aclaro si hago link a la base de datos como puedo saber el ultimo id de una tabla en concreto ya que tengo dos tablas ahora.
  #9 (permalink)  
Antiguo 08/06/2007, 15:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas con ID autoincrementable

mysql_insert_id te regresa el ultimo valor de la ultima tabla, es decir si haces esto:
Código PHP:
$link mysql_connect();
$result mysql_query"INSERT..." );
$id mysql_insert_id$link ); // ID de tabla 1
$result2 mysql_query"INSERT .." );
$id2 msyql_insert_id$link ); // ID de tabla 2 
Saludos.
  #10 (permalink)  
Antiguo 09/06/2007, 05:00
 
Fecha de Ingreso: junio-2007
Mensajes: 10
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problemas con ID autoincrementable

Me sigue fallando no tengo .... de hacerlo. Quiero leer la id que se añadio en la ficha recien insertada y crear una ficha en la otra tabla y solo e da errores.
Código PHP:
/ *** Redirect if username exists
$MM_flag
="MM_insert";
if (isset(
$_POST[$MM_flag])) {
  
$MM_dupKeyRedirect="error.php";
  
$loginUsername $_POST['nick'];
  
$LoginRS__query "SELECT nick FROM usuarios WHERE nick='" $loginUsername "'";
  
mysql_select_db($database_ninjarpg$ninjarpg);
  
$LoginRS=mysql_query($LoginRS__query$ninjarpg) or die(mysql_error());
  
$loginFoundUser mysql_num_rows($LoginRS);

  
//if there is a row in the database, the username was found - can not add the requested username
  
if($loginFoundUser){
    
$MM_qsChar "?";
    
//append the username to the redirect page
    
if (substr_count($MM_dupKeyRedirect,"?") >=1$MM_qsChar "&";
    
$MM_dupKeyRedirect $MM_dupKeyRedirect $MM_qsChar ."requsername=".$loginUsername;
    
header ("Location: $MM_dupKeyRedirect");
    exit;
  }
}

function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO usuarios (nick, password, nombre, email, pj_carac) VALUES (%s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['nick'], "text"),
                       
GetSQLValueString($_POST['password'], "text"),
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['pj_carac'], "text"));

  
  
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
  
$insertSQL sprintf("INSERT INTO usuarios (nick, password, nombre, email, pj_carac) VALUES (%s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['nick'], "text"),
                       
GetSQLValueString($_POST['password'], "text"),
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['pj_carac'], "text"));
mysql_select_db($database_ninjarpg$ninjarpg);
   
$Result1 mysql_query($insertSQL$ninjarpg) or die(mysql_error());
  
$result2 mysql_query("select id from usuarios where nick='" $loginUsername "'";
  
$rowmysql_fetch_array($result2);
  
$result3 mysql_query("insert into pj_carac (id_pj,frz,des,int,mga,c_magia) values ($row[1],0,0,0,0,0);
  $insertGoTo = "
login.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "
&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("
Location: %s", $insertGoTo));
}
?> 
solo me da errores sin parar en donde marque con negrita y no hace lo que se supone busco que me lea la id de la fila que acabo de insertar y que me cree una ficha en la otra tabla en la que este la id_pj = a la id de la ficha-
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 10:17.