Nueva pregunta

Pregunta:

Fecha: 25-07-2018 14:48:01 (En Español)

Problemas con UPDATE en PHP[Resuelta]

Muy buenas, les escribo para que ayuden con edición de datos php.

Tengo un grupo de campos que al editar con update de php, si se modifican pero hay dos campos que no los modifico que son facultad_egre y carrera_egre y lo borra.

Modifico cualquiera otro campo y me borra estos 2 (facultad_egre y carrera_egre) estos campos son de un select

Les agradezco que ayuden, estoy q no doy mas.

Les dejo los códigos.

<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

  <title>Modificar.</title>
  <style>
  body { background-color: #D5D8DC;
  }
  button {
  color: #900;
  font-weight: bold;
  font-size: 90%;
  text-transform: uppercase;
}
#container {
  display: flex;
  flex-direction: column;
  width: 110px;
  height: 120px;
}

.Imagen {
  flex-grow:1;
  height: 100%;
}
  </style>
</head>  
<body>
  
  <?php
    
    if (isset($_REQUEST['id_persona'])) {
    $id_persona = $_REQUEST['id_persona'];
    } else {
    $id_persona = "";
}
	
       $conexion=mysqli_connect("localhost","root","","egresado") or 
       die("Problemas en la conexion");
       mysqli_select_db($conexion,'egresado') or
       die("Problemas en la selección de la base de datos");
          
            $registro=mysqli_query($conexion,"select pe.nombres, pe.apellido, pe.cedula, pe.fecha_nac, pe.telefono, pe.celular, pe.sexo, pe.correo, pe.year_egreso, pe.empresa_lab, pe.cargo, pe.direccion_emp, pe.foto, fa.facultad_egre,ca.carrera_egre
							 FROM persona  pe
								 INNER JOIN facultades fa
								     ON fa.id_facultad= pe.id_persona
								 INNER JOIN carreras  ca
								     ON ca.id_carrera= fa.id_facultad
								 where pe.id_persona= '$id_persona'")or
      die("Problemas en el select:".mysqli_error($conexion));
	 
    if ($reg=mysqli_fetch_array($registro))
    {
  ?>
        <form method="POST" action="modificacion3.php" enctype="multipart/form-data">
	
        <table align="center" cellspacing="1" cellpadding="1" border="0" width="900" height="600" bgcolor="White">
          <tr>
             <td colspan="2" bgcolor="666666" align="center"><font color="White" SIZE="6"><strong>Datos a modificar</strong></font></td>
          </tr>
        <tr>
          <td width="40%"  style="font-size:115%;">
	          <table align="center" cellspacing="6" cellpadding="8" border="0" width="790">
			  <tr>
			  <td><div align="right" >Nombre:</div></td>
			  <td><input type="text" name="nombres" size="30" style="font-size:90%;" value="<?php echo $reg['nombres']; ?>"></td>
			  </tr>
			  <input type="hidden" name="id_persona" value="<?php echo $_REQUEST['id_persona']; ?>">
			  <tr>
			  <td><div align="right">Apellido:</div></td>
			  <td><input type="text" name="apellido" size="30" style="font-size:90%;" value="<?php echo $reg['apellido']; ?>"></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Cedula:</div></td>
			  <td><input type="text" name="cedula" size="30" style="font-size:90%;" value="<?php echo $reg['cedula']; ?>"></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Fecha de Nacimiento:</div></td>
			  <td><input type="date" name="fecha_nac" size="30" style="font-size:90%;" value="<?php echo $reg['fecha_nac']; ?>"></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Telefono:</div></td>
			  <td><input type="text" name="telefono" size="30" style="font-size:90%;" value="<?php echo $reg['telefono']; ?>"></td>      
			  </tr>
			  <tr>	  
			  <td><div align="right">Celular:</div></td>
			  <td><input type="text" name="celular" size="30" style="font-size:90%;" value="<?php echo $reg['celular']; ?>"></td>      
			  </tr>
			  <tr>
			  <td><div label for="sexo" align="right">Genero:</label></div></td>
			  <td><div class="col-sm-10">
						<label class="radio-inline">
							<input type="radio" id="sexo" name="sexo" value="Hombre" <?php if($reg['sexo']=='Hombre') echo 'checked'; ?>> Hombre
						</label>
						
						<label class="radio-inline">
							<input type="radio" id="sexo" name="sexo" value="Mujer" <?php if($reg['sexo']=='Mujer') echo 'checked'; ?>> Mujer
						</label>
					</div></td>      
			  </tr> 
			  <tr>
			  <td><div align="right">Correo:</div></td>
			  <td><input type="email" name="correo" size="50" style="font-size:90%;" value="<?php echo $reg['correo']; ?>"></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Fecha de Egreso:</div></td>
			  <td><input type="date" name="year_egreso" size="30" style="font-size:90%;" value="<?php echo $reg['year_egreso']; ?>"></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Facultad:</div></td>
			  <td><select id="lista_facultades" name="facultad_egre" style="font-size:90%;"></select></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Carrera:</div></td>
			  <td><select id="carreras" name="carrera_egre"  style="font-size:90%;"></select></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Empresa donde Labora:</div></td>
			  <td><input type="text" name="empresa_lab" size="50" style="font-size:90%;" value="<?php echo $reg['empresa_lab']; ?>"></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Cargo Loboral:</div></td>
			  <td><input type="text" name="cargo" size="30" style="font-size:90%;" value="<?php echo $reg['cargo']; ?>"></td>     
			  </tr>
			  <tr>
			  <td><div align="right">Direccion de la Empresa:</div></td>
			  <td><input type="text" name="direccion_emp" size="50" style="font-size:90%;" value="<?php echo $reg['direccion_emp']; ?>"></td>      
			  </tr>
			  <tr>
			  <td><div align="right">Foto:</div></td>
			  <td><input type="file" name="foto" id="foto" size="10" style="font-size:90%;" ><div id="container">
			 <?php  echo "<img  class=\"Imagen\" src=\""."../fotos/".$reg['foto']."\"/>";?></td>
             </div></td>      
			  </tr>
			  <td></td><td><div align="right"><button type="submit" value="Guardar">Guardar</button></div></td>		
			  </tr>
			  <tr>
			  <td></td><td><div align="right"><img src="../imagen/Regresar.png" style="cursor:pointer;" onclick="history.back()" height="40" width="105"   /></div></td>
			  </tr> 
	      </table>
	    </td>
    </form><br><br>
    </tr>
  </table>
<?php
    }      
    mysqli_close($conexion);
  ?> <br><br> 
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
  </script>
  <script type="text/javascript" src="js/index.js"></script>
</body>
</html>


<?php
  
     $id_persona = $_POST['id_persona'];
     $sexo = isset($_POST['sexo']) ? $_POST['sexo'] : 0;
	 
	 if (isset($_POST['facultad_egre'])) {
    $facultad = $_POST['facultad_egre'];
    } else {
    $facultad= "";
	} 
	 if (isset($_POST['carrera_egre'])) {
    $carrera = $_POST['carrera_egre'];
    } else {
    $carrera= "";
	}
	 
       $conexion=mysqli_connect("localhost","root","","egresado") or 
       die("Problemas en la conexion");
       mysqli_select_db($conexion,'egresado') or
       die("Problemas en la selección de la base de datos"); 
	   if ($_FILES['foto']['name'] =="") {
       mysqli_query($conexion,"UPDATE persona  pe
								   INNER JOIN facultades fa
								     ON pe.id_persona= fa.id_facultad
								   INNER JOIN carreras  ca
								     ON ca.id_carrera= pe.id_persona SET 
									       id_persona='$_POST[id_persona]',
										   nombres='$_POST[nombres]',
										   apellido='$_POST[apellido]',
										   cedula='$_POST[cedula]',
										   fecha_nac='$_POST[fecha_nac]',
										   telefono='$_POST[telefono]',
										   celular='$_POST[celular]',
										   sexo='$sexo',
										   year_egreso='$_POST[year_egreso]',
										   facultad_egre='$facultad',
										   carrera_egre='$carrera',
										   empresa_lab='$_POST[empresa_lab]',
										   cargo='$_POST[cargo]',
										   direccion_emp='$_POST[direccion_emp]'
							  where id_persona= '$id_persona'") or
       die(mysqli_error($conexion));
	   }
        else{
        $ruta = "../fotos/";
        opendir($ruta);
        $destino = $ruta.$_FILES['foto']['name'];
        copy($_FILES['foto']['tmp_name'],$destino);
        $nombre=$_FILES['foto']['name'];
        mysqli_query($conexion,"UPDATE persona  pe
								   INNER JOIN facultades fa
								     ON pe.id_persona= fa.id_facultad
								   INNER JOIN carreras  ca
								     ON ca.id_carrera= pe.id_persona SET 
									       id_persona='$_POST[id_persona]',
										   nombres='$_POST[nombres]',
										   apellido='$_POST[apellido]',
										   cedula='$_POST[cedula]',
										   fecha_nac='$_POST[fecha_nac]',
										   telefono='$_POST[telefono]',
										   celular='$_POST[celular]',
										   sexo='$sexo',
										   year_egreso='$_POST[year_egreso]',
										   facultad_egre='$facultad',
										   carrera_egre='$carrera',
										   empresa_lab='$_POST[empresa_lab]',
										   cargo='$_POST[cargo]',
										   direccion_emp='$_POST[direccion_emp]',
										   foto='".$nombre."'
							  where id_persona= '$id_persona'") or
       die(mysqli_error($conexion));
    }
       
           echo "<script>
                alert('La  se ha realizado exitosamente.');
                window.location= '../consulta/mostrar.php'
             </script>";     
	   
      mysqli_close($conexion);
     
  ?>  



Les agradezco cualquiera sugerencia para mejorar mi código
Etiquetas: MySQL - PHP - PHP MySQLi - Pregunta Votos: 0 - Respuestas: 9 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 26-07-2018 11:39:00 Seria bueno que revises, porque en tu codigo estas poniendo que esos campos se modifiquen, si no quieres que se modifiquen, no seria mejor excluirlos del update, y por cierto, no hay forma de hacer un update mas limpio sin subconsultas?
    Por cierto, te recomiendo separar tu codigo, la conexion a la bd tiene que estar en otro archivo, el formulario con el php, seria bueno separarlo.
    Revisa con herramientas para desarrolador en chrome eo firebug en firefox, me parece que no esta enviando lo que esta en el select.
      Votos: 1 - Link respuesta
     
  • Fecha: 26-07-2018 13:32:15 Gracias miguel por tu sugerencia de arreglo del código y si el select trabaja bien solo que al momento del UPDATE me borra esos campos no se porque.

    y también si he pensado en quitar esos campos del UPDATE y voy arreglar lo de ka conexión.

    cualquiera sugerencia t los agradezco tengo rato de estar peleando con este condigo.
      Votos: 0 - Link respuesta
     
  •  
      0  
     
    Fecha: 27-07-2018 07:31:43 Buenas.
    Consulta, los combo o select de carrera y facultad, cuando cargas los valores del registro que estas editando, se llenan con datos ? desde donde?.
    Por lo que ve en tu codigo antes de actualizar validas que si esos 2 campos no existes le asignas un valor vacio a la variable que luego usas en la consulta de actualizacion, pues bien la cosa esta ahi, es decir que como no viene con valores desde el post siempre le estas asignando un valor vacio y ese valor es lo que actualiza en tu tabla.

    Los select de los formularios no son enviados si no tienen datos, por eso debes tener en el formulario select con informacion y haber seleccionado algo para que sea enviado por post.

    espero haberte aportado algo.
    saludos..
      Votos: 0 - Link respuesta
     
  • Fecha: 27-07-2018 15:34:15 Gracias Raul por tu punto de vista de mi proyecto

    pero les pido que como corrijo el código para me trabaje bien y darle una solucion
      Votos: 0 - Link respuesta
     
  • Fecha: 28-07-2018 12:52:46 Fácil, es que estas indicando que si no llega en el post, lo deje vacio:

    
    if (isset($_POST['facultad_egre'])) {
        $facultad = $_POST['facultad_egre'];
        } else {
        $facultad= "";
        } 
    
    


    por eso los esta borrando
      Votos: 0 - Link respuesta
     
  • Fecha: 29-07-2018 18:39:14 Hola carlos gracias por contestar sigue igual, esos dos campos a modificar que se borran cuando edito otros campos vienen de un combobox select y se si es por eso.
    no he podido soluciones eso ayuda.
      Votos: 0 - Link respuesta
     
  •  
      0  
     
    Fecha: 30-07-2018 07:56:31 Hola, si todavía no lo solucionaste y si quieres escribirme aquí miclientedepruebas@gmail.com y puedo ayudarte.
    Saludos.
      Votos: 0 - Link respuesta
     
  • Fecha: 30-07-2018 09:14:52 Lo que no se ve es como estas imprimiendo los valores en el la etiqueta select ? no hay ningún código de php ahí o estas utilizando java script para cargar esos datos.

    Segundo deberías hacer es comprobar que es lo que estas trayendo desde el form...
    <?php
    echo var_dump($_POST);
    exit();

    ?>
    esto comprueba lo que llega al generar ese evento que tienes.
      Votos: 0 - Link respuesta
     
  • Fecha: 07-08-2018 13:34:00 Hola señor Raul Rch me puede enviar otro correo y gracias   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com