guardar Registros en SQL con PHP POD
Buenas
Estaba trastenado por la web, y encontre un script que mas o menos se adaptaba a mis necesidades, aunque le estoy adaptando aun. le he agregado 2 select html dependientes 1 del otro ( demomento ) que recogen datos de una SQL.
Hasta ahi bien, pero el problema lo tengo al guardar todos los datos en la sql, que me da un error, de que no se puede cargar la pagina, llevo horas y no lo consigo, se que el error lo tengo cuando ma hace el insert, pero no se si es porque me vienen vacias las variables quizas.
el codigo es:
```<?php
error_reporting( ~E_NOTICE ); // avoid notice
require_once 'Conexion.php';
if(isset($_POST['btnsave']))
{
$username = $_POST['user_name'];// user name
$userjob = $_POST['user_job'];// user email
$familia = $_POST['familias'];// nuevo
$referencia = $_POST['referencia_sel'];// nuevo
$imgFile = $_FILES['user_image']['name'];
$tmp_dir = $_FILES['user_image']['tmp_name'];
$imgSize = $_FILES['user_image']['size'];
if(empty($username)){
$errMSG = "Ingrese la marca";
}
else if(empty($userjob)){
$errMSG = "Ingrese el tipo.";
}
else if(empty($imgFile)){
$errMSG = "Seleccione el archivo de imagen.";
}
else
{
$upload_dir = 'imagenes/'; // upload directory
$imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension
// valid image extensions
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions
// rename uploading image
$userpic = rand(1000,1000000).".".$imgExt;
// allow valid image file formats
if(in_array($imgExt, $valid_extensions)){
// Check file size '1MB'
if($imgSize < 1000000) {
move_uploaded_file($tmp_dir,$upload_dir.$userpic);
}
else{
$errMSG = "Su archivo es muy grande.";
}
}
else{
$errMSG = "Solo archivos JPG, JPEG, PNG & GIF son permitidos.";
}
}
// if no error occured, continue ....
if(!isset($errMSG))
{
$stmt = $DB_con->prepare('INSERT INTO tbl_imagenes(Imagen_Marca,Imagen_Tipo,Imagen_Img,familia,referencia) VALUES(:uname, :ujob, :upic, :ufam, :uref)');
$stmt->bindParam(':uname',$username);
$stmt->bindParam(':ujob',$userjob);
$stmt->bindParam(':upic',$userpic);
$stmt->bindParam(':ufam',$familia);//nuevo
$stmt->bindParam(':uref',$referencia);//nuevo
if($stmt->execute())
{
$successMSG = "Nuevo registro insertado correctamente ...";
header("refresh:3;index.php"); // redirects image view page after 5 seconds.
}
else
{
$errMSG = "Error al insertar ...";
}
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Subir, Insertar, Actualizar, Borrar una imágen usando PHP y MySQL</title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<!-- Optional theme -->
<link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css">
<!-- Latest compiled and minified JavaScript -->
<script src="bootstrap/js/jquery.min.js"></script>
</head>
<body>
<div class="navbar navbar-default navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header"> <a class="navbar-brand" href="index.php" title='Inicio' target="_blank">Inicio</a> </div>
</div>
</div>
<div class="container">
<div class="page-header">
<h1 class="h3">Agregar nueva imágen. <a class="btn btn-default" href="index.php"> <span class="glyphicon glyphicon-eye-open"></span> Mostrar todo </a></h1>
</div>
<?php
if(isset($errMSG)){
?>
<div class="alert alert-danger"> <span class="glyphicon glyphicon-info-sign"></span> <strong><?php echo $errMSG; ?></strong> </div>
<?php
}
else if(isset($successMSG)){
?>
<div class="alert alert-success"> <strong><span class="glyphicon glyphicon-info-sign"></span> <?php echo $successMSG; ?></strong> </div>
<?php
}
?>
<form method="post" enctype="multipart/form-data" class="form-horizontal">
<table class="table table-bordered table-responsive">
<tr>
<td><label class="control-label">Marca</label></td>
<td><input class="form-control" type="text" name="user_name" placeholder="Ingrese la Marca" value="<?php echo $username; ?>" /></td>
</tr>
<tr>
<td><label class="control-label">Modelo</label></td>
<td><input class="form-control" type="text" name="user_job" placeholder="Ingrese el Modelo" value="<?php echo $userjob; ?>" /></td>
</tr>
<tr>
<td><label class="control-label">Imágen.</label></td>
<td><input class="input-group" type="file" name="user_image" accept="image/*" /></td>
</tr>
<tr>
<td><label class="control-label">Familias</label></td><!--nuevo -->
<td>
<?php
require_once './con_db.php'; //libreria de conexion a la base
$con = conDb();
if(!$con){
die("<br/>Sin conexión.");
}
/*obtenemos los datos del primer select*/
$sql = "select * from familia";
$query = mysqli_query($con, $sql);
$filas = mysqli_fetch_all($query, MYSQLI_ASSOC);
mysqli_close($con);
?>
<select id="familias" class="form-control">
<option value="">- Seleccione -</option>
<?php foreach ($filas as $op): //llenar las opciones del primer select ?>
<option value="<?= $op['id'] ?>"><?= $op['name'] ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<td><label class="control-label">Referencia</label></td> <!--nuevo -->
<td>
<select id="referencia" class="form-control"><!--nuevo -->
<option value="">- Seleccione -</option>
</select>
<br/><br/>
Opción seleccionada: <span style="font-weight: bold;" id="referencia_sel" class="form-control"></span>
</td>
</tr>
<tr>
<td colspan="2"><button type="submit" name="btnsave" class="btn btn-default"> <span class="glyphicon glyphicon-save"></span> Guardar Imagen2 </button></td>
</tr>
</table>
</form>
</div>
<!-- Latest compiled and minified JavaScript -->
<script src="bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var referencia = $('#referencia');
var referencia_sel = $('#referencia_sel');
//Ejecutar accion al cambiar de opcion en el select de las bandas
$('#familias').change(function(){
var familia_id = $(this).val(); //obtener el id seleccionado
if(familia_id !== ''){ //verificar haber seleccionado una opcion valida
/*Inicio de llamada ajax*/
$.ajax({
data: {familia_id:familia_id}, //variables o parametros a enviar, formato => nombre_de_variable:contenido
dataType: 'html', //tipo de datos que esperamos de regreso
type: 'POST', //mandar variables como post o get
url: 'referencia.php' //url que recibe las variables
}).done(function(data){ //metodo que se ejecuta cuando ajax ha completado su ejecucion
referencia.html(data); //establecemos el contenido html de discos con la informacion que regresa ajax
referencia.prop('disabled', false); //habilitar el select
});
/*fin de llamada ajax*/
}else{ //en caso de seleccionar una opcion no valida
referencia.val(''); //seleccionar la opcion "- Seleccione -", osea como reiniciar la opcion del select
referencia.prop('disabled', true); //deshabilitar el select
}
});
//mostrar una leyenda con el disco seleccionado
$('#referencia').change(function(){
$('#referencia_sel').html($('#referencia option:selected').text());
});
});
</script>
</body>
</html>
y el codigo del 2º archivo
require_once './con_db.php'; //libreria de conexion a la base
$familia_id = filter_input(INPUT_POST, 'familia_id'); //obtenemos el parametro que viene de ajax
if($familia_id != ''){ //verificamos nuevamente que sea una opcion valida
$con = conDb();
if(!$con){
die("<br/>Sin conexión.");
}
/*Obtenemos los discos de la banda seleccionada*/
$sql = "select * from referencia where familia_id = ".$familia_id;
$query = mysqli_query($con, $sql);
$filas = mysqli_fetch_all($query, MYSQLI_ASSOC);
mysqli_close($con);
}
/**
* Como notaras vamos a generar codigo html, esto es lo que sera retornado a ajax para llenar
* el combo dependiente
*/
?>
<option value="">- Seleccione -</option>
<?php foreach($filas as $op): //creamos las opciones a partir de los datos obtenidos ?>
<option value="<?= $op['id'] ?>"><?= $op['name'] ?></option>
<?php endforeach; ?>
eh marcado como NUEVO lo que eh agregado yo a mayores, porque el script si que funcionaba
Respuestas
Todavía no se han recibido respuestas a esta pregunta. ¿Quieres enviar la primera?