Foros del Web » Programando para Internet » PHP »

ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

Estas en el tema de ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/02/2007, 11:49
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Mensaje 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 código 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 sería la sentencia o el código para extraer ese valor autoincrementable de la "id_esp" y guardarlo en los campos respectivos??? O estará mal mi lógica??
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.

Muchas gracias, espero su pronta ayuda.
Saludos a todos!
  #2 (permalink)  
Antiguo 23/02/2007, 11:58
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
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
__________________

  #3 (permalink)  
Antiguo 23/02/2007, 11:59
 
Fecha de Ingreso: julio-2005
Mensajes: 24
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

El id tipo autoincrement se obtiene asi:

mysql_query("insert into especialidad....", $conexion)

Obtén el id generado con:

$id_esp = mysql_insert_id()
  #4 (permalink)  
Antiguo 23/02/2007, 12:03
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
De acuerdo Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

Hola dess01.

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 lógica.

Saludos.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 23/02/2007, 18:31
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
De acuerdo 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 código:
Código 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 función.
De verdad muxas gracias, espero su apoyo para que me orienten por favor. Saluditos!!
  #6 (permalink)  
Antiguo 25/02/2007, 22:40
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
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)  
Antiguo 26/02/2007, 19:15
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

Holaa?
ENtonces no hay nadie ke me pueda echar la mano? '(
  #8 (permalink)  
Antiguo 27/02/2007, 02:27
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
De acuerdo 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.

Solución: (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
  #9 (permalink)  
Antiguo 27/02/2007, 20:08
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

Hola hola "Patrón", muxas gracias!!

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

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

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

Código PHP:
<?php
$sql_1 = "SELECT MAX(id) FROM tabla1;";
realizas la consulta y extraes el valor obtenido y lo guardas en la otra tabla y listo ;)"


Ya que 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 (cat_resp) para asociarlas. pero no me sale

Agregué ese parte en mi codigo así:

Código 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
$id_esp"SELECT MAX(id_esp) FROM especialidad"
    
// insertaremos los datos de la preg a la base de datos
mysql_query("INSERT INTO cat_preg (preg)
VALUES ('{$_POST['preg']}')"
,$connection);
    
$id_preg mysql_insert_id();
    
//metiendo el ultimo id_esp insertado al cat_preg. se me hace que otra vez la estoy regando en esta parte. :'( 
$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");

.... 
Les tengo ke komentar ke en este codigo de php no tengo que hacer la consulta así:
Código PHP:
mysql_query("INSERT INTO cat_especialidad (especialidad)
    VALUES ('{$_POST['especialidad']}')"
,$connection); 
ya que en este archivo php no está el fomulario ke me permitirá guardar los datos de la especialidad, eso lo hice en otro archivo php que tiene el enlace que me lleva a éste en donde esta el formulario de preguntas y respuestas.. Así que esta consulta de la especialidad está en el formulario1.php . No sé si me explico bien..

ejemplo:

**formulario1.php**
Nombre especialidad:______
<boton guardar>
Hacer encuesta <-- link

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

**formulario2.php**
Escribe pregunta: ______
Escribe tu REsp1:____
Escribe tu Resp2:____
Escribe tu REsp3:____

<boton guardar>

Cuando 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.

No sé si tenga ke ver que utilizo dos archivos para eso o definitivamente me falta alguna otra consulta que hacer para meter esa id.

Espero me puedan auxiliar prontito Porfis! GrAcIaS!
  #10 (permalink)  
Antiguo 28/02/2007, 08:35
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

Hola

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

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

lo que 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 tienes la segunda, lo que te faltaria es esto

Código PHP:
<?
$query_id_esp 
mysql_query("Select max(id_esp) from especialidad");
$r_id_esp mysql_fetch_array($query_id_esp);
//puse el echo para que veas el id, pero pues lo puedes quitar sin //problema

echo $id_esp $r_id_esp[0];
Y ahora 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 que contenia la consulta y pues es por eso que no te estaba guardando el valor.

Espero te funcione bien, y si no por aqui andare, suerte.
  #11 (permalink)  
Antiguo 28/02/2007, 11:39
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

Gracias "Patrón", pero lo siento mas cómodo 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:
Código PHP:
$r_id_esp mysql_fetch_array($query_id_esp); 
Supuestamente mi código queda finalmente así, cierto?

Código 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í:
Código 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)  
Antiguo 28/02/2007, 12:37
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 19 años
Puntos: 1
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

sería mucho mas fácil ayudarte si pusieras el warning que te aparece en pantalla.
  #13 (permalink)  
Antiguo 28/02/2007, 12:54
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
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:

Código PHP:
$r_id_esp mysql_fetch_array($query_id_esp); 
de que se trata ese warning?
  #14 (permalink)  
Antiguo 28/02/2007, 13:30
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 19 años
Puntos: 1
Re: ExTrAeR dAtO dE tAbLa CoN pHp y mYsQL

ahi dice que la sentencia sql no es válida,

es extraño ya que es una consulta muy simple, tal vez sea una versión 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:


Código 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); 
esto no es lo óptimo pero creo que saca de apuros.

espero que te sirva.
  #15 (permalink)  
Antiguo 28/02/2007, 18:31
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
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 emoción no me había percatado que había anotado mal el nombre de la tabla especialidad, oops, sorry!!

Muxas gracias muxax@s!! Los quiero
Saluditos!.

Seguiré paseandome por el foro.
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:18.