PHP - insert fallido

 
Vista:
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Alejandro (172 intervenciones) el 27/02/2020 09:26:17
Hola buenos dias,

tengo una pagina php la cual tiene un formulario donde insertos ciertos datos, pero al hacer insert no me da errores pero no me inserta los datos en la base de datos, a continuacion les dejo el codigo.

Pagina del formulario:

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
 
        <meta name="robots" content="noindex">
	      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="style_propio.css" rel="stylesheet" type="text/css" />
        <script src="preview_imagen.js"></script>
        <script src="evitaratras.js"></script>
 
 
  </head>
    <?php
 
 
 
    if($_SESSION['control']== 1){
          $id = $_GET['id'];
      } else {
 
          $id = $_SESSION['id'];
      }
 
    ?>
 
    <body onload="nobackbutton();">
    <header class="headerindex">
 
      <div>
      <h1>BARRIO EMPLEO</h1>
      </div>
      <p style="text-align:center;"> <a href="logout.php">Cerrar</a></p>
    </header>
 
    <div class="contenedorindex">
 
 
    <h2>INSCRIPCIÓN AREA DE EMPLEO Y FORMACIÓN</h2>
 
    <form method="post" action="validardatos.php" enctype="multipart/form-data">
 
        <p>
        <span>Nombre:<input type="text" name="nombre" required></span>
        <span>Primer apellido:<input type="text" name="apellido1" required></span>
        <span>Segundo apellido:<input type="text" name="apellido2" required></span>
        <span><input type="file" accept="image/*" onchange="loadFile(event)" name="foto" class="inputimagen"><img  id="output"/></span>
        </p>
        <p>
        <span>DNI/NIE:<input type="text" name="dni" required></span>
        <span>Fecha de nacimiento:<input type="text" name="born" required></span>
        <span>Dirección:<input type="text" name="direccion"></span>
        <span>Población:<input type="text" name="poblacion" required></span>
        </p>
        <p>
        <span>C.P:<input type="text" name="codigopostal"></span>
        <span>Provincia:<input type="text" name="provincia"></span>
        <span>Nacionalidad:<input type="text" name="nacionalidad"></span>
        <span>Telefono 1:<input type="text" name="telf1"></span>
        </p>
        <p>
        <span>Telefono 2:<input type="text" name="telf2"></span>
        <span>E-mail:<input type="text" name="email"></span>
        <span>Fecha alta:<input type="text" name="fechalta"></span>
        <input type="submit" value="Enviar">
        <input type="reset" value="Borrar">
        </p>
        <p>
        <input type="button" value="Documentacion" name="documentacion">
        <input type="button" value="Informe General" name="informe">
        <input type="button" value="Formación" name="formacion">
        <input type="button" value="B.empleo" name="barrio">
        <input type="button" value="Conecta-2" name="conecta">
        </p>
    </form>
    </div>
    </body>
</html>

Pagina donde valido los datos:

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
<?php
 
 
include("conexion.php");
 
 
$id=isset($_GET['id']) ? $_GET['id'] : '';
$nombre = $_POST['nombre'];
$apellido1 = $_POST['apellido1'];
$apellido2 = $_POST['apellido2'];
$foto = $_FILES['foto']['name'];
$dni = $_POST['dni'];
$Fnacimiento = $_POST['born'];
$direccion = $_POST['direccion'];
$poblacion = $_POST['poblacion'];
$cp = $_POST['codigopostal'];
$provincia = $_POST['provincia'];
$nacionalidad = $_POST['nacionalidad'];
$telefono1 = $_POST['telf1'];
$telefono2 = $_POST['telf2'];
$email = $_POST['email'];
$fecharegistro = $_POST['fechalta'];
 
 
 
$archivo = (isset ($foto)) ? $foto : null;
$ruta_destino_archivo = null;
 
