Gadgeteros Laneros HWCol

insertar registros a diferentes tablas desde php a mysql

Tema en 'Programacion y Diseño de Software' iniciado por shadow sonic, 30 Mayo 2005.

  1. shadow sonic

    shadow sonic Lanero novato

    Mensajes:
    225
    hola
    desde php para insertar un registro a una tabla en mysql lo hago asi
    PHP:
    mysql_db_query("base de datos","INSERT INTO tabla (campo1,campo2) values ('$variable1','$variable2')");
    pero mi consulta es:
    si quiero ingresar un registro a mas de una tabla como lo hago,esto es lo que quiero hacer,
    en la tabla1 ingreso un rut(clave primaria) pero quiero que ese mismo rut que ingrese en la tabla1 tambien se ingrese al mismo tiempo en la tabla2 donde ese mismo rut en la tabla 2 sera clave foranea.

    ¿como puedo ingresar un mismo registro a 2 tablas al mismo tiempo donde en una tabla sera clave primaria y en otra foranea?

    Anuncio


    otra consulta
    ¿si quiero consultar registros que estan en 2 tablas como lo debo hacer?,en una tabla la clave sera primaria pero en la segunda tabla sea foranea,entonces si ingreso un registro de la tabla1 por ejemplo el nombre de algo para que me muestre los datos que estan en la tabla2 como debo hacerlo,si en la tabla uno un campo sera clave primaria y en la segunda tabla sera clave foranea.como puedo conectar las 2 tablas para que muestre los datos.si ingreso un registro que se llama nombre en la tabla1 para que me muestre los datos que estan en la tabla2.

    si me puede dar un ejemplo sobre mis dos preguntas se los agredeceria mucho
    gracias

    pd: ojala que se entienda lo que explique :confused:
  2. PROGRAMADOR

    PROGRAMADOR Lanero novato

    Mensajes:
    85
    <?php
    $conex = mysql_connect("localhost", "root", "")
    or die("NO se pudo realizar la conexión");

    // Selección de la base de datos
    mysql_select_db("jholy", $conex);

    //Preparación y ejecución de la consulta
    $cons = "SELECT * FROM usuario where cedula='$T3'";
    $resultado = mysql_query($cons,$conex);

    //Obtención del número de filas del resultado
    $Num_filas = mysql_num_rows($resultado);

    if ($Num_filas==0)
    {
    mysql_query("insert into usuario(cedula,nombre,apellido,direccion,ubicacion,telefono) values('$T3','$T1','$T2','$T5','$T4','$T6')");
    //echo "SE A GUARDADO EL NUEVO REGISTRO";
    require("nuevo.htm");
    }
    else
    {
    mysql_query("UPDATE usuario SET cedula='$T3', nombre='$T1', apellido='$T2', direccion='$T5', ubicacion='$T4', telefono='$T6' WHERE cedula='$T3'");
    require("modificar.htm");
    }



    // Liberamos los recursos de las consultas
    mysql_free_result($resultado);

    // Se cierra la conexion
    mysql_close($conex);



    ?>
  3. arthvrian

    arthvrian Lanero reconocido

    Mensajes:
    2,042
    Hola, segun lo que entendi, tienes:

    CODE, HTML o PHP Insertado:
     TABLA1
    
    PK1
    CAMPO1
    CAMPO2
    
    TABLA 2
    
    PK2
    FK2 (referencia a PK1)
    CAMPO1
    CAMPO2
    y quieres poder insertar en las dos tablas XX datos

    PHP:
     //lo que tienes que hacer es 2 mysql_query():
    $pk1 mysql_query("INSERT INTO tabla1 (campo1, campo2) VALUES ($campo1,$campo2)");

    // luego haces un 
    $id mysql_insert_id($pk1); //para saber la PK insertada en la tabla TABLA1 y luego

    mysql_query("INSERT INTO tabla2 (fk, campo1, campo2) VALUES ($id$campo1$campo2)");
    para mostrar los datos haces lo mismo pero con un SELECT y ya

    espero haber sido de ayuda, saludos y suerte
  4. shadow sonic

    shadow sonic Lanero novato

    Mensajes:
    225
    gracias arthvrian eso es lo que necesitaba
    muchas gracias :)
  5. shadow sonic

    shadow sonic Lanero novato

    Mensajes:
    225
    cuando lleno el formulario y hago click en registrar siempre me sale el mensaje Debe llenar los campos y yo lleno todos los campos del formulario pero no ingresa nada cual puede ser el problema o que tengo malo en el codigo.
    gracias

    este es mi formulario html
    CODE, HTML o PHP Insertado:
    <html>
    <head><title>Ingresar Nuevo Profesor</title>
    
    <body>
    
    
    <BR><BR>
    <h1><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ingresar Nuevo Profesor</b></h1>
    <BR><BR><BR>
    
    <form method="POST" action="clase.php">
      <table border="0" cellpadding="0" cellspacing="0" align=center>
      <tr>
        <td width="50%">Rut:</td>
        <td width="50%" align="center"><input size="20" name="rut"></td>
      </tr>
      <tr>
        <td width="50%">Nombre</td>
        <td width="50%" align="center"><input size="20" name="nombre"></td>
      </tr>
        <tr>
        <td width="50%">Apellido</td>
        <td width="50%" align="center"><input size="20" name="apellido"></td>
      </tr>
         <tr>
        <td width="50%">Telefono</td>
        <td width="50%" align="center"><input size="20" name="telefono"></td>
      </tr>
        <tr>
        <td width="50%">E-mail</td>
        <td width="50%" align="center"><input size="20" name="email"></td>
      </tr>
    
      <tr>
        <td width="50%"><h1><br>Ingreso Asignatura</h1></td>
        </tr>
    
       <tr>
        <td width="50%">Codigo Asignatura</td>
        <td width="50%" align="center"><input size="20" name="codigo"></td>
      </tr>
        <tr>
        <td width="50%">Nombre Asignatura</td>
        <td width="50%" align="center"><input size="20" name="nombre_asig"></td>
      </tr>
         <tr>
        <td width="50%">Cantidad Alumnos</td>
        <td width="50%" align="center"><input size="20" name="alumnos"></td>
      </tr>
    
    </table>
    
    
    
    
    
    <BR><BR><BR>
    
    <table border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="50%">
      <input type="submit" value="Registrar" name="registrar" ></td>
        <td width="50%">
      <input type="reset" value="Borrar Formulario" style="float: right" ></td>
      </tr>
    </table>
    
    </form>
    </head>
    </body>
    </html>
    





    esta es mi clase php con cual ingreso los datos
    PHP:
    <?php
       
    class Asignatura_datos
    {
         var 
    $rut;
         var 
    $nombre;
         var 
    $apellido;
         var 
    $telefono;
         var 
    $email;
         var 
    $pk1;
         var 
    $id;
         var 
    $codigo;
         var 
    $nombre_asig;
         var 
    $alumnos;


         function 
    ingreso($rut,$nombre,$apellido,$telefono,$email,$id,$codigo,$nombre_asig,$alumnos)
         {
         
    $this->rut=$rut;
         
    $this->nombre=$nombre;
         
    $this->apellido=$apellido;
         
    $this->telefono=$telefono;
         
    $this->email=$email;
         
    $this->id=$id;
         
    $this->codigo=$codigo;
         
    $this->nombre=$nombre_asig;
         
    $this->alumnos=$alumnos;


         if (
    $this->rut=="" and $this->nombre=="" and $this->apellido=="" and $this->telefono=="" and $this->email==""
            
    and $this->id=="" and $this->codigo=="" and $this->nombre_asig=="" and $this->alumnos=="")
       {
       echo 
    "<center><b>Debe llenar los campos</center></b>";
       }
    else
      {
        if(
    $this->rut==true and $this->nombre==true and $this->apellido==true and $this->telefono==true and $this->email==true
        
    and $this->id==true and $this->codigo==true and $this->nombre_asig==true and $this->alumnos==true)
          {

          
    mysql_connect("localhost","root","");

          
    $this->pk1=mysql_db_query("sase","INSERT INTO PROFESOR (RUT,NOMBRE,APELLIDO,FONO,E_MAIL) values ('$this->rut','$this->nombre','$this->apellido','$this->telefono','$this->email')");
          
    $this->id=@mysql_insert_id($this->pk1);
          @
    mysql_query"sase","INSERT INTO ASIGNATURA (COD_ASIGNATURA,RUT,NOMBRE,CANT_ALUM) values ('$this->codigo','$this->id','$this->nombre_asig','$this->alumnos')");

          
    mysql_close();
          echo 
    "<b><center>Registro ingresado</center></b>";
          }
        else
          {
          echo 
    "<b><center>Debe llenar los campos</center></b>";
          }
          }

        }}
    ?>

    y esta es la clase que llamo desde el formulario

    PHP:
    <?php

    include ("Asignatura_datos.php");
    $ing=new Asignatura_datos();
    $ing->ingreso($rut,$nombre,$apellido,$telefono,$email,$id,$codigo,$nombre,$alumnos);

    ?>
  6. arthvrian

    arthvrian Lanero reconocido

    Mensajes:
    2,042
    Hola de nuevo solo una pregunta, porque no haces la validacion de los campos con javascript??? en Mr Google hay muchos ejemplos
  7. shadow sonic

    shadow sonic Lanero novato

    Mensajes:
    225
    hola
    en la clase php me muestra el mensaje "debe llenar los campos" que esta al final (en esta parte)
    CODE, HTML o PHP Insertado:
     mysql_close();
          echo "<b><center>Registro ingresado</center></b>";
          }
        else
          {
          echo "<b><center>Debe llenar los campos</center></b>";
          }
          } 
    
    
    eso quiere decir que entra al codigo
    una pregunta esto lo tengo bien hecho,aqui ingreso la pk(la pk de la tabla1 se llama RUT) a la tabla1 que en este caso se llama "PROFESOR" y a la vez deberia copiarse a la tabla2 que se llama "ASIGNATURA" para quedar como fk(en la tabla dos tambien se llama RUT pero aqui sera fk) de la tabla ASIGNATURA.
    PHP:
    <php
    $this
    ->pk1=mysql_db_query("sase","INSERT INTO PROFESOR (RUT,NOMBRE,APELLIDO,FONO,E_MAIL) values ('$this->rut','$this->nombre','$this->apellido','$this->telefono','$this->email')");
          
    $this->id=@mysql_insert_id($this->pk1);
          @
    mysql_query"sase","INSERT INTO ASIGNATURA (COD_ASIGNATURA,RUT,NOMBRE,CANT_ALUM) values ('$this->codigo','$this->id','$this->nombre_asig','$this->alumnos')");
    ?>
    gracias
    pd:y no lo hago con javascript porque ahora ya no tengo tiempo para buscar en google porque tengo que entregar este trabajo mañana a las 8 de la mañana.
  8. shadow sonic

    shadow sonic Lanero novato

    Mensajes:
    225
    lo otro coloque esto al final de la funcion ingresar para ver si esta pasando los valores a la variable y si las variables contienen los valores que le ingreso desde el formulario pero el problema esta que no ingreso esos valores a la base de datos.
    que puede ser :(

    PHP:
    <php
    echo $this->rut;
        echo 
    $this->nombre;
        echo 
    $this->apellido;
        echo 
    $this->telefono;
        echo 
    $this->email;
        echo 
    $this->id;
        echo 
    $this->codigo;
        echo 
    $this->nombre;
        echo 
    $this->alumnos;
    ?>
  9. arthvrian

    arthvrian Lanero reconocido

    Mensajes:
    2,042
    prueba esto:
    PHP:
    <?php
       
    echo "<center><b>Debe llenar los campos</center></b>";
       echo 
    $this->rut;
        echo 
    $this->nombre;
        echo 
    $this->apellido;
        echo 
    $this->telefono;
        echo 
    $this->email;
        echo 
    $this->id;
        echo 
    $this->codigo;
        echo 
    $this->nombre;
        echo 
    $this->alumnos;
    exit();
    ?>
    o si no
    CODE, HTML o PHP Insertado:
    [b]javascript [/b]
    function MM_validateForm() { //v4.0
      var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
      for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    	if (val) { nm=val.name; if ((val=val.value)!="") {
    	  if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    		if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe ser una dirección de correo valida.\n';
    	  } else if (test!='R') { num = parseFloat(val);
    		if (isNaN(val)) errors+='- '+nm+' debe ser numerico.\n';
    		if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
    		  min=test.substring(8,p); max=test.substring(p+1);
    		  if (num<min || max<num) errors+='- '+nm+' debe ser un número entre '+min+' y '+max+'.\n';
    	} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' es un campo requerido.\n'; }
      } if (errors) alert('Error(es) ocurrido(s):\n\n'+errors);
      document.MM_returnValue = (errors == '');
    }
    
    y reemplaza el boton con
    CODE, HTML o PHP Insertado:
    <input name="Submit" type="submit" onClick="MM_validateForm('Nombre','','R','Campo2','R'');return document.MM_returnValue" value="Enviar">
    
    donde Campo2 se repetira con el respectivo nombre del campo del formulario tantas veces como sea necesario

    la R es de requerido

    saldudos y suerte
  10. shadow sonic

    shadow sonic Lanero novato

    Mensajes:
    225

    gracias por ayudarme
    voy a prbar eso de validar con javascript y en cuanto al programa la falla me la esta dando en insertar la clave primaria de la tabla1 e insertarla como foranea en la tabla2.

    pero no logro solucionarlo
    tu logras encontrar alguna falla en esta parte del codigo
    PHP:
    <php
    $this
    ->pk1=mysql_db_query("sase","INSERT INTO PROFESOR (RUT,NOMBRE,APELLIDO,FONO,E_MAIL) values ('$this->rut','$this->nombre','$this->apellido','$this->telefono','$this->email')");
          
    $this->id=@mysql_insert_id($this->pk1);
          @
    mysql_query"sase","INSERT INTO ASIGNATURA (COD_ASIGNATURA,RUT,NOMBRE,CANT_ALUM) values ('$this->codigo','$this->id','$this->nombre_asig','$this->alumnos')");
    ?> 
  11. arthvrian

    arthvrian Lanero reconocido

    Mensajes:
    2,042
    pues No, que error te vota?
  12. shadow sonic

    shadow sonic Lanero novato

    Mensajes:
    225
    eso es lo raro ,no me da errores,solo que no esta copiando la clave primaria a la segunda tabla para dejarla como foranea
  13. arthvrian

    arthvrian Lanero reconocido

    Mensajes:
    2,042
    Hola de nuevo, entonces creo que el error debe estar en la definicion de la Base de Datos
  14. shadow sonic

    shadow sonic Lanero novato

    Mensajes:
    225
    gracias por ayudarme ya pude solucionarlo,el error estaba en la base de datos ,no tenia bien declarada la foreing key

Compartir esta página

Certain XenForo add-ons by Waindigo™ ©2011-2014 Waindigo Enterprises Ltd.