Sie sind auf Seite 1von 32

Cdigo para conseguir el ltimo ID de insercin de una tupla.

Por Miguel Angel Alvarez


Atencin: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

Creamos este artculo para responder una duda que nos han preguntado alguna vez en nuestro correo. Se trata sobre conseguir el ltimo identificador de un registro insertado en la base de datos, programando con PHP y con la base de datos MySQL. Realmente es una duda muy sencilla de solucionar, gracias al rico juego de funciones de PHP para trabajar con bases de datos MySQL. Existe una funcin que nos devuelve directamente el identificador de la ltima insercin, utilizando la conexin a la base de datos que se le pase por parmetro, o la ltima conexin utilizada en caso de que no se le indique parmetro. mysql_insert_id($connectid) Ejemplo de utilizacin Veamos un ejemplo de la utilizacin de esta funcin, en el que se realizan las acciones necesarias para insertar un elemento en la base de datos. En este ejemplo utilizaremos una base de datos llamada "test" y la tabla "cliente". //conecto con la base de datos $connectid = mysql_connect("localhost","root",""); //selecciono la base de datos a utilizar mysql_select_db("test",$connectid); //Sentencia de insercin del elemento $ssql = "INSERT INTO cliente (nombre_cliente, cif, direccion, email) VALUES ('xxx Nombre empresa', 'B3331113', 'C/ Corona 2', 'eepe@relll.com')"; //lo inserto en la base de datos if (mysql_query($ssql,$connectid)){ //recibo el ltimo id $ultimo_id = mysql_insert_id($connectid); echo $ultimo_id; }else{ echo "La insercin no se realiz"; } Primero se conecta con MySQL y se selecciona la base de datos a utilizar. Luego se genera una sentencia SQL de insercin en una supuesta tabla de

clientes. Si la ejecucin de esta sentencia es correcta se recibe el ltimo ID con la funcin insert_id(). Si la ejecucin de la sentencia falla, muestra un mensaje de error. Fijmonos que insert_id() recibe el identificador de la conexin, devuelto por mysql_connect() y no el identificador de resultado de la consulta, que devuelve mysql_query() cuando se ejecutan sentencias de seleccin en la base de datos.

Obtener id antes de insertar en mysql Como puedo obtener el id que va a tener un articulo antes de que lo inserte en la base de datos.. la id es auto_increment. Yo he pensado en obtener el valor mayor de la id y sumar 1 pero no se si existe alguna solucion mejor para este caso.. Espero vuestras sugerencias Gracias. Avisos Google Advanced NMS Design NMS Design & Integration Cable, Telco & Wireless Ecosystems www.integ.com/IS3 "Master Recursos Humanos" Doble Titulacin Europea Becas hasta el 75%. Ultimas Plazas! www.eude.es Embedded Tools & Consult RTOS,Compiler,Debugger,JTAG Debugger,Flasher,Starter Kits www.innis-intl.com __________________ Ado_k2 :adios:

#2 (permalink) 01/01/2011, 08:40 richicasas Respuesta: Obtener id antes de insertar en mysql $idconexion = mysql_connect("localhost","root",""); $ultimoid = mysql_insert_id($idconexion); __________________ Paginas web El karma es como el agua, no se le niega a nadie!! #3 (permalink) 01/01/2011, 09:07 fernandozunni Fecha de Ingreso: febrero-2009 Mensajes: 195 Fecha de Ingreso: abril-2007 Ubicacin: Colombia Mensajes: 650

Respuesta: Obtener id antes de insertar en mysql No creo que haya una solucin mejor, no conozco ninguna funcion (ni creo que la haya) que te regrese un id todava no generado en la tabla. mysql_insert_id() // te devuelve el id del ultimo insert hecho, no el que vas a insertar. saludos y feliz ao. #4 (permalink) 01/01/2011, 10:08 mariomon17 Respuesta: Obtener id antes de insertar en mysql Para que lo quieres saber? __________________ Lost: "Tienes que dejarlo ir" :) #5 (permalink) 01/01/2011, 16:56 Ado_k2 Fecha de Ingreso: junio-2003 Mensajes: 104 Fecha de Ingreso: noviembre-2009 Mensajes: 574

