BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

Insertar campos en la BD desde formulario con PHP y MySQLi

Jazmin

No sé qué hago mal o que no hago bien, pero no consigo que se inserten los campos en BD. Cuando lo ejecuto en el formulario me dice que correcto, pero cuando miro en la BD no está :(

He probado tantas opciones que ya no sé ni qué más hacer, ni qué más leer.

<?php
    require ('conexion.php');
    $acentos = $conexion ->query("SET NAMES 'UTF8'");
    //Comprueba que se han insertado los campos, no verifica.
	if (isset ($_POST['submit']))
	{
		//Crea la variable de cada campo.
		$dni = $_POST['dni'];
		$name = $_POST['name'];
		$apellidos = $_POST['apellidos'];
		$fone = $_POST['fone'];
		$activity = $_POST['activity'];
		//Insertar en la BD
        $sql = "INSERT INTO student, activity (id_student,dni ,name ,apellidos ,fone,activity  ) values ('null','$dni','$name','$apellidos','$fone' ,'$activity' )";
		if ($resultado = $conexion->query($sql));
		{
			echo "El alumno ha sido dado de alta";
        }
	} else {
		echo "El alumno no ha sido registrado";
	}
	mysqli_close($conexion);
?>

Todo está en el mismo archivo, y <form> lo tengo así:

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
BocaDePez
BocaDePez

Está mal ubicada un "llave (})" la señalo, debe cerrar el if del isset

 <?php
    require ('conexion.php');
  $acentos = $conexion ->query("SET NAMES 'UTF8'");
  //Comprueba que se han insertado los campos, no verifica.
   if (isset ($_POST['submit']))
   {
  //Crea la variable de cada campo.
		$dni = $_POST['dni'];
		$name = $_POST['name'];
		$apellidos = $_POST['apellidos'];
		$fone = $_POST['fone'];
		$activity = $_POST['activity'];
  //Insertar en la BD
        $sql = "INSERT INTO student, activity (id_student,dni ,name ,apellidos ,fone,activity  ) values ('null','$dni','$name','$apellidos','$fone' ,'$activity' )";
       if ($resultado = $conexion->query($sql));
  	   {
		echo "El alumno ha sido dado de alta";
        }
}
    else
		{
            echo "El alumno no ha sido registrado";
        }

mysqli_close($conexion);

🗨️ 6
Jazmin

Gracias por la respuesta
Dices cambiarla así?

image.png
🗨️ 5
BocaDePez
BocaDePez

No, la llave debe ir antes del mysqli_close($conexion)

 <?php
  require ('conexion.php');
  $acentos = $conexion ->query("SET NAMES 'UTF8'");
  //Comprueba que se han insertado los campos, no verifica.
   if (isset ($_POST['submit']))
   {
  //Crea la variable de cada campo.
		$dni = $_POST['dni'];
		$name = $_POST['name'];
		$apellidos = $_POST['apellidos'];
		$fone = $_POST['fone'];
		$activity = $_POST['activity'];
  //Insertar en la BD
    $sql = "INSERT INTO student, activity (id_student,dni ,name ,apellidos ,fone,activity  ) values ('null','$dni','$name','$apellidos','$fone' ,'$activity' )";
    if ($resultado = $conexion->query($sql));
  	{
		 echo "El alumno ha sido dado de alta";
    }
    else
		{
     echo "El alumno no ha sido registrado";
    }
  }
	mysqli_close($conexion);
  >?
🗨️ 4
Jazmin

Así me da este error:

Parse error: syntax error, unexpected 'else' (T_ELSE) ... on line 25

image.png

🗨️ 3
BocaDePez
BocaDePez
BocaDePez
BocaDePez
🗨️ 1
Jazmin
BocaDePez
BocaDePez

Puedes ver los logs tanto de MySQL como los de HTTPD si los tienes habilitados y por supuesto revisar si el usuario de BD tiene permisos de escritura en la instancia que hayas creado.

🗨️ 1
Jazmin

La tengo en root y sin contraseña. Los logs buscaré donde se encuentran.
Gracias

BocaDePez
BocaDePez
-1

Prueba a usar prepare.

🗨️ 1
Jazmin

Ya me gustaría !! jajaja
Voy primero con lo más básico, luego las sentencias preparadas (que entiendo que es de lo que me hablas)

Gracias

Xiraventresca

Que tipo de relacion tienen las tablas student y activity ?