> Faqs > guardar Registros en SQL con PHP POD
Esta Faq no ha sido aprovada por el equipo de moderadores de DesarrolloWeb.com por no seguir las normas de publicación de preguntas.

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> &nbsp; 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&oacute;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&oacute;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> &nbsp; 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&oacute;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?