Respuesta: Obtener id antes de insertar en mysql Cita: Iniciado por fernandozunni No creo que haya una solucin mejor, no conozco ninguna funcion (ni creo que la haya) que te regrese un id todava no generado en la tabla. mysql_insert_id() // te devuelve el id del ultimo insert hecho, no el que vas a insertar. saludos y feliz ao. Es justamente lo que necesito mas rapido... y ademas si le sumo +1 sera el siguiente creo yo, gracias compaeros la verdad que aqu uno siempre sale aprendiendo algo mas. __________________ Ado_k2 :adios:

ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

Avisos Google Diplomados a Distancia Estudie desde casa u oficina (24 h) Ahorre hasta 50% del valor. 4 meses www.minternationalcenter.com SQL Database Designer Design, visualize, document and reverse engineer any database. www.modelright.com/ Web based OLAP Client for Microsoft Analysis Services download Free Evaluation www.ReportPortal.com Herramientas #1 (permalink) 23/02/2007, 10:49 dess01 ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL HOla a todos los foreros.! Tengo un problema, que espero me puedan orientar. Les explico: Tengo 3 tablas en mi base de datos(stoy utilizando el phpmyadmin). En mi cdigo de php Hago un formulario que me permite guardar los datos que se capturen, hasta ah va todo bien, peeeero, mi problema es que necesito que se guarde el id de la primera tabla a las otras dos tablas para relacionar a cual le corresponde a cual. Por ejemplo: TABLA | C A M P O S tabla 1: id_esp, especialidad tabla 2: id_preg, preg, id_esp tabla 3: id_resp, resp1, resp2, resp3, id_preg, id_esp Los datos hasta ahorita los puedo guardar en "especialidad", "preg", "resp1", "resp2", "resp3". Los primeros id de cada tabla es autoincrementable, precisamente ese id, necesito que se guarde en el "id_esp" de la tabla 2 y 3 y el "id_preg" en la tabla 3. Como sera la sentencia o el cdigo para extraer ese valor autoincrementable de la "id_esp" y guardarlo en los campos respectivos??? O estar mal mi lgica?? Pues lo ke he encontrado es haciendo un select pero tomando el nombre del id_esp= "?" , pero supuestamente ese dato es variable, va a estar cambiando conforme agregue mas especialidades, no siempre va a hacer el mismo valor. Fecha de Ingreso: febrero-2007 Ubicacin: Mxico Mensajes: 44 Desplegado

Muchas gracias, espero su pronta ayuda. Saludos a todos! Avisos Google Curso Online de Java Aprende a programar Java y a desarrollar aplicaciones. Infrmate www.seas.es "Master Recursos Humanos" Doble Titulacin Europea Becas hasta el 75%. Ultimas Plazas! www.eude.es Licenciatura a Distancia Estudia sin asistir a clase, Licenciatura 100% a Distancia. www.aiu.edu #2 (permalink) 23/02/2007, 10:58 gerson Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL Dale un vistazo a esto: http://www.php.net/manual/es/functio...-insert-id.php salud2 __________________ Fecha de Ingreso: febrero-2005 Ubicacin: Lima Mensajes: 474

#3 (permalink) 23/02/2007, 10:59 sofiacharni Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL El id tipo autoincrement se obtiene asi: mysql_query("insert into especialidad....", $conexion) Obtn el id generado con: $id_esp = mysql_insert_id() #4 (permalink) 23/02/2007, 11:03 Fecha de Ingreso: julio-2005 Mensajes: 21

Carxl Colaborador Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL Hola dess01.

Fecha de Ingreso: agosto-2006 Ubicacin: Bogot Mensajes: 2.979

Si lo que necesitas es el ltimo valor autoincrementable de una tabla, lo obtienes como te dijeron arriba mysql_insert_id. Sino es eso, es que est mal tu lgica. Saludos. __________________ Hay 10 tipos de personas, los que entienden binario y los que no. (Annimo) www.programandoweb.com #5 (permalink) 23/02/2007, 17:31 dess01 Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL Muxas muxas gracias, muchachos! Ya lo he hecho y s jala, pero no se qu estar haciendo mal que el id me lo guarda en todos los registros del campo de la tabla 3. Ejemplo: Cree 2 preguntas( en tabla2), y cada pregunta con sus 3 respuestas(tabla 3). Cuando cree la 1a pregunta (id_preg: 1) efecivamente si me guard el id_preg en no_preg; hasta ahi vamos bien, Peeeo, cuando cree la 2a pregunta y las 3 respuestas not que en tabla 3 a la respuesta anterior tambien guard el mismo id. TABLA 2 id_preg | preg: 1 | ***? 2 | ***? TABLA 3 id_resp: | resp1: | resp2: | resp3: | no_preg 1 | resp1.1 | resp2.1 | resp3.1 | 2 2 | resp1.2 | resp2.2 | resp3.2 | 2 Segun yo as hice mi cdigo: Fecha de Ingreso: febrero-2007 Ubicacin: Mxico Mensajes: 44

