Foros del Web » Programando para Internet » PHP »

tengo la siguinet fconfucion ...

Estas en el tema de tengo la siguinet fconfucion ... en el foro de PHP en Foros del Web. estimado si me pueden sacar de una duda tengo a siguinte funcion en la cual guardo datos del cliente y el detalle de este por ...
  #1 (permalink)  
Antiguo 30/07/2009, 21:32
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
tengo la siguinet fconfucion ...

estimado si me pueden sacar de una duda


tengo a siguinte funcion en la cual guardo datos del cliente y el detalle de este por ej donde vive domicilio etc

mi confucion es cuando yo quierea mostar los datos complatos personales mas el detalle en la tabla detalle tengo que tener guardado el id_del cliente sierto


esta es mi funcion


Código PHP:
function crear($nom,$dep,$suel,$mon,$det,$plan){
  
$con = new DBManager;
  if(
$con->conectar()==true){
    
$query "INSERT INTO tblcliente (Nombre, Apellido, Rut)
        VALUES ('$Nom','$dep','$suel')"
;
        
        
$query2 "INSERT INTO tbldetallecliente  (Movil, domicilio)
        VALUES ('$mon','$det','$plan')"
;
        
    
$result mysql_query($query);
    if (!
$result)
          return 
false;
    else
      return 
true;
  }

  #2 (permalink)  
Antiguo 31/07/2009, 11:03
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 3 meses
Puntos: 46
Respuesta: tengo la siguinet fconfucion ...

si, asi es para poder acceder a los detalles del cliente necesitas el id correspondiente a este registro, si muestras tus tablas te podriamos ayudar mejor con la consulta
  #3 (permalink)  
Antiguo 31/07/2009, 11:42
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: tengo la siguinet fconfucion ...

al ejecutar la primera query, utiliza mysql_insert_id para obtener el último id del insert y asi puedas ejecutar la otra consulta
  #4 (permalink)  
Antiguo 02/08/2009, 10:57
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Esta sn las tablas

Código PHP:
CREATE TABLE `tbl_detallecliente` (
  `
ID_DetalleClienteint(11NOT NULL auto_increment,
  `
Domiciliovarchar(45collate latin1_general_ci NOT NULL,
  `
Telefonoint(11NOT NULL,
  `
Movilint(11NOT NULL,
  `
Emailvarchar(45collate latin1_general_ci NOT NULL,
  
PRIMARY KEY  (`ID_DetalleCliente`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=;

-- 
CREATE TABLE `tbl_clientes` (
`Id_Cliente` int(11) NOT NULL auto_increment,
`Nombre` varchar(45) collate latin1_general_ci NOT NULL,
`Apellido` varchar(45) collate latin1_general_ci NOT NULL,
`Rut` varchar(15) collate latin1_general_ci NOT NULL,
`Edad` int(11) NOT NULL,
`Nacionalidad` varchar(45) collate latin1_general_ci NOT NULL,
`Sexo` int(11) NOT NULL,
`Activo` int(11) NOT NULL,
PRIMARY KEY (`Id_Cliente`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;

--

esta son las dos tablas que estoy utilisando

No entendo loq ue me quiere decir

maycolalvarez

al ejecutar la primera query, utiliza mysql_insert_id para obtener el último id del insert y asi puedas ejecutar la otra consulta?

Al parecer no entendieron la consulta plop

Última edición por GatorV; 03/08/2009 a las 09:21
  #5 (permalink)  
Antiguo 03/08/2009, 09:12
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 3 meses
Puntos: 46
Respuesta: tengo la siguinet fconfucion ...

mira para sacar todos los registros relacionados a un solo cliente de las dos tablas seria algo como lo que sigue

select tbl_clientes.*, tbl_detallecliente.* from tbl_detallecliente, tbl_clientes where tbl_clientes.id_Cliente='algun id' and tbl_clientes.id_Cliente=tbl_detallecliente.ID_Deta lleCliente;

con esta consulta te retornara todos los campos de ambas tablas relacionados con solo cliente.

para obtener el i de puedes utilizar la funcion que menciona maycolalvarez mysql_insert_id


ahh y como datos, tus tablas estan mal diseñadas por que la tabla que contiene la clave foranea no puede ser auto_increment y mucho menor clave primaria


CREATE TABLE `tbl_detallecliente` (
`ID_DetalleCliente` int(11) NOT NULL auto_increment,
`Domicilio` varchar(45) collate latin1_general_ci NOT NULL,
`Telefono` int(11) NOT NULL,
`Movil` int(11) NOT NULL,
`Email` varchar(45) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`ID_DetalleCliente`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

Última edición por lair; 03/08/2009 a las 09:26
  #6 (permalink)  
Antiguo 03/08/2009, 15:18
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Pregunta Respuesta: tengo la siguinet fconfucion ...

lo que necesito no es que me muestre sino que me guarde cosa que cuado selecione al rut me traiga todos los datso corespondientes a es persona
  #7 (permalink)  
Antiguo 03/08/2009, 15:30
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 3 meses
Puntos: 46
Respuesta: tengo la siguinet fconfucion ...

bueno pues en realizad, no entiendo ni la necesidad de la segunda tabla, todos esos datos bien pueden estar contenidos en una sola
  #8 (permalink)  
Antiguo 03/08/2009, 18:07
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: tengo la siguinet fconfucion ...

esque en el detalle guardo un historico de direciondes telefonos etc y solo eses datos son modificables
  #9 (permalink)  
Antiguo 05/08/2009, 09:22
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 3 meses
Puntos: 46
Respuesta: tengo la siguinet fconfucion ...

entonces el problema es cuando insertas, lo que quieres es insertar en las dos tablas verdad?

bueno, primero te recomiendo que modifiques tu tabla de detalles para que sea mas facil la busqueda.

CREATE TABLE `tbl_detallecliente` (
`id` int(11) not null auto_increment,
`ID_DetalleCliente` int(11) NOT NULL ,
`Domicilio` varchar(45) collate latin1_general_ci NOT NULL,
`Telefono` int(11) NOT NULL,
`Movil` int(11) NOT NULL,
`Email` varchar(45) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

con la modificacion de esta manera a la tabla cada registro tendra se identificador y estaran relacionadas a un mismo usuario.

y cuando insertas en la primer tabla tambien lo hagas en la segunda.

Código PHP:
function crear($nom,$dep,$suel,$mon,$det,$plan){
  
$con = new DBManager;
  if(
$con->conectar()==true){
    
$query "INSERT INTO tblcliente (Nombre, Apellido, Rut)
        VALUES ('$Nom','$dep','$suel')"
;
        
        
$query2 "INSERT INTO tbldetallecliente  (Movil, domicilio)
        VALUES ('$mon','$det')"
;
        
    
$result mysql_query($query);
    
$result2 mysql_query($query2);
    if (!
$result && !result2)
          return 
false;
    else
      return 
true;
  }

lo que no entiendo muy bien es si un usuario va tener varios numero de movil, mails, domicilios, etc, por eso te comentaba que no vei la necesidad de la tabla de detalle.

cualquier cosa me avisas y aqui estamos en contacto suerte
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:38.