PHP - insertar datos de tabla A + datos tabla B en una tabla C

 
Vista:
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 23/04/2017 11:04:32
muy buenas,
necesito una ayuda para una duda que tengo... PHP + MYSQL


Tengo una tabla llamada SOLICITUD con lo siguientes campos…
• ID
• DATE_TIME
• NOM
• EMAIL
• DNI
• INSCRIPCION

Y tengo otra tabla llamada PROPIETARI con los siguientes campos.
• ID
• DATE_TIME
• NOM_PROPIETARI
• DNI_PROPIETARI
• PROGRAMA ADSCRIT

Necesitaría poder grabar en una tercera tabla llamada EXPEDIENTE todos los registros de un solicitante y propietario…
Para ello el usuario debería escoger o marcar un solicitante mediante una lista desplegable
Luego escoger o marcar un propietario…. Y que los registros escogidos de la tabla SOLICITUD y la tabla PROPIETARIO… se graben en la tabla EXPEDIENTE mediante un botón ‘GRABAR’
Me he explicado bien??

gracias de antemano !!

Alberto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 23/04/2017 13:03:57
Hola.
A ver, Se hacen dos búsquedas en cada una de las bases de datos para rellenar la lista desplegable poniendo la lista de nombres de la tabla y como valor, su ID.
1
2
3
4
5
6
7
8
9
10
11
12
<select name="select" id="select_solicitud">
<?php>
$consulta_mysql='select * from SOLICITUD'
$resultado_consulta_mysql=mysqli_query($consulta_mysql,$conn);
while($lista=mysqli_fetch_assoc($resultado_consulta_mysql))
{
?>
<option value="<?php echo $lista[0] ?>"><?php echo $lista[2] ?></option>
<?php>
}
?>
</select>
Cuando el usuario haya elegido las dos opciones, solicitud y propietario, hay que graban en la base de datos expediente las dos ID. La tabla tendría 3 campos.
ID
ID_solicitud
ID_propietario

En esta tercera tabla no grabas todos los datos. Solo las ID de las otras dos tablas. Por ejemplo...
1
2
$sql = "INSERT INTO EXPEDIENTE (ID_solicitud, ID_propietario)
VALUES ('$select_solicitud', '$select_propietario')";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 24/04/2017 11:35:49
Gracias David, por comentar mi duda...

llevo dándole vueltas... y no sé dónde puede estar el error...
y no puedo mostrar el select de los 2 registros que hay en la tabla solicitud...
me da un error 500.
hay alguna incongruencia... que no me esté dando cuenta??

gracias de nuevo por la colaboración y comprensión... (ya que llevo muchos años con la programación aparcada... y me está costando coger de nuevo el hilo).

Alberto


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// Conectando, seleccionando la base de datos
$link = mysql_connect(localhost, 'user', 'clave')
     or die('No se pudo conectar: ' . mysql_error());
 echo 'Connected successfully';
mysql_select_db('bddatos') or die('No se pudo seleccionar la base de datos');
 
// Realizar una consulta MySQL
  $query = 'SELECT * FROM SOLICITUD';
  $result = mysql_query($query) or die('Consulta fallida: ' . mysql_error());
?>
 <select name="select" id="id_solicitud">
<?php
$consulta_mysql='select * from SOLICITUD';
$resultado_consulta_mysql=mysqli_query($consulta_mysql,$link);
 while($lista=mysqli_fetch_assoc($resultado_consulta_mysql))
{
?>
  <option value="<?php echo $lista[0] ?>"> </option>
<?php
}
?>
</select>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 24/04/2017 13:17:21
Estabamos mezclado mysql con mysqli. Echa un ojo a este enlace:
http://soyprogramador.liz.mx/cual-usar-mysqli-mysql-como-conexin/

Ahora funciona

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// Conectando, seleccionando la base de datos
$link = mysqli_connect("localhost", "usuario", "contraseña", "nombre_base_datos") or die('No se pudo conectar: ' . mysql_error());
echo 'Connected successfully';
// Realizar una consulta MySQL
$query = ("SELECT * FROM solicitud");
$resultado=mysqli_query($link, $query);
?>
<select name="select" id="id_solicitud">
<?php
while($lista=mysqli_fetch_assoc($resultado)){
?>
<option value="<?php echo $lista["ID"] ?>"><?php echo $lista["NOM"] ?> </option>
<?php
}
?>
</select>

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 24/04/2017 13:35:09
hola David,
qué bien... claro y conciso... gracias.

creo que ya lo tengo...
he conseguido hacer la consulta de las 2 tablas... y observo que muestra los datos correctamente.

cómo hago para que la selección... que he escogido, la grabe directamente en la tabla 3 (expediente)
imagino que he de utilizar un form y POST para que recoja los valores y los guarde?
dónde debería incluir este form...
no quisiera que el form, apuntara a ningún archivo por ejemplo "GRABAR.php" sino que lo hiciera dentro de este mismo código directamente...
es posible...?
es correcto incluir el 2º select... tal como está en el código??


gracias por la Ayuda!!! ... poco a poco voy viendo la luz!

adjunto de nuevo el código actualizado y que funciona.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
 
 /*
  * Código de conexión a una base de datos mediante sintaxis de mysqli
  */
 
 $conexion = new mysqli(localhost,'user','password','bdatos');
 
 if ( $conexion->connect_error )
 {
     die('Error de Conexión'. $conexion->connect_error);
 }
 else
 {
    echo 'Conexion OK';
}
 
 ?>
 
 <?php
 
 $query = 'SELECT * FROM registre_sol_llicitant';
 
 $querypropietari = 'SELECT * FROM registre_propietari';
 
$result = $conexion->query($query);
 
$resultpropietari = $conexion->query($querypropietari);
 
?>
 <select>
     <?php
     while ( $row = $result->fetch_array() )
     {
         ?>
 
         <option value=" <?php echo $row['nom'] ?> " >
         <?php echo $row['nom']; ?>
         </option>
 
              <?php
     }
     ?>
 </select>
 
 
 
//SEGUNDO SELECT 
 
 
 