Cdigo PHP:
$connection = mysql_connect ("localhost") or die ("No se puede conectar al servidor"); mysql_select_db ("base22feb") or die ("No se puede seleccionar BD"); // insertamos pregunta en la base de datos obtenida del formulario mysql_query("INSERT INTO cat_preg (preg) VALUES ('{$_POST['preg']}')",$connection); //aqui obtengo la id reciente $id_preg = mysql_insert_id(); // insertamos respuestas en la base de datos obtenida del formulario mysql_query("INSERT INTO cat_resp (resp1, resp2, resp3) VALUES ('{$_POST['resp1']}','{$_POST['resp2']}','{$_POST['resp3']}')",$connection); //aqu se me hace que esta mi fallo, please help! $instruccion = "update cat_resp set no_preg=$id_preg"; $actualizacion = mysql_query ($instruccion, $connection) or die ("Fallo en el agregado de la id_preg");

En este ltimo parrafo se me hace ke esta mi error, pues no stoy segura si deba ir el update u otra sentencia o funcin. De verdad muxas gracias, espero su apoyo para que me orienten por favor. Saluditos!! #6 (permalink) 25/02/2007, 21:40 dess01 Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL Oigan muxax@s, kreo ya se olvidaron de mi hay alguien ke me pueda ayudar? porfis! #7 (permalink) 26/02/2007, 18:15 dess01 Fecha de Ingreso: febrero-2007 Ubicacin: Mxico Mensajes: 44 Fecha de Ingreso: febrero-2007 Ubicacin: Mxico Mensajes: 44

Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL Holaa? ENtonces no hay nadie ke me pueda echar la mano? '(

#8 (permalink) 27/02/2007, 01:27 El Patrn. Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL Hola Bueno, pues tu codigo esta bien, pero lo que te ocurre es lo siguiente update cat_resp set no_preg=$id_preg Cuando tu realizas esa instruccion lo que estas haciendo es actualizando TODOS los registros de la tabla cat_resp asignando a todos los no_preg el mismo valor. Solucin: (lo que esta en verde) mysql_query("INSERT INTO cat_preg (preg) VALUES ('{$_POST['preg']}')",$connection); //aqui obtengo la id reciente $id_preg = mysql_insert_id(); // insertamos respuestas en la base de datos obtenida del formulario mysql_query("INSERT INTO cat_resp (resp1, resp2, resp3) VALUES ('{$_POST['resp1']}','{$_POST['resp2']}','{$_POST['resp3']}')",$connection); //traes el ultimo valor insertado en cat_resp para actualizar SOLO ese registro $id_resp = mysql_insert_id(); //aqu se me hace que esta mi fallo, please help! $instruccion = "update cat_resp set no_preg=$id_preg WHERE id_resp = $id_resp"; asi, el solo actualizara el ultimo registro insertado en cat_resp bueno, espero te sirva suerte Fecha de Ingreso: abril-2006 Ubicacin: Colombia Mensajes: 648

permalink) 02/2007, 19:08

Fecha de Ingreso: febreroUbicacin: Mxico Mensajes: 44

ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

hola "Patrn", muxas gracias!!

ivamente ahi staba mi tonto error. Lo hice tal cual komo me dijiste y ya guarda el "id_preg" respectivamente a la tabla de mis

estas

e leyendo algunos foros de este web y vi uno parecido a lo que yo necesitaba (sorry, no me dejaron meter vinculo) o una respuesta que no entend:

pues de insertar el registro en la tabla 1 puedes extraer el ultimo ID con la siguiente sentencia:

go PHP: p 1 = "SELECT MAX(id) FROM tabla1;"; zas la consulta y extraes el valor obtenido y lo guardas en la otra tabla y listo ;)"