if ($archivo) {
$extension = pathinfo($archivo, PATHINFO_EXTENSION);
$extension = strtolower($extension);
if ($extension == "jpg" or $extension == "png")
{
 
    $archivo_destino = "archivos/imagenes_perfil/".basename($archivo);
 
    $archivo_ok = move_uploaded_file($archivo, $archivo_destino);
 
} else {
    echo "La extension no es correcta";
}
}
 
$consulta = "INSERT INTO datos_personales (id_personal, nombre, apellido1, apellido2, dni, direccion, poblacion, provincia, cp, nacionalidad, fecha_nacimiento, foto, telefono_movil, telefono_casa, email, fecha_registro) VALUES ('".$id."','".$nombre."','".$apellido1."','".$apellido2."','".$dni."','".$direccion."','".$poblacion."','".$provincia."','".$cp."','".$nacionalidad."','".$Fnacimiento."','".$foto."','".$telefono1."','".$telefono2."','".$email."','".$fecharegistro."')";
 
 
if(mysqli_query($GLOBALS['conn'],$consulta)) {
 
    echo "Datos guardados";
 
}else{
 
    echo "Error: " . $consulta . "<br>" . mysqli_error($GLOBALS['conn']);
 
}
 
cerrarBD();
 
header("location:index.php");
?>