<select>
     <?php
     while ( $row = $resultpropietari->fetch_array() )
     {
         ?>
 
         <option value=" <?php echo $row['nom_propietari'] ?> " >
         <?php echo $row['nom_propietari']; ?>
         </option>
 
              <?php
     }
     ?>
 </select>
 <?php
 
 ?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 24/04/2017 14:10:29
Para grabar en la 3ª tabla, lo puedes hacer en el mismo archivo. Metes los dos Select (con diferente nombre e ID) dentro de un FORM que apunte a la misma página, y al principio de esta, recoges las variables. El problema es que cuando llegues a esa página, esperará datos de esas dos variables ( por eso es más fácil que el form te mande a otro archivo y que la página vuelva atras sola inmediatamente). Esto se soluciona con una función que comprueba que las dos variables tienen contenido. Si lo tienen, graban en la base de datos, si no, no.

Tienes que darle una ID a los Selec porque será el nombre que tengan las variables.

La función para saber si las variables están vacías:
1
if(isset($_POST['ID del select 1'])){ // aqui pondrías el código de grabación en la tercera tabla	}
si no pones esto, la primera vez que entre alguien en la página, grabará registros vacios, cada vez que entre.

El formulario tiene que apuntar a la misma página poniendo la propiedad action con el valor
1
<?php echo $_SERVER['PHP_SELF']; ?>
Una vez le des al botón, tendrás dos variables
1
$_POST['ID del select 1']) y $_POST['ID del select 2'])
. A la hora de grabar en la base de datos, se usan esas variables
1
$query = "  INSERT INTO tabla_tercera (`nom`, `nom_propietari`) VALUES ( $_POST['ID del select 1']), $_POST['ID del select 2'])";

Pero para evitar problemas futuros, insisto que la tercera tabla debería contener solo las ID de los nombres de las otras dos tablas. Además de que será mas ligera te evitarás duplicidades, errores de actualizaciones....etc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 24/04/2017 14:55:02
hola,
probaré la opción para que el form lo envíe a otro archivo... si dices que es más práctico .... así lo haré.
voy a probar y te cuento...
Mil gracias de nuevo por tu atención y rapidez.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 24/04/2017 17:01:35
Tengo este código… en el que hay formulario con 2 selects.
Puedo visualizar los registros a escoger del select…
Pero al llamar al fichero registraexpedient.php NO me devuelve los valores…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
include("conexion.php");
 $query = 'SELECT * FROM registre_sol_llicitant';
 $querypropietari = 'SELECT * FROM registre_propietari';
 $result = $conexion->query($query);
$resultpropietari = $conexion->query($querypropietari);
 ?>
<form ACTION=url.registraexpedient.php METHOD="POST">
<select>
    <?php
    while ( $row = $result->fetch_array() )
    {
        ?>
         <option value=" <?php echo $row['nom'] ?> " >
        <?php echo $row['nom']; ?>
        </option>
              <?php
    }
    ?>
</select>
 
 <select>
    <?php
    while ( $row2 = $resultpropietari->fetch_array() )
    {
        ?>
 
        <option value=" <?php echo $row2['nom_propietari'] ?> " >
        <?php echo $row2['nom_propietari']; ?>
        </option>
              <?php
    }
    ?>
</select>
 <p><input type="submit" value="Guardar datos" ></p>
</form>




Tengo este código en un fichero registraexpedient.php (sólo quiero que muestre los valores)
Y no muestra los valores que recoge del formulario…

1
2
3
4
5
6
7
8
<?php
    echo 'REGISTA EXPEDIENT';             //sí que se muestra
             $nombre = $_POST['nom'];
             $nompropie = $_POST['nom_propietari'];
	echo "datos Nombre $nombre";            //NO se muestra
	echo "  datos Propietari $nompropie"; //NO se muestra
 
?>

¿dónde puede estar el fallo… ?
No estoy haciendo bien el FORM…
Por más que lo reviso… no encuentro el fallo…y no consigo los valores que envío desde el formulario.

Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 24/04/2017 17:23:58
El nombre de las variables que llegan al archivo registraexpedient es la ID de los Select. Tienes que hacer los Select así:
1
<select name="selectA" id="selectA"> y la variable que pasa a la otra página es $nombre = $_POST['selectA'];

El campo de formulario ACTION=url.registraexpedient.php, creo que no hace falta que pongas url. Solo con el nombre de la página entre comillas ya vale.
1
<form ACTION="registraexpedient.php" METHOD="POST">

Una buena idea es meter en el head del archivo registraexpedient lo siguiente
1
2
<?php $origen = $_SERVER['HTTP_REFERER']; ?>
<META HTTP-EQUIV="REFRESH" CONTENT="5;URL=<?php echo $origen ?>">
Con esto, a los 5 segundos volverá a la página de los Select. Puedes poner un texto indicando que la grabación ha sido exitosa o erronea
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 25/04/2017 08:22:19
ohhh...
perfecto. una maravilla.
pues casi lo tengo...
ahora voy a intentar... que en vez de grabar un campo...
que me grabe todos los registros de la tabla A + los registros de la tabla B
en la tabla C.

Pero para evitar problemas futuros, insisto que la tercera tabla debería contener solo las ID de los nombres de las otras dos tablas. Además de que será mas ligera te evitarás duplicidades, errores de actualizaciones....etc

$sql = "INSERT INTO EXPEDIENTE (ID_solicitud, ID_propietario)
VALUES ('$select_solicitud', '$select_propietario')";

duda A: referente a la tabla 3... imagino que debo crear la estructura teniendo en cuenta todos los registros de la tabla A y tabla B+
o se puede hacer de otra manera más simplificada??

duda B: observo que en la tabla A y en la tabla B... el registro ID ... se llama igual "ID"... Deberían tener nombre diferentes... por ejemplo... ID_solicitud y ID_propietario... ? ¿si es así... lo puedo renombrar tranquilamente?