ue precisamente necesito hacer eso, pues ahora me falta insertar el "id_esp" para meterlo a la tabla 2 (cat_preg)y a la tabla 3

resp) para asociarlas. pero no me sale

gu ese parte en mi codigo as:

go PHP:

nection = mysql_connect ("localhost") ie ("No se puede conectar al servidor"); l_select_db ("base22feb") ie ("No se puede seleccionar BD");

ayendo ultimo id de la tabla especialidad esp= "SELECT MAX(id_esp) FROM especialidad";

nsertaremos los datos de la preg a la base de datos l_query("INSERT INTO cat_preg (preg) ES ('{$_POST['preg']}')",$connection);

preg = mysql_insert_id();

tiendo el ultimo id_esp insertado al cat_preg. se me hace que otra vez la estoy regando en esta parte.

truccion = "update cat_preg set tipo_esp=$id_esp where id_preg= $id_preg"; ualizacion = mysql_query ($instruccion, $connection) ie ("Fallo en el agregado de la id_esp");

engo ke komentar ke en este codigo de php no tengo que hacer la consulta as: go PHP:

l_query("INSERT INTO cat_especialidad (especialidad) VALUES ('{$_POST['especialidad']}')",$connection);

e en este archivo php no est el fomulario ke me permitir guardar los datos de la especialidad, eso lo hice en otro archivo php q el enlace que me lleva a ste en donde esta el formulario de preguntas y respuestas.. As que esta consulta de la especialidad est

mulario1.php . No s si me explico bien..

plo:

mulario1.php** bre especialidad:______ on guardar> r encuesta <-- link

ckear en "guardar" y despues en "hacer encuesta" me lleva al formulario2.php)

mulario2.php** be pregunta: ______ be tu REsp1:____ be tu Resp2:____ be tu REsp3:____

on guardar>

do cheko mi base de datos me doy cuenta que no guarda la "id_esp" de la tabla1 a la tabla2(tipo_esp) donde estan mis preguntas si tenga ke ver que utilizo dos archivos para eso o definitivamente me falta alguna otra consulta que hacer para meter esa id.

o me puedan auxiliar prontito Porfis! GrAcIaS!

(permalink) 02/2007, 07:35

rn.

Fecha de Ingreso: abrilUbicacin: Colombia Mensajes: 648

ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

o, pues claro que lo puedes mejorar pues en el link podrias enviar el idespecialidad, es decir que el select max lo harias luego de ar el dato de la especialidad para que el link lleve ese valor

pues sirve igual que como lo planteas, de obtener el id maximo de especialidad en la pagina donde guardas la pregunta y las estas

e pasa en ese caso es que tienes que hacer 2 consultas separadas, es decir, una consulta para el id y otra para el update, tu ya tiene nda, lo que te faltaria es esto

go PHP:

ry_id_esp = mysql_query("Select max(id_esp) from especialidad"); d_esp = mysql_fetch_array($query_id_esp); se el echo para que veas el id, pero pues lo puedes quitar sin //problema $id_esp = $r_id_esp[0];

ora si la variable $id_esp tiene el valor numerico del id, porque tu tenias solo la consulta, y le asignabas a $id_esp una cadena qu nia la consulta y pues es por eso que no te estaba guardando el valor.

o te funcione bien, y si no por aqui andare, suerte. #11 (permalink) 28/02/2007, 10:39 dess01 Fecha de Ingreso: febrero-2007 Ubicacin: Mxico Mensajes: 44

Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL Gracias "Patrn", pero lo siento mas cmodo extrayendo el id_esp en el formulario2.php, pero, ke krees! me sali un error ..

Me aparece un warning en la linea donde est este codigo: Cdigo PHP:


$r_id_esp = mysql_fetch_array($query_id_esp);

Supuestamente mi cdigo queda finalmente as, cierto? Cdigo PHP:


$connection = mysql_connect ("localhost") or die ("No se puede conectar al servidor"); mysql_select_db ("base22feb") or die ("No se puede seleccionar BD"); //trayendo ultimo id de la tabla especialidad $query_id_esp = mysql_query ("Select max(id_esp) from especialidad"); $r_id_esp = mysql_fetch_array($query_id_esp); $id_esp = $r_id_esp[0]; // Con esta sentencia SQL insertaremos los datos en la base de datos mysql_query("INSERT INTO cat_preg (preg) VALUES ('{$_POST['preg']}')",$connection);