No me aparece ni el error del ultimo if :(

Gracias de antemano
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Julio (830 intervenciones) el 27/02/2020 09:30:34
¿Se te ha colado esto o es está puesto por algo?

1
<input type="file" accept="image/*"

Quítale ese /* y pruebas.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Alejandro (172 intervenciones) el 27/02/2020 09:51:40
ese lo he puesto para que solo acepte imagenes, pero aun asi lo he quitado y no funciona :( es como que no coge los datos del insert
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Julio (830 intervenciones) el 27/02/2020 10:10:08
Imprime con var_dump lo que hay en $_GLOBALS['conn'], a ver si el problema es que no conecta en la base de datos.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Julio (830 intervenciones) el 27/02/2020 10:30:03
Coloca esto al principio del todo, justo detrás de la etiqueta <?php

1
2
error_reporting(E_ALL);
ini_set('display_errors', '1');

Y vuelve a probar. ¿Te indica dónde está el error?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Alejandro (172 intervenciones) el 27/02/2020 11:14:46
Vale ya veo el error, un error que presentia, me da error de clave foranea en la tabla datos_personales, resulta que esa clave foranea depende de la clave primaria de la tabla usuarios, por lo tanto se trata de una tabla hija cuyo padre es la tabla usuarios, supongo que tendre que hacer que la tabla datos_personales no dependa de la tabla usuarios y por lo tanto que la tabla usuarios sea una tabla tipo no???
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Julio (830 intervenciones) el 27/02/2020 11:33:29
No he acabado de entenderte, jaja. ¿Tienes en la tabla datos_personales un campo para relacionarlo con usuarios? ¿Puedes tener datos personales que no tengan relación con ningún usuario? Si es así, el campo debería estar en la tabla de usuarios y relacionarlo con la tabla de datos personales. Pero si en la tabla de datos personales tienes un campo que apunta hacia el usuario, tendrás que rellenarlo y por eso te estará dando error.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Alejandro (172 intervenciones) el 27/02/2020 11:55:54
"¿Tienes en la tabla datos_personales un campo para relacionarlo con usuarios?" si, tengo un campo que es la clave foreign key relacionada con la primary key de usuarios, y me da el error ahi. La tabla datos_personales no tiene nada que ver con la tabla usuarios, es una base de datos en la cual tengo la tabla usuarios que son los que registran los datos personales de las personas que quieren buscar trabajo, por lo tanto, los datos personales son de esas personas, la tabla usuarios contiene los que registran esos datos.

"Si es así, el campo debería estar en la tabla de usuarios y relacionarlo con la tabla de datos personales." Correcto, es lo que habia pensado. Por lo tanto, creo un campo de foreign key en usuarios y que apunte a la primary key de datos_personales no?

Por si acaso aqui te dejo el error:

Error: INSERT INTO datos_personales (id_personal, nombre, apellido1, apellido2, dni, direccion, poblacion, provincia, cp, nacionalidad, fecha_nacimiento, foto, telefono_movil, telefono_casa, email, fecha_registro) VALUES (''//aqui van los valores')
Cannot add or update a child row: a foreign key constraint fails (`bd`.`datos_personales`, CONSTRAINT `fk_usuario_personal` FOREIGN KEY (`fk_usuario_personal`) REFERENCES `usuarios` (`id_usuario`))
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Julio (830 intervenciones) el 27/02/2020 12:00:30
Pues más claro, agua. Si la tabla de datos personales no tiene que referenciar a ningún usuario, es simple. Cárgatela.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Alejandro (172 intervenciones) el 27/02/2020 12:02:34
pero necesito un usuario que registre esos datos, un login de un administrador, podria hacerlo solo con los usuarios de administradores de la base de datos pero seria un poco arriesgado no???
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Julio (830 intervenciones) el 27/02/2020 12:21:59
¿Cómo? No te entiendo. ¿Qué tiene que ver el que guardes los datos con el usuario? Quiero decir, si quieres que solo los usuarios registrados puedan guardar los datos, entonces debes montar un sistema de login y asegurarte de que ese código solo pueden ejecutarlo los usuarios logueados. Pero si te da igual cuál de los usuarios va colocando los datos personales, entonces eso no te afecta a tu problema actual.

Una cosa será hacer el sistema de login, y otra cosa el problema que tienes de registrar datos personales. Y me has dicho antes que te da igual quién sube los datos personales, que no necesitas guardar el usuario que los registró, ¿no?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Alejandro (172 intervenciones) el 27/02/2020 12:39:16
a ver igual es un error de concepto mio, si quiero que en esa intranet acceda un usuario administrador que registre los datos personales, no debo crear un tabla para ello?? o simplemente creo una variable de sesion con un usuario y destruyo la tabla usuarios???

"Y me has dicho antes que te da igual quién sube los datos personales, que no necesitas guardar el usuario que los registró, ¿no?"
Correcto, yo solo quiero que acceda un usuario administrador para registrar esos datos, pero esos datos que registra no tiene nada que ver con el mismo. Se me entiende ? jajaj
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Julio (830 intervenciones) el 27/02/2020 12:46:03
Lo dicho, un sistema de login con algún rol de usuarios.

Lo que tienes que hacer es, a esa tabla de usuarios que tienes en la base de datos, crearles una columna que indique cuál es su rol (administrador, usuario normal...). Luego la página donde insertas los datos personales solo deben poder tener acceso los usuarios que tengan el rol que tú quieras, por ejemplo el de administrador.

Una vez pueden introducir los datos personales, si te da igual qué usuario es, entonces no necesitas tener ningún campo usuario en la tabla de datos personales. Ya te has asegurado previamente que solo los usuarios con el rol de administrador podrán acceder a la página con el formulario de introducción de datos personales.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Alejandro (172 intervenciones) el 27/02/2020 13:08:16
entendido, pero no tenia un campo usuario en datos_personales, tengo una tabla usuarios donde estaba ese usuario administrador, en la tabla datos_personales tenia una clave foranea que apuntaba a la clave primaria de la tabla usuarios, por eso me da el error, igual eliminando esa clave foranea ya me inserta los datos
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Julio (830 intervenciones) el 27/02/2020 13:14:03
Eso que dices sí es "tener un campo usuarios en la tabla datos personales", jajaja, sea clave foránea o no. Debes eliminarla y luego asegurarte de que a ese formulario solo pueden acceder los usuarios que tú decidas.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insert fallido

Publicado por Alejandro (172 intervenciones) el 27/02/2020 13:29:21
Magnifico Julio ;) eres un crack, ha funcionado perfectamente ;) Muchas 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