gracias de nuevo, por atender mis dudas... la verdad que no sé cómo agradecerlo.
PD.: Adjunto Word... con la estructura de las teóricas tablas.... por si puede ayudar a visualizar mejor mis dudas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 25/04/2017 13:35:23
Buenas.
Un ejemplo de problema, un propietario hace, por ejemplo, 1000 pedidos y un día cambia de número de teléfono. Si te das cuenta, puedes ir a la tabla de expedientes y cambiar el telefono en sus 1000 pedidos, pero si no te das cuenta o quien graba los datos pasa de todo, sigues grabando pedidos con el teléfono nuevo y ahora ya no sabes que teléfono es el que tiene realmente. teléfono, dirección o cualquier dato importante. Otro motivo es el peso de la base de datos y la rapidez a la hora de mover datos. No es lo mismo una tabla expediente con un registro que sea 3 campos numéricos que tenga 14 campos de varios tipos.

Respecto a la duda A, supongo que grabarás los registros cuando un propietario haga una solicitud. No hay más opción que hacer un INSERT grande con todos los campos que quieras grabar. Todos son 14.

Y por la duda B, en las tablas a y b no tienes que modificar nada.En la tabla 3 si que tendrás que diferenciarlos. El 2 select solo te pasan dos variables. Para hacer el INSERT en la tabla expediente con todos los campos tendrás que hacer dos SELECT con esas dos variables (una por tabla) para tener todos los datos.
A la hora de grabar tendrías 2 arrays diferentes, uno de solicitudes y otro de propietarios.
INSERT INTO expedient (ID_solicitud, ID_propietario....etc) VALUES ($solicitud[0], $propietario[0]...etc)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 25/04/2017 13:45:42
buenas!
voy a teclear esta tarde y te cuento si todo ha ido bien...
gracias por ayudarme a reencontrarme con la programación. la tenía bastante oxidada.
un abrazo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 27/04/2017 15:21:59
buenas de nuevo...
después de muchos intentos... no consigo grabar en la base de datos...

y no consigo ver donde está el posible error...
es posible que haya que dar a la tabla o a la base de datos permisos para grabar...

el valor del select ... lo recoge bien... pero no da ningún tipo de error... y la tabla permanece vacía.


1
2
3
4
5
6
7
8
9
10
11
12
<?php
include("conexbd.php");
$nombre = $_POST['selectA'];
echo "datos Nombre $nombre";
echo 'REGISTRA EXPEDIENT';
echo 'GRABANDO DATOS';
$conex=mysql_connect($host,$user,$pw) or die ('problemas conexión');
mysql_select_db($bd,$conex)or die ('problemas conexión bdatos');
mysql_query("INSERT TO alta_expediente (alta_prova) VALUES($nombre),$conex");
echo "datos insertados... $nombre de nuevo comprueba";
 
?>

gracias de nuevo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 27/04/2017 15:51:11
Buenass

Primero, mete $conex=mysql_connect($host,$user,$pw) or die ('problemas conexión'); en el archivo conexbd.php. Supongo que en ese archivo incluido estará el valor de la variable $db.

Prueba el INSERT asi:
1
2
$sql = "INSERT INTO alta_expediente (alta_prova) VALUES ('$nombre'')";
mysqli_query($conex, $sql);

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 27/04/2017 16:28:09
buenas...
que mala suerte...
he añadido el INSERT y nada... observo que había alguna comilla doble...
que raro... no...?
1
2
INSERT  $sql = "INSERT INTO alta_expediente (alta_prova) VALUES ('$nombre')";
mysqli_query($conex, $sql);

muestro más abajo el contenido del archivo conex.php no sea que hubiera alguna barbaridad...
1
2
3
4
5
6
7
<?php
$host = "localhost";
$user = "user";
$pw = "pw";
$bd = "bdatos";
$conex=mysql_connect($host,$user,$pw) or die ('problemas conexión');
?>
adjunto estructura de la tabla alta_expediente

gracias de nuevo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 27/04/2017 16:43:37
Buenas
El campo que quieres grabar, alta_prova, es del tipo Int, o sea numérico. Imagino que la variable $nombre será un texto, por lo que te dará error. O cambias el tipo de campo a Text o Varchar o le grabas un número.
Las comillas dobles, simples, los puntos y coma, paréntesis....siempre se cuelan. Hay que contar con que se pierde tiempo solucionando esas cosas. Mucho tiempo

El archivo conexdb.php está bien así.

No sé si te lo dije antes.... Hay un campo de tipo date. este campo acepta la fecha en formato americano o inglés, o sea, AAAA-MM-DD.
Cuando recojas la fecha en una variable tendrás que darle ese formato o te dará error al intentar grabar

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 27/04/2017 17:24:46
buenas
he probado cambiando el registro que recoge el select a 'VARCHAR' y el registro donde va a ser grabado que sea VARCHAR y nada.
voy a probar creando una nueva tabla con un sólo campo'NOM' VARCHAR
y que lo pueda grabar en otra tabla idéntica 'NOMDESTINO' VARCHAR...
a ver que no sea que las tablas estén corruptas...

estoy clavado...
te voy contando.
gracias mil
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 27/04/2017 18:03:29
buenas
he creado una nueva tabla... llamada tablanew

con un registro llamado nomorigen varchar y nada... (el valor que recoge es VARCHAR) con el valor 'alberto'

he probado con el phpadmin cerrado... no sea que fuera por eso el problema... y tampoco
y el campo una vez grabado... queda como NULL

se te ocurre alguna otra prueba...?

el servidor web... corre en en versiones de:
apache 2.2.22-13+deb7u8
mysql-server 5.5.54-0+deb7u2
php 5.5

gracias de nuevo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 27/04/2017 19:04:09
crea una base de datos e importa la tabla que adjunto.
Después usa este código con tu usuario contraseña y nombre de la base de datos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$servername = "localhost";
$username = "root";
$password = "contraseña";
$dbname = "base_pruebas";
$conn = mysqli_connect($servername, $username, $password, $dbname);
 
$nom="pepe";
$regis = 546;
$fecha = "2007-04-15";
 
$sql = "INSERT INTO tabla_pb1 (nombre, registro, fecha) VALUES ('$nom', '$regis', '$fecha')";
mysqli_query($conn, $sql);
?>