$id_preg = mysql_insert_id(); //metiendo el ltimo id_esp a la tabla cat_preg $instruccion = "update cat_preg set tipo_esp=$id_esp where id_preg= $id_preg"; $actualizacion = mysql_query ($instruccion, $connection) or die ("Fallo en el agregado de la id_esp");

Estuve leyendo en otro lado y vi algo as: Cdigo PHP:


$consulta = "SELECT MAX(ID) FROM notas"; $res = myql_query($consulta,$id); $ultima_nota = mysql_result(MAX(ID)");

o nada ke ver? Qu estar haciedno mal?. ke alguien me expliquee #12 (permalink) 28/02/2007, 11:37 deet Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL sera mucho mas fcil ayudarte si pusieras el warning que te aparece en pantalla. __________________
www.se-group.net www.divisiongt.com.ar

Fecha de Ingreso: mayo-2005 Ubicacin: Crdoba - Argentina Mensajes: 267

#13 (permalink) 28/02/2007, 11:54 dess01 Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL ok, sorry, asi dice: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\apachefriends\xampp\htdocs\27feb06\dos6-28feb07.php on line 32 la linea 32 es esta: Cdigo PHP:
$r_id_esp = mysql_fetch_array($query_id_esp);

Fecha de Ingreso: febrero-2007 Ubicacin: Mxico Mensajes: 44

de que se trata ese warning? #14 (permalink) 28/02/2007, 12:30 deet Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL ahi dice que la sentencia sql no es vlida, es extrao ya que es una consulta muy simple, tal vez sea una versin de mysql que no soporta max(), la verdad que desconozco a que se debe, nunca me ha sucedido algo igual, lo que se me ocurre es hacerlo de otra manera: Cdigo PHP:
//trayendo ultimo id de la tabla especialidad $query_id_esp = mysql_query ("Select id_esp from especialidad ORDER BY id_esp DESC LIMIT 0,1"); $r_id_esp = mysql_fetch_array($query_id_esp);

Fecha de Ingreso: mayo-2005 Ubicacin: Crdoba - Argentina Mensajes: 267

esto no es lo ptimo pero creo que saca de apuros. espero que te sirva. __________________
www.se-group.net www.divisiongt.com.ar

#15 (permalink) 28/02/2007, 17:31 dess01 Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL Eureka! Me funciona ya de maravilla!, el error ke les expuse anterioremente fue por error de dedo Por la emocin no me haba percatado que haba anotado mal el nombre de la tabla especialidad, oops, sorry!! Fecha de Ingreso: febrero-2007 Ubicacin: Mxico Mensajes: 44

Muxas gracias muxax@s!! Los quiero Saluditos!. Seguir paseandome por el foro.

mysql_insert_id
(PHP 4, PHP 5) mysql_insert_id Obtiene la ID generada en la ltima consulta Report a bug

Descripcin
int mysql_insert_id ([ resource $link_identifier ] ) Recupera el ID generado por una columna AUTO_INCREMENT por la consulta previa (normalmente INSERT). Report a bug

Parmetros
link_identifier

La conexin MySQL. Si el identificador de enlace no se especifica, el ltimo enlace abierto por mysql_connect() es asumido. Si no se encuentra dicho enlace, la funcin intentar establecer un nuevo enlace como si mysql_connect() fuese invocado sin parmetros. Si no se encuentra o establece una conexin, un error de nivel E_WARNING es generado. Report a bug

Valores devueltos

La ID generada por una columna AUTO_INCREMENT por la consulta previa en caso de xito, 0 si la anterior consulta previa no genera un valor AUTO_INCREMENT, o FALSE si no se estableci una conexin MySQL. Report a bug

Ejemplos
Example #1 Ejemplo de mysql_insert_id()
<?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } mysql_select_db('mydb'); mysql_query("INSERT INTO mytable (product) values ('kossu')"); printf("Last inserted record has id %d\n", mysql_insert_id()); ?>

Report a bug

Notas
Caution mysql_insert_id() convertir el tipo de retorno de la funcin nativa de MySQL en el API de C mysql_insert_id() a un tipo long (llamado int en PHP). Si su columna AUTO_INCREMENT tiene un tipo BIGINT (64 bits) la conversin puede resultar en un valor incorrecto. En su lugar, use la funcin interna de SQL en MySQL LAST_INSERT_ID() en una consulta SQL. Para ms informacin sobre los valores mximos de integers, por favor vea la documentacin de integer. Note: Because mysql_insert_id() acts on the last performed query, be sure to call mysql_insert_id() immediately after the query that generates the value. Como mysql_insert_id() en la ltima consulta que ha funcionado, asegrese de llamar a mysql_insert_id() inmediatamente despues de la consulta que genera el valor. Note: El valor de la funcin SQL en MySQL LAST_INSERT_ID() siempre contiene el valor ms recientientemente generado por AUTO_INCREMENT, y no es reseteado entre consultas.

obtener valor de otra tabla segun ID Avisos Google Chatea con tus Amigos Busca y Conecta con tus Amigos en Facebook. Regstrate Ahora! www.Facebook.com "Master Recursos Humanos" Doble Titulacin Europea Becas hasta el 75%. Ultimas Plazas! www.eude.es Licenciatura a Distancia Estudia sin asistir a clase, Licenciatura 100% a Distancia. www.aiu.edu

Herramientas

Desplegado

#1 (permalink) 22/02/2011, 02:40 Fecha de Ingreso: febrero2011 Mensajes: 34 obtener valor de otra tabla segun ID actualmente tengo creado esto, un paginador que lee de una tabla y muestra sus valores.

crissrocca

$resultados = mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1"); $total_registros = mysql_num_rows($resultados); $resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros"); $total_paginas = ceil($total_registros / $registros); if($total_registros) { while($articulo=mysql_fetch_array($resultados)) { echo "<b>".$articulo["catid"]."/".$articulo["subcatid"]."/".$articulo["subcat2id"]."/". $articulo["formato"]."</b><br>"; echo "<b>".$articulo["precio"]."</b><br>"; echo "<b>".$articulo["picture1"]."</b>"; echo "<b>".$articulo["picture2"]."</b><br>"; echo "<font color='#666666'>".$articulo["location"]."</font><br><br><br>"; } } else { echo "<font color='darkgray'>(sin resultados)</font>"; } esto funciona correctamente y muestra todos los valores con el ID de la tabla correspondiente phpbazar_ads. lo que necesito hacer es que en lugar de mostrar los "ID", lea esos "ID" en la tabla phpbazar_adcat y muestre su valor "NAME". asi mismo en "picture1" y "picture2" necesito que pinte la imagen, no el valor del campo en formato textual. Avisos Google Ultimate Windows Tools Tools to Administrate,Report,Alert Control, Secure, Deploy & Migrate. www.pointdev.com/Ideal_Admin Web based OLAP Client for Microsoft Analysis Services download Free Evaluation www.ReportPortal.com Curso Online de Java Aprende a programar Java y a desarrollar aplicaciones. Infrmate www.seas.es

#2 (permalink)

22/02/2011, 03:38 bienpiyao Respuesta: obtener valor de otra tabla segun ID Hola, para la primera cuestin prueba sto: Fecha de Ingreso: agosto-2009 Mensajes: 153

Cdigo PHP: Ver originalCopiar $sql = "SELECT * FROM phpbazar_ads";

$res = mysql_query($sql);

while($row = mysql_fetch_array($res)) {

$sql1 = "SELECT name FROM phpbazar_adcat WHERE id = '".$row["id"]."'";

$res1 = mysql_query($sql1);

echo 'LO QUE QUIERAS IMPRIMIR';

Espero que te sirva. Para lo de las fotos, tendrs que darme ms datos como qu guardas en la base de datos (si la imagen, la ruta o el nombre), cmo la guardas y cmo la subes al servidor... Cualquier duda, pregunta. Un saludo!

#3 (permalink) 22/02/2011, 05:45 Fecha de Ingreso: junio2009 marcofbb Ubicacin: Argentina Mensajes: 454 Respuesta: obtener valor de otra tabla segun ID Proba con la syntax INNER JOIN de MySQL __________________ Marcofbb | Artculos y Noticias sobre webmasters La mejor forma de demostrarme que te ayude es con un gracias y karma =)

#4 (permalink) 22/02/2011, 10:41 Fecha de Ingreso: febrero2011 Mensajes: 34 Respuesta: obtener valor de otra tabla segun ID

crissrocca

la imagen la guarda en el servidor y en una tabla dentro del campo "picture1" escribe por ejemplo el nombre de la imagen "blue_picture.jpg". respecto a lo que me has pasado, te refieres a usar lo que me has puesto o a incluir lo que me has puesto dentro de while($articulo=mysql_fetch_array($resultados)) {... porque realmente a mi lo que tengo ahora me funciona perfecto, tan solo necesito que esos valores ID que recoge y pinta los cambie por el "name" que esta en otra tabla, relacionado por el mismo ID.

#5 (permalink) 22/02/2011, 10:44 Fecha de Ingreso: febrero2011 Mensajes: 34 Respuesta: obtener valor de otra tabla segun ID Ok, por lo que veo seria algo asi. SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo voy a probarlo y os cuento.

crissrocca

#6 (permalink) 22/02/2011, 11:08 bienpiyao Respuesta: obtener valor de otra tabla segun ID Fecha de Ingreso: agosto-2009 Mensajes: 153

Respecto a lo de las fotos, si guardas el nombre de la foto en un campo varchar en la base de datos, para mostrarla sera tan sencillo como: Cdigo PHP: <img width="180" height="205" src="ruta/<?php echo $foto; ?>"> Dnde ruta/ es la ruta del servidor donde se encuentra la foto y $foto es el nombre de la foto. Prueba lo otro como te dijo marcofbb y si no consigues solucionarlo, dmelo que te pongo otro ejemplo un poco ms claro. SaludoS!!

#7 (permalink) 22/02/2011, 17:28 Fecha de Ingreso: febrero2011 Mensajes: 34 Respuesta: obtener valor de otra tabla segun ID

crissrocca

actualmente he visto que no puedo usar: SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo por que cada campo lo tiene que relacionar con una tabla diferente, digamos que tendria que ser algo asi: SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo SELECT campos FROM tabla1 INNER JOIN tabla3 ON tabla1.campo = tabla2.campo SELECT campos FROM tabla1 INNER JOIN tabla4 ON tabla1.campo =

tabla2.campo esto es un poco caotico y supongo que esto se puede realizar de alguna manera mas facil, a ver si alguien tiene idea de como relacionarlo. el tema de mostrar la imagen ya me funciona con la siguiente linea: Cdigo PHP: Ver originalCopiar <? if ($articulo['picture1']){ ?> <img width="180" height="200" src="http://localhost/<?php echo $articulo['picture1']; ?>"><br/> <? } else { echo "<b>Sin Imagen</b>"; }?>

#8 (permalink) 22/02/2011, 21:28 Fecha de Ingreso: octubre-2007 argy Ubicacin: Longitud 75 Latitud 18 Sur Mensajes: 615 Respuesta: obtener valor de otra tabla segun ID mmm?, me late que debes de revisar tu modelo de BD, porque relacionar la misma columna con tantas tablas. Utilizar una conexin al server dentro de un while no es recomendable. __________________ Software libre para un mundo libre.

Eventualmente en el foro.

58

Fecha de Ing

Mensajes: 15

er valor de otra tabla segun ID

uncionara lo de la foto, ahora a ver si solucionamos lo otro.

sql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1"); mysql_num_rows($resultados); sql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registro ceil($total_registros / $registros); {

ysql_fetch_array($resultados)) {

es hacer una consulta a la tabla phpbazar_adcat para sacar el NAME segn el id*/

ame dcat iable."'";

y($sql); ch_array($res);

que el while de una vuelta, tendrs slo 1 id, por tanto te sacar el nombre de ese id y ya slo te queda imprim

ariable por aquella variable que contenga el campo que une las dos tablas (que no s cul es).*/

ulo["catid"]."/".$articulo["subcatid"]."/".$articulo["subcat2id"]."/".$articulo["formato"]."</b><br>"; ulo["precio"]."</b><br>"; ulo["picture1"]."</b>"; ulo["picture2"]."</b><br>"; ='#666666'>".$articulo["location"]."</font><br><br><br>";

='darkgray'>(sin resultados)</font>";

es.

03

Fecha de In 2009

Mensajes: 2

er valor de otra tabla segun ID

ra guardar la ruta de la imagen en la base de datos al hacer la consulta, deberas de hacer esto.

$articulo['picture1']'>";

que puedes hacer para leer las IDs

ame FROM phpazard_ads WHERE id='".$articulo['id']."';"; uery($sql,$link); ql_fetch_array($query,MYSQL_NUM))

n";

ara cada ID, puedes meterlo dentro de un bucle.

1"); ORDER BY precio DESC LIMIT $inicio, $registros");

AME segn el id*/

el nombre de ese id y ya slo te queda imprimirlo con $row["name"]; dos tablas (que no s cul es).*/

".$articulo["formato"]."</b><br>";

que contienen el NAME relacionado con ese ID.

s rapido y sencillo, ya que he tenido que realizar la query 3 veces y a su vez esta dentro de otra query que llena

w = 1");

= 1 ORDER BY precio DESC LIMIT $inicio, $registros");

ma

w = 1 AND catid =$_POST['catid'] OR subcatid=$_POST['subcatid'] OR subcat2id=$_POST['subcat2id'] OR forma

= 1 AND catid =$_POST['catid'] OR subcatid=$_POST['subcatid'] OR subcat2id=$_POST['subcat2id'] OR formato

or, por ejemplo:

AND catid =$_POST['catid'] ORDER BY id");

= 1 AND catid =$_POST['catid'] ORDER BY precio DESC LIMIT $inicio, $registros");

todas las variables.

ngo que ponerlo de otra manera, no?

ble siempre pasaba un "0", de ahi el error al hacer las consultas.

";

nciona correctamnete.

Recuperar la id despus de su insercin con php


20 de abril de 2005 Autor: cmacias Archivado en PHP/MySQL, Tutoriales

Cuantas veces hemos necesitado saber el id del registro que acabamos de insertar? Con una sola lnea de cdigo es posible Hay ocasiones en las que es necesario recuperar la id del ltimo registro insertado, bien sea para mostrarlo en pantalla, o para pasarlo mediante una variable para insertar un registro relacionado. En php es muy sencillo, simplemente hay que usar la funcin?mysql_insert_id() Una vez hacemos una insercin desde dreamweaver, necesitamos buscar las siguientes lneas
mysql_select_db($database_conn, $conn); $Result1 = mysql_query($insertSQL, $conn) or die(mysql_error()); $insertGoTo = "ok.php";

Y aadir lo siguiente:
mysql_select_db($database_conn, $conn); $Result1 = mysql_query($insertSQL, $conn) or die(mysql_error()); $id = mysql_insert_id(); $insertGoTo = "ok.php?id=".$id;

De esta manera y as de fcil, podemos obtener el ltimo registro insertado. Ms informacin acerca de mysql_insert_id(); en : http://es.php.net/manual/es/function.mysql-insert-id.php
Puedes seguir las respuestas a este post mediante nuestro RSS 2.0 feed. Puedes dejar una respuesta, o un trackback desde tu sitio. subscribete a los comentarios en formato RSS Hay 6 comentarios en este post.

1.

Alrevez dice: 04/05/2007 a las 1:38 am

Eso era preciso lo que estaba buscando, muchas gracias!

2.

josue dice: 26/05/2008 a las 10:32 am

cmom puedo yo hacer eso en dream si modifico me borra el comportamiento s asi se dice

3.

josue dice: 26/05/2008 a las 11:19 am

listo ya pude para lo q no puedan, modifiquen el codigo , aunq en el panel de comportamientos se desaparesca siempre sirve!!!

4.

Andres Cayon dice: 26/05/2008 a las 8:04 pm

Josu: como has podido comprobar al editar el cdigo, el comportamiento no desaparece sino que DW no lo reconoce porque no coincide con el cdigo original. DW es muy estricto (quiz demasiado, pero es opinable) en ese aspecto.

5.

josue dice: 30/05/2008 a las 2:09 pm

AMIGO AHORA TENGO UNA DUDA, COMO HAGO PARA ENVIAR ESO POR POST?? XQ EN LA SEGUNDA PAGINA, SE CAPTURA POR VARIABLE DE FORMULARIO (POST) SE LLAMA ID2 GRACIAS AMIGO

6.

Harold Hernan Gonzalez dice: 29/07/2009 a las 5:57 pm

Muchas gracias funciona muy bien.

Das könnte Ihnen auch gefallen