Esto funciona, lo he comprobado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 28/04/2017 15:50:11
muy buenas.
he probado tu tabla y tus indicaciones... y todo OK. Graba correctamente
voy a ver si encuentro... el porqué del problema que había...
si doy con ello... lo comento por aquí.
gracias MIL .... por aportarme ideas y soluciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 29/04/2017 06:19:23
muy buenas.
encontré el error...
creo que la causa principal es que estaba utilizando la siguiente sentencia: mysql_connect
y por lo visto es mysqli_connect

es posible que sea por ese error?? un tema de versiones de mysql?
gracias por la ayuda !! y entender el porqué.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 29/04/2017 06:58:28
Buenas
Volviendo a la duda inicial…
Es posible que pueda grabar todos los datos a la vez de la tabla A y la tabla B en la tabla C ¿
O tendría que hacerlo registro por registro??
Si se pudiera hacer a la vez… entiendo que la estructura de la tabla C… sería suficiente con tener las ID de la tabla A y B (deberían ser clave primarias?)
Los registros ID de la tabla A y tabla B… deberían de llamarse de direrente manera? Por ejemplo ID_SOLIC e ID_PROPIET ¿??

SOLICITUD (tabla A) con lo siguientes campos…
• ID_SOLIC ¿ (Diferentes ID ¿)
• DATE_TIME
• NOM
• EMAIL
• DNI
• INSCRIPCION

PROPIETARI (tabla B)con los siguientes campos.
• ID_PROPIET
• DATE_TIME
• NOM_PROPIETARI
• DNI_PROPIETARI
• PROGRAMA ADSCRIT

EXPEDIENTE (tabla C) con los siguientes campos.
• ID_SOLIC
• ID_PROPIETARI
Gracias por ayudarme a avanzar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 29/04/2017 09:51:38
Muy buenas.
Grabar datos todos a la vez o registro a registro: Supongo que lo que quieres hacer es un formulario para buscar a un usuario y si no lo tienes grabado, meter sus datos y grabarlos. Después ir a una pagina con otro formulario para grabar una solicitud y relacionarla con un usuario concreto y la tabla expediente es como una copia de seguridad de la tabla solicitud. Si es algo así, en la misma página donde insertes un registro en la tabla solicitud, también puedes hacerlo en la tabla expediente, por lo que lo grabarías uno a uno.

Si ya tienes un montón de registros guardados, tanto usuarios como solicitudes y quieres rellenar la tabla expediente, se hace un archivo con un par de select y un insert y se graban todos los registros a la vez. Después te olvidas de ese archivo y a partir de ahí grabas uno a uno como dije al principio.

Un mismo cliente puede hacer mas de una solicitud?

En cuanto a las ID... Cada tabla tiene su propia ID y para no liarse y repetir campos, en la tabla espediente se le da nombre a las ID de las otras tablas. Quedaría así:
SOLICITUD (tabla A) con lo siguientes campos…
• ID
• DATE_TIME
• NOM
• EMAIL
• DNI
• INSCRIPCION

PROPIETARI (tabla B)con los siguientes campos.
• ID
• DATE_TIME
• NOM_PROPIETARI
• DNI_PROPIETARI
• PROGRAMA ADSCRIT

EXPEDIENTE (tabla C) con los siguientes campos.
• ID
• ID_SOLIC (el campo se llama así, pero en el grabas el ID de la tabla solicitud).
• ID_PROPIETARI

Ayudaría saber como son los archivos para grabar los registros.
página1: select con los usuarios donde se comprueba si ya lo tienes grabado o no. si lo tienes, lo eliges y pasas a la página 2 y si no lo tienes, rellenas un formulario y pasas a página 2.

página2: Si ya tenías un usuario grabado, a esta página llega su ID (que renombramos a ID_usuario). Si tuviste que rellenar el formulario, aqui haces el inster en la tabla de usuarios y después un SELECT para averiguar la ID de este usuario grabado(que renombramos a ID_usuario). En está pagina también tienes un formulario para hacer la solicitud. Lo rellenas y pasas a la página 3, adjuntando como campo oculto la ID_usuario.

página3: haces un INSERT con el formulario de la solicitud y la ID_usuario. Después un SELECT para saber la ID de la solicitud y la renombras como ID_solicitud. Ahora otro INSERT en la tabla expediente mas o menos asi INSERT TO expediente (ID_usuario, ID_solicitud) VALUES ('$ID_usuario', '$ID_solicitud);
y listo.

Vaya parrafada....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 30/04/2017 11:05:02
Buenas.
Voy a intentar simplificar lo que necesitaría conseguir…
Tengo 2 tablas
TABLA SOLICITUD (usuarios que ya se han registrado con los siguientes datos, y que están interesados por ejemplo en alquilar una vivienda)
• ID
• DATE_TIME
• NOM
• EMAIL
• DNI
• INSCRIPCION

TABLA PROPIETARI (usuarios que ya se han registrado con los siguientes datos, y que están interesados por ejemplo en ceder su vivienda para que se la alquilen)
• ID
• DATE_TIME
• NOM_PROPIETARI
• DNI_PROPIETARI
• CATASTRO VIVIENDA
Y muchos más campos, como dirección de la vivienda, metros de la vivienda, etc etc
La idea es que el ‘administrador’ pueda seleccionar un usuario de la tabla solicitud interesado en alquilar una vivienda de la tabla Propietari
Entonces el administrador único de la aplicación, mediante un select… escoge un usuario, escoge un propietario y una vez seleccionados, los graba para que quede una tabla EXPEDIENTE… que incluirá todos los datos del usuario interesado + todos los datos del usuario propietario… + un nuevo registro que se llamará NUM_CONTRATO
Y de esta manera el ‘administrador’ podrá saber qué usuario y que propietario están unidos… mediante un NUMEDO DE CONTRATO o EXPEDIENTE…
La tabla EXPEDIENTE quedaría así.
EXPEDIENTE (tabla C) con los siguientes campos.
• ID
• TODOS LOS DATOS DEL USUARIO INTERESADO
• TODOS LOS DATOS DEL PROPIETARIO
• REGISTRO NUMERO CONTRATO

No sé si me he explicado suficientemente bien….
agradezco de nuevo la atención y rapidez que me brindas!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 30/04/2017 13:16:38
Buenas. Ya lo tengo claro.
Sabes como hacer dos busquedas en las dos tablas, A y B, rellenar un par de select y enviar esas variables del select a otra página mediante POST, aunque ahora veo que has puesto:
1
2
3
4
5
6
7
8
9
<select>
 <?php
 while ( $row = $result->fetch_array() ) {
?>
 <option value=" <?php echo $row['nom'] ?> " > <?php echo $row['nom']; ?></option>
  <?php
  }
  ?>
</select>

cuando debería ser:
1
2
3
4
5
6
7
8
9
<select>
 <?php
 while ( $row = $result->fetch_array() ) {
?>
 <option value=" <?php echo $row['ID'] ?> " > <?php echo $row['nom']; ?></option>
  <?php
  }
  ?>
</select>

Ahora, en la página donde dirige el formulario, es tan sencillo como recoger las variables POST y meterlos en la tabla expediente usando la ID de la tabla como número de registro (es numérico y te aseguras de que no se repite) :
1
2
3
$ID_propietario = $_POST['selectA'];  // estos datos tendrás que actualizarlos, poner los tuyos
$ID_solicitud = $_POST['selectB'];
INSTER TO expediente (ID_propietario, ID_solicitud) VALUES ('$ID_propietario', '$ID_solicitud ');

Si quieres un número de registro aparte de la ID y asegurarte de que no se repita es hacer una consulta a la tabla para saber cual es el último registro, sumar uno y grabarlo:

1
2
3
4
5
6
7
$result = (SELECT REGISTRO NUMERO CONTRATO from expediente DESC LIMIT 1);
$row = mysql_fetch_row($result);
//(esto hace una busqueda en la que devuelve el primer registro pero empezando del ultimo al primero.
$numero = $row[0] + 1// ahora acualizas el número
$ID_propietario = $_POST['selectA'];
$ID_solicitud = $_POST['selectB'];
INSTER TO expediente (ID_propietario, ID_solicitud, registro) VALUES ('$ID_propietario', '$ID_solicitud ', '$numero');

Después, para ver los datos y la relación entre el propietario y la solicitud se hace una consulta para saber las ID y otras dos para tener los detalles de propietarios y solicitudes. Esto puedes verlo en una con todos loo registros o con Select para ver que solicitudes hay para cierto propietario. Por ejemplo en una tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$result = mysql_query("SELECT * FROM expediente ORDER BY ID", $link);  //consulta todos los expedientes
echo "<table border = '1'> \n";
echo "<tr><td>nº Exp</td><td>nombre propietario</td><td>dni</td><td>catastro</td><td>nombre de solicitante</td><td>email</td><td>dni solicitante</td></tr> \n";
while ($row = mysql_fetch_row($result)){
     $result_propietario = mysql_query("SELECT * FROM propietario WHERE ID = '$row[1]'", $link); //consulta los propietarios cuya ID es igual al campo ID_propietario de la tabla expediente
     $row_propietario = mysql_fetch_row($result_propietario);
     $result_solicitud = mysql_query("SELECT * FROM solicitud WHERE ID = '$row[2]'", $link);  //consulta las solicitudes cuya ID es igual al campo ID_solicitud de la tabla expediente
     $row_solicitud = mysql_fetch_row($result_solicitud);
 
       echo "<tr><td>$row[0]</td><td>$row_propietario[1]</td><td>$row_propietario[2]</td><td>$row_propietario[3]</td><td>$row_solicitud[1]</td><td>$row_solicitud[2]</td><td>$row_solicitud[3]</td></tr> \n";
}  // las variables $row_propietario[] guardan los datos de la tabla propietarios y $row_solicitud[] lo de la otra tabla
echo "</table> \n";

En definitiva, con INSTER TO expediente (ID_propietario, ID_solicitud) VALUES ('$ID_propietario', '$ID_solicitud '); te aseguras de tener todos los campos grabados y sin problemas. Cuando quieras mostrar esos datos, lo hablamos.
Es ir jugando con las tablas y los ID. Cuando hacía páginas muy grandes me venía bien imprimir las tablas con sus campos, colgarlas de la pared y unir estas relaciones con hilos. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 02/05/2017 11:39:10
Muy buenas de nuevo…
Referente a tu último código… no acabo de entender la función de la variable $link.
Tengo una duda sobre la tabla expediente y sus campos…
Observo que me graba el valor ID de la tabla la solicitud y el valor ID de la tabla propietario.
Me gustaría… poder visualizar todos los campos… de la tabla expediente…
Y no sé si para ello, debería relacionar la ID de la tabla solicitud y propietario con la ID de la tabla expediente…
IMAGEN Tabla solicitud…. Idsolic (CLAVE PRIMARIA)

IMAGEN Tabla Propietario…. Idprop (CLAVE PRIMARIA)

IMAGEN Tabla Alta_expediente…. Id es CLAVE PRIMARIA…

Mi pregunta es … los campos idsolicitud e idpropietario de la tabla Alta_expediente… debería ser clave Foránea? ¿cómo puedo visualizar, todos los datos que contiene la idsolicitud y idpropietario… (entiendo que debería apuntar o relacionar a las tablas solicitud y propietario…

En esta última imagen, muestro los datos de los registros, que se han grabado…
IMAGEN datos registros tabla alta_expediente

PD.: En el Word que adjunto... está el mismo texto... pero acompañado de las imágenes de las tablas y contenidos.
mil gracias...

PD2.: me da la sensación que ya estoy entrando en el mundo del diseño de la base de datos.. relaciones, PK, FK...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 02/05/2017 19:06:50
Muy buenas.
En la variable $link están los datos de la conexión .....$link = mysqli_connect($servername, $username, $password, $dbname);
puedes usar:
1
2
$sql = "INSERT INTO tabla_pb1 (nombre, registro, fecha) VALUES ('$nom', '$regis', '$fecha')";
mysqli_query($link, $sql);
o
1
$result_propietario = mysql_query("INSERT INTO tabla_pb1 (nombre, registro, fecha) VALUES ('$nom', '$regis', '$fecha'", $link);
diferentes maneras de decir lo mismo

La tabla expedient.
En el expediente nº 21 tienes la solicitud con ID 1 y el propietario con ID 3. Está perfecto. Ahora tienes que buscar los datos de solicitud y propietario con esas ID e igual que en los select del formulario, asignar esos datos a dos matrices (una por cada tabla)
Hacer la busque de todos los campos de la la tabla solicitud cuyo ID sea 1:
1
2
$result_solicitud = mysql_query("SELECT * FROM solicitud WHERE ID = 1", $link);
$row_solicitud = mysql_fetch_row($result_solicitud );

Ahora tienes la matriz $row_solicitud con todos los valores de esa búsqueda: $row_solicitud[0] es la ID de esa solicitud, $row_solicitud[1] es el data time, $row_solicitud[2] es el nom...etc

Recuerda que las mátrices empiezan por el índice 0, o sea que el campo 1 será $row_solicitud[0], el campo 2, $row_solicitud[1] etcetc

Y lo mismo con la tabla propietarios pero en vez de buscar la ID 1, buscas con la ID 3

1
2
$result_propietario = mysql_query("SELECT * FROM propietario WHERE ID = 3", $link);
$row_propietario = mysql_fetch_row($result_propietario);

Ahora tienes la matriz $row_solicitud con todos los valores de esa búsqueda: $row_propietario [0] es la ID de ese propietario, $row_propietario [1] es el data time, $row_propietario [2] es el nom_propietari...etc

En la tabla expedient, solo su ID es llave primaria y auto increment. Las ID de solicitud y propietario son campos normales INT.

y ahí tienes las 3 tablas relacionadas. Así es como tiene que funcionar. Ahora la manera de mostrar esos datos. Puedes mostrar un listado con los datos mas importantes que enlacen con una ventana que muestre una ficha con todos los datos, puedes hacer un buscador, puedes poner un select con los nombre de los propietarios y ver sus solicitudes.....a tu gusto.
Un ejemplo. Un listado en el que aparezca el múmero de expediente, el nombre del propietario y el nombre de la solicitud (cuando pongas más campos puedes añadir algo mas). Los resultados que aparecen en esa lista, que enlacen a una página que se abra aparte con todos los datos de usuario y solicitud, o sea, todo el expediente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 02/05/2017 19:17:00
buenas...
estoy mirando temas de claves foráneas e indexaciones...
crees necesario, que cree clave foráneas e indexaciones...
observo que en los libros que he consultado y´tutoriales... hacen referencias a indexar registros y creación de claves foráneas...

cómo lo ves...?
mil gracias de nuevo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 02/05/2017 19:39:20
No hace falta liarse con claves foráneas ni indexaciones. vamos, nunca las he usado.

Prueba esto a ver que te parece. Solo pon tu contraseña de la base de datos y el nombre:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>
 
<body>
<?php
 
 
$link = mysql_connect("localhost","root","xxx");  //tu contraseña
mysql_select_db("pbjava", $link);  // tu base de datos
 
$result = mysql_query("SELECT * FROM expediente", $link);
?>
<table width="900" border="1" align="center">
  <tr>
    <td>Nº Exp</td>
    <td>Fecha propietario</td>
    <td>Eombre propietario</td>
    <td>Email propietario</td>
    <td>Fecha solicitud</td>
    <td>Nombre solicitud</td>
    <td>Email solicitud</td>
  </tr>
<?php
while ($row = mysql_fetch_row($result)){
$resultA = mysql_query("SELECT * FROM propietario WHERE ID = '$row[2]'", $link);
$rowA = mysql_fetch_row($resultA);
$resultB = mysql_query("SELECT * FROM solicitud WHERE ID = '$row[3]'", $link);
$rowB = mysql_fetch_row($resultB);
?>
  <tr>
    <td><a href="ficha.php" target="_blank"><?php echo $row[0] ?></a></td>
    <td><?php echo $rowA[1] ?></td>
    <td><?php echo $rowA[2] ?></td>
    <td><?php echo $rowA[3] ?></td>
    <td><?php echo $rowB[1] ?></td>
    <td><?php echo $rowB[2] ?></td>
    <td><?php echo $rowB[3] ?></td>
  </tr>
 
<?php
}
?>
</table>
 
 
 
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 03/05/2017 08:35:20
buenas.
probaré el código... a ver...
no veo claro... esto (línea 35) <td><a href="ficha.php" target="_blank"><?php echo $row[0] ?></a></td>

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 03/05/2017 10:19:07
Hola.

He hecho 3 consultas a la base de datos, una a cada tabla, y el resultado de cada consulta lo he mandado a una matriz diferente row, rowA y rowB.
$row[0] es el primer campo de la consulta que he hecho a la tabla expediente, y corresponde al campo ID de la tabla, que también usas como número de expediente. Por eso está en el primer lugar de la tabla y en la columna Nº Exp.
Además he enlazado ese número con otra página que puedes hacer para ver en detalle todos los campos. Ahora tienes 6 campos pero mas adelante igual tienes 20 de cada tabla y en el listado no quieres verlos todos.
En realidad el enlace sería así:
<a href="ficha.php?ID=<?php echo $row[0] ?>" target="_blank"><?php echo $row[0] ?></a>
Y en la página ficha.php recoges el valor de ID = $_GET[ID];
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 04/05/2017 12:26:18
buenas de nuevo...
estoy revisando este código... y no me muestra los valores de la tabla expediente.
he substituido el comando del código que enviaste mysql_connect por el mysqli_connect (con la 'i) y no tampoco muestra los datos de la tabla...

adjunto código... a ver si me puedes ayudar de nuevo.
gracias!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
// VER EXPEDIENTE
$servername = "localhost";
$username = "usuario";
$password = "password";
$dbname = "bdatos";
$conn = mysqli_connect($servername, $username, $password, $dbname);
$resultexp = mysqli_query("SELECT * FROM alta_expediente ORDER BY ID", $conn);  //consulta todos los expedientes
 
echo "<table border = '1'> \n";
echo "<tr><td>nº Exp</td><td>nombre propietario</td><td>dni</td><td>catastro</td><td>nombre de solicitante</td><td>email</td><td>dni solicitante</td></tr> \n";
while ($row = mysql_fetch_row($resultexp)){
     $result_propietario = mysqli_query("SELECT * FROM registre_propietari WHERE ID = '$row[1]'", $conn); //consulta los propietarios cuya ID es igual al campo ID_propietario de la tabla expediente
 
     $row_propietario = mysql_fetch_row($result_propietario);
     $result_solicitud = mysqli_query("SELECT * FROM registre_sol_llicitant WHERE ID = '$row[2]'", $conn);  //consulta las solicitudes cuya ID es igual al campo ID_solicitud de la tabla expediente
 
     $row_solicitud = mysql_fetch_row($result_solicitud);
 
       echo "<tr><td>$row[0]</td><td>$row_propietario[1]</td><td>$row_propietario[2]</td><td>$row_propietario[3]</td><td>$row_solicitud[1]</td><td>$row_solicitud[2]</td><td>$row_solicitud[3]</td></tr> \n";
}  // las variables $row_propietario[] guardan los datos de la tabla propietarios y $row_solicitud[] lo de la otra tabla
 
echo "</table> \n";
echo "no muestra $row[1]";
 
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 04/05/2017 14:01:30
Muy buenas, Alberto.

Hasta esta noche no podré mirarlo que estoy sin pc, pero el código que puse estaba comprobado y funcionaba. Vuelve a el y comprueba los nombres de las tablas y esas cosas. Ya sabes que unas comillas o un punto y coma perdido te la lian.
Para hacerlo me basé en las tablas que pusiste el 2 de mayo. A ver si hay algún cambio.
Ves la tabla pero con las celdas en blanco??

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 04/05/2017 18:35:13
muy buenas...
adjunto de nuevo el código...

adjunto también base de datos con sus tablas y datos... por si pudiera a ayudar a identificar el problema.
y en el Word.. está el código que he revisado y revisado......y algunos pantallazos
mil gracias de huevo...


he creado 2 expedientes…
registro nº 1 de la tabla solicitud + registro nº 5 de la tabla propietario…
registro nº 2 de la tabla solicitud + registro nº 5 de la tabla propietario
graba bien.

En la tabla solicitud… hay 2 inscritos
Y en la tabla propietario hay 5 inscritos.
He observado que la id (color verde) de la tabla alta_expediente estaba en mayúsculas… lo he puesto en minúscula….
En azul he puesto la id de las tablas (idsolic y idprop)
Me da la sensación que no entra dentro del while… es posible que no entre dentro del while??

Adjunto base de datos con las 3 tablas…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
// VER EXPEDIENTE
$servername = "localhost";
$username = "";
$password = "";
$dbname = "bddatos";
$conn = mysqli_connect($servername, $username, $password, $dbname);
$resultexp = mysqli_query("SELECT * FROM alta_expediente ORDER BY id", $conn);  //consulta todos los expedientes
 
echo "<table border = '1'> \n";
echo "<tr><td>nº Exp</td><td>nombre propietario</td><td>dni</td><td>catastro</td><td>nombre de solicitante</td><td>email</td><td>dni solicitante</td></tr> \n";
while ($row = mysql_fetch_row($resultexp)){
$result_propietario = mysqli_query("SELECT * FROM registre_propietari WHERE idprop = '$row[1]'", $conn); //consulta los propietarios cuya ID es igual al campo ID_propietario de la tabla expediente
 
     $row_propietario = mysql_fetch_row($result_propietario);
     $result_solicitud = mysqli_query("SELECT * FROM registre_sol_llicitant WHERE idsolic = '$row[2]'", $conn);  //consulta las solicitudes cuya ID es igual al campo ID_solicitud de la tabla expediente
 
     $row_solicitud = mysql_fetch_row($result_solicitud);
 echo "no llega";
       echo "<tr><td>$row[0]</td><td>$row_propietario[1]</td><td>$row_propietario[2]</td><td>$row_propietario[3]</td><td>$row_solicitud[1]</td><td>$row_solicitud[2]</td><td>$row_solicitud[3]</td></tr> \n";
}  // las variables $row_propietario[] guardan los datos de la tabla propietarios y $row_solicitud[] lo de la otra tabla
 
echo "</table> \n";
echo "no muestra $row[1]";
 
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 04/05/2017 19:04:41
Buenas.

He cambiado esto:
1
2
3
4
5
$servername = "localhost";
$username = "";
$password = "";
$dbname = "bddatos";
$conn = mysqli_connect($servername, $username, $password, $dbname);
por esto:
1
2
$conn = mysql_connect("localhost","root","****");
mysql_select_db("bddatos", $conn);

y he quitado los mysqli. ya funciona.

Cuando pones
1
echo "no muestra $row[1]";
no muestra nada porque $row[1] es el campo 2 de la base de datos, o sea la fecha que está en blanco. Para ver la ID es $row[0]. Aparte de que está fuera del while
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 04/05/2017 19:21:53
buenas
he cambiado

1
$conn = mysqli_connect($servername, $username, $password, $dbname);
por
1
$conn = mysql_connect($servername, $username, $password, $dbname);

sin la 'i'

y también lo que comentabas...
algo no me cuadra... porque entiendo que no deja entrar dentro del while...
no muestra por pantalla...
echo "no llega";
que está dentro del while...
qué raro...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 04/05/2017 19:31:26
Buenas.
Si usas $conn = mysql_connect($servername, $username, $password, $dbname);
la consulta no se ejecuta. mysql_query espera dos parámetros, la cadena de la consulta y la conexión con 3 parámetros:
$conn = mysql_connect("localhost","root","****");
Si le añades a $conn el nombre de la base de datos, se le va la pinza y no empieza el while.
Crea la conexión con tres parámetros y después seleccionas la base de datos con la función mysql_select_db("bddatos", $conn);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 04/05/2017 19:48:55
por cierto, la consulta de propietarios no da ningún resultado porque el valor de $row[1] es la fecha y no la ID del propietario
Tienes que cambiar el índice de $row a 3.

1
2
$result_propietario = mysql_query("SELECT * FROM registre_propietari WHERE idprop = '$row[3]'", $conn);
$row_propietario = mysql_fetch_row($result_propietario);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 04/05/2017 19:59:20
pues sigo viéndolo oscuro...
lo he probado con 3 parámetros... y nada...
sigue sin entrar en el while.
gracias de nuevo... y empiezo a preocuparme de ser tan pesado...


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$conn = mysql_connect("localhost","user","******");
mysql_select_db("bdatos", $conn);
 
 
echo "<table border = '1'> \n";
echo "<tr><td>nº Exp</td><td>nombre propietario</td><td>dni</td><td>catastro</td><td>nombre de solicitante</td><td>email</td><td>dni solicitante</td></tr> \n";
while ($row = mysql_fetch_row($resultexp)){
     $result_propietario = mysql_query("SELECT * FROM registre_propietari WHERE idprop = '$row[3]'", $conn); //consulta los propietarios cuya ID es igual al campo ID_propietario de la tabla expediente
 
     $row_propietario = mysql_fetch_row($result_propietario);
     $result_solicitud = mysql_query("SELECT * FROM registre_sol_llicitant WHERE idsolic = '$row[2]'", $conn);  //consulta las solicitudes cuya ID es igual al campo ID_solicitud de la tabla expediente
 
     $row_solicitud = mysql_fetch_row($result_solicitud);
 echo "llega";
       echo "<tr><td>$row[0]</td><td>$row_propietario[1]</td><td>$row_propietario[2]</td><td>$row_propietario[3]</td><td>$row_solicitud[1]</td><td>$row_solicitud[2]</td><td>$row_solicitud[3]</td></tr> \n";
}  // las variables $row_propietario[] guardan los datos de la tabla propietarios y $row_solicitud[] lo de la otra tabla
 
echo "</table> \n";
echo "no muestra $row[0]";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 04/05/2017 20:15:24
Se ha perdido la primera consulta debajo de los datos de acceso
$resultexp = mysql_query("SELECT * FROM alta_expediente ORDER BY id", $conn);

y ponle el nomber de la base de datos : bddatos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 04/05/2017 20:23:33
ohhh
ahora sí...
creo que estoy un poco espeso... agradezco mucho la atención y rapidez...
mañana seguiré picando teclas...
Mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 09/05/2017 19:01:31
todo correcto...
ahora me surge una duda... ya que tengo curiosidad por el tema de Clave foránea...

si quisiera mostrar los 3 primeros datos que hay en idsolic e idprop (son clave foráneas de 2 tablas) … ¿cómo debería ser el SELECT?? Y la sentencia que muestre por pantalla??
Sería algo así??
1
$query= "SELECT alta-expediente .idsolic, alta-expediente.nom, alta-expediente.apellido  FROM alta-expediente"

TABLA ALTA-EXPEDIENTE
1
2
3
id		int
idsolic		int 	(clave foránea de table solicitud)
idprop		int	(clave foránea de table propietario)

espero haberme explicado…
gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 09/05/2017 20:18:30
Buenas.
De las claves foráneas, ni idea. Nunca las he usado. Simplemente hago las dos consultas.
para obtener los 3 primeros campos hago esto:

1
2
3
4
5
6
7
8
$query = "SELECT * FROM  alta-expediente ORDER BY id LIMIT 0, 3";
while ($row = mysql_fetch_row($query)){
 
$result_propietario = mysql_query("SELECT * FROM registre_propietari WHERE idprop = '$row[3]'", $conn);
 $row_propietario = mysql_fetch_row($result_propietario);
 
echo "id = $row[0], nombre= $row_propietario[2], apellido= $row_propietario[3] ";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por alberto (28 intervenciones) el 10/05/2017 17:55:03
muy buenas... de nuevo.
entendiendo que $row[0] es la ID y que $row[1] es el nombre...
al mostrar por pantalla:
1
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td><td>$row[3]</td><td>$row[4]</td><td>$row[5]</td></td></tr> \n";

¿cómo podría hacer para que el "nombre" fuera Linkable, y si se clickara sobre el nombre, pudiera ir a la ficha, de todos sus datos, con la opción de poder actualizar sus datos...?
gracias por la ayuda de nuevo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos de tabla A + datos tabla B en una tabla C

Publicado por David (27 intervenciones) el 10/05/2017 19:10:45
Buenas tardes
Cada consulta a la base de datos termina generando una matriz. Para la tabla alta_expediente, la matriz es $row
para la tabla propietarios le puse la matriz $row_propietario
Estas matrices tienen un índice tan grande como campos tiene la tabla que has consultado. Para la tabla alta_expediente, los índices serían $row[0] = la ID
$row[1] seria el valor de idsolic
$row[2] es idprop
y para la tabla propietario, lo mismo con sus campos
$row_propietario[0] = la ID
$row_propietario[1] creo que era la fecha
$row_propietario[2] es el nombre
etcetc

en un listado tienes que combinar las matrices de las consultas. Así la ID del expediente sería $row[0] pero el nombre estaría en la matriz de la tabla de propietarios, o sea $row_propietario[2] (creo recordar que el índice 2 era el nombre).

quedaría así

1
echo "<tr><td>$row[0]</td><td>$row_propietario[2]</td><td>$row_propietario[3]</td><td>$row_propietario[4]</td><td>$row_propietario[5]</td><td>$row_propietario[6]</td></td></tr> \n";

Para el enlace, además de cambiar a otra página, le tienes que pasar un identificador para hacer la consulta. Por ejemplo, Si en la ficha quieres ver los datos del propietario, puedes poner la ID del propietario:
1
<a href="pagina_destino.php?ID_propietario=<?php echo $row_propietario[0] ?>">nombre</a>

o la ID del proietario y solicitud:
1
<a href="pagina_destino.php?ID_propietario=<?php echo $row_propietario[0] ?>&ID_solicitud=<?php echo $row_solicitud[0] ?>">nombre</a>

o la ID del expediente
1
<a href="pagina_destino.php?ID_exp=<?php echo $row[0] ?>">nombre</a>


Ahora, en la página de destino recoges el valor de la ID
1
$ID_exp = $_GET[ID];

y vuelves a hacer la consulta SELECT con el valor de esa variable
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar