Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Formulario 'editar' registro y valores por defecto

Estas en el tema de Formulario 'editar' registro y valores por defecto en el foro de PHP en Foros del Web. Hola amigos, Necesito vuestra ayuda porque no se por donde seguir..os cuento: actualmente estoy haciendo un formulario para editar unos registros previamente guardados en una ...
  #1 (permalink)  
Antiguo 26/02/2014, 05:53
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 9 meses
Puntos: 0
Mensaje Formulario 'editar' registro y valores por defecto

Hola amigos,
Necesito vuestra ayuda porque no se por donde seguir..os cuento: actualmente estoy haciendo un formulario para editar unos registros previamente guardados en una base de datos.

El formulario muestra los datos sin problemas y para evitar evitar cambiar ciertos valores importantes por equivocación, saco en un "cuadro readonly" el valor actual, y para cambiarlo hay que pinchar en un desplegable que lee de la base de datos los valores por los que puede cambiar ese cuadro (ese despeglabe muestra un "Pincha para cambiar" a modo de ayuda)

Toda esta parte la hago sin problemas; mi atasco consiste en que si el usuario abre la ficha para editarla y no necesita cambiar ese valor; la ficha guarda el "Pincha para cambiar" en lugar del valor que tenía...osea, que el despegable manda el valor siempre a la base de datos.

Hay alguna manera de evitar que un desplegable envíe el valor a la base de datos si no se usa, programando solo en php?

Os pongo el codigo:
Código PHP:
Ver original
  1. <label>Director:</label>
  2.     <?php //Leo el valor actual guardado en la base de datos
  3.         $director=$registro['director'];
  4.         $sql2="SELECT * FROM voluntario WHERE idVoluntario='$director'";
  5.         $consulta2=mysql_query($sql2,$conexion);
  6.         $registro2=mysql_fetch_array($consulta2);      
  7.     ?>
  8. <!--Lo muestro como solo lectura-->
  9.     <input type="text" name="nombre_director" readonly="readonly" value="<?php echo strtoupper($registro2["nombre"]);?>"/><br/><br/>
  10.     <input type="hidden" name="director" value="<?php echo $registro["director"];?>"/>
  11.     <?php //Saco un despegable con los posibles cambios
  12.         echo "<select name='director'>";
  13.             echo "<option value=''>Cambiar Director</option>";
  14.             $sql2="SELECT * FROM voluntario WHERE tit_director='1'";
  15.             $consulta2=mysql_query($sql2,$conexion);
  16.             while($registro2=mysql_fetch_array($consulta2)){
  17.                 echo "<option value='".$registro2['idVoluntario']."'>".strtoupper($registro2['nombre'])."</option>";
  18.             }
  19.         echo "</select>";
  20.     ?>

Os estaría muy agradecidos por la ayu
  #2 (permalink)  
Antiguo 26/02/2014, 05:54
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Formulario 'editar' registro y valores por defecto

AQUI ESTÁ EL CODIGO COMPLETO DEL FORMULARIO:
Código PHP:
Ver original
  1. <?php
  2. @include("pages/seguridad.php");
  3. include("pages/conexion.php");
  4. ?>
  5. <h2>EDITAR CAMPAMENTO</h2>
  6. <?php
  7. include ("pages/menu_gestor.php");?>
  8. <div id="formulario">
  9. <?php
  10. //Se muestran los campos guardados en la db y si no se tocan se volverán a mandar los mismos
  11. if(isset($_POST['boton_editar'])){ $id=$_POST['id'];
  12.                             $denominacion_camp=isset($_POST['denominacion_camp'])? $_POST['denominacion_camp']: '' ;
  13.                             $año=isset($_POST['año'])? $_POST['año']: '' ;     
  14.                             $estacion=isset($_POST['estacion'])? $_POST['estacion']: '' ;
  15.                             $director=isset($_POST['director']) ? $_POST['director']: '' ;
  16.                             $lugar=isset($_POST['lugar'])? $_POST['lugar']: '' ;
  17.                             $info=isset($_POST['info']) ? $_POST['info']: '' ;
  18.                             $estado=(array_key_exists('estado', $_POST)) ? $_POST['estado']:NULL; //si el checkbox se envía sin marcar, toma valor null
  19.                            
  20. $sql="UPDATE campamento SET denominacion_camp='$denominacion_camp', año='$año', estacion='$estacion', director='$director', lugar='$lugar', info='$info', estado='$estado' WHERE idCampamento=$id";
  21. $res=mysql_query($sql,$conexion); //ahora actualizaremos la consulta:
  22.     if($res){
  23.             echo "Ficha del CAMPAMENTO '$denominacion_camp' con estacion '$estacion' y año '$año' actualizada correctamente.<br/><a href='index.php?p=editar_campamento&id=".$_POST['id']."'>Seguir editando la ficha del CAMPAMENTO '$denominacion_camp' con estacion '$estacion' y año '$año'</a><br /><a href='index.php?p=detalle_campamento&id=".$_POST['id']."'>Ver la ficha del CAMPAMENTO '$denominacion_camp' con estacion '$estacion' y año '$año'</a><br/><a href='index.php?p=campamento'>Volver al listado principal de CAMPAMENTOS</a><br />";
  24.             mysql_close($conexion);
  25.         }else{
  26.             echo "Error en la actualización.";
  27.             mysql_close($conexion);
  28.         }
  29. //a partir de aquí es cuando todavía no se le ha dado al botón, me recojo el id del hidden de abajo,q también es el del UPDATE...WHRE idcontactos..
  30. }else{$id=$_GET["id"];
  31.       $sql="SELECT * FROM campamento WHERE idCampamento=$id";
  32.       $consulta=mysql_query($sql,$conexion);
  33.       while($registro=mysql_fetch_array($consulta)){
  34. ?>
  35. <form method="post" action="index.php?p=editar_campamento" enctype="multipart/form-data">
  36.     <label>Denominación:</label>
  37.         <input type="text" name="denominacion_camp" value="<?php echo ucwords(strtolower($registro["denominacion_camp"]));?>"/><span class="obligatorio_insertar">*</span><br/>
  38.     <label>Año:</label>
  39.         <input type="text" name="año" value="<?php echo $registro["año"];?>"/><span class="obligatorio_insertar">*</span><br/>
  40.     <label>Estación:</label>
  41.         <input type="text" name="estacion" value="<?php echo ucwords(strtolower($registro["estacion"]));?>"/><span class="obligatorio_insertar">*</span><br/>
  42.     <label>¿Campamento abierto?:</label>
  43.         <input type="checkbox" name="estado" value="1"<?php echo (isset($estado))?'checked="checked"':(($registro['estado'])?'checked="checked"':'');?>><span class="obligatorio_insertar">*</span><br/>
  44.     <label>Info:</label>
  45.         <input type="textarea" name="info" value="<?php echo strtolower($registro["info"]);?>"/><br/>
  46.     <label>Director:</label>
  47.     <?php
  48.         $director=$registro['director'];
  49.         $sql2="SELECT * FROM voluntario WHERE idVoluntario='$director'";
  50.         $consulta2=mysql_query($sql2,$conexion);
  51.         $registro2=mysql_fetch_array($consulta2);      
  52.     ?>
  53.     <input type="text" name="nombre_director" readonly="readonly" value="<?php echo strtoupper($registro2["nombre"]);?>"/><br/><br/>
  54.     <input type="hidden" name="director" value="<?php echo $registro["director"];?>"/>
  55.     <?php
  56.         echo "<select name='director'>";
  57.             echo "<option value=''>Cambiar Director</option>";
  58.             $sql2="SELECT * FROM voluntario WHERE tit_director='1'";
  59.             $consulta2=mysql_query($sql2,$conexion);
  60.             while($registro2=mysql_fetch_array($consulta2)){
  61.                 echo "<option value='".$registro2['idVoluntario']."'>".strtoupper($registro2['nombre'])."</option>";
  62.             }
  63.         echo "</select>";
  64.     ?>
  65.     <label>Lugar:</label>
  66.     <?php
  67.         $lugar=$registro['lugar'];
  68.         $sql3="SELECT * FROM sitios WHERE idSitios='$lugar'";
  69.         $consulta3=mysql_query($sql3,$conexion);
  70.         $registro3=mysql_fetch_array($consulta3);      
  71.     ?>
  72.     <input type="text" name="denominacion" readonly="readonly" value="<?php echo strtoupper($registro3["denominacion"]);?>"/><br/><br/>
  73.     <input type="hidden" name="lugar" value="<?php echo $registro["lugar"];?>"/>
  74.     <?php
  75.         echo "<select name='lugar'>";
  76.             echo "<option value=''>Cambiar Lugar</option>";
  77.             $sql3="SELECT * FROM sitios WHERE tipo!='2'";
  78.             $consulta3=mysql_query($sql3,$conexion);
  79.             while($registro3=mysql_fetch_array($consulta3)){
  80.                 echo "<option value='".$registro3['idSitios']."'>".strtoupper($registro3['denominacion'])."</option>";
  81.             }
  82.         echo "</select>";
  83.     ?>
  84.     <input type="hidden" name="id" value="<?php echo $id;?>"/><!--me mando el id oculto,será obligatorio para la consulta para actualizar el q sea en concreto no todos-->
  85.     <input type="submit" name="boton_editar" value="Guardar"/><!--al darle al botón el id que me mando es el de POST de arriba-->
  86.     <input id="borrar" name="borrar" value="Restaurar" type="reset">
  87.     <input type="button" name="cancelar" value="Cancelar" onClick="location.href='index.php?p=campamento'"/><br/><br/>
  88. <?php include ("pages/menu_info_campamentos/formulario.php");?>
  89.     <input type="button" name=" Publicar Información" value="Publicar Información" onClick="location.href='index.php?p=insertar_noticia'"/>
  90.     </form>
  91. <?php
  92. }}
  93. ?>
  94. </div>
  #3 (permalink)  
Antiguo 26/02/2014, 07:11
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Formulario 'editar' registro y valores por defecto

Bueno..me autorespondo! jeje, ya he dado con la formula...he quitado el "Cambiar director" que mostraba el listado por defecto; en su lugar muestro el valor que tenía guardado y así si no quieren cambiar el valor, vuelve a enviarse el mismo que había.
Por si le sirve a alguien dejo el codigo de los despleglabes:

Código PHP:
Ver original
  1. <label>Director:</label>
  2.     <?php
  3.         $director=$registro['director'];
  4.         $sql2="SELECT * FROM voluntario WHERE idVoluntario='$director'";
  5.         $consulta2=mysql_query($sql2,$conexion);
  6.         $registro2=mysql_fetch_array($consulta2);      
  7.     ?>
  8.     <input type="text" name="nombre_director" readonly="readonly" value="<?php echo strtoupper($registro2["nombre"]);?>"/><br/>
  9.     <input type="hidden" name="director" value="<?php echo $registro["director"];?>"/>
  10.     <label>Cambiar Director:</label>
  11.     <?php
  12.         echo "<select name='director'>";
  13.             $sql2="SELECT * FROM voluntario WHERE tit_director='1'";
  14.             $consulta2=mysql_query($sql2,$conexion);
  15.             while($registro2=mysql_fetch_array($consulta2)){
  16.                 if($registro2["idVoluntario"]==$registro["director"])
  17.                 {
  18.                 echo "<option value='".strtoupper($registro2['idVoluntario'])."' selected='selected'>".strtoupper($registro2["nombre"])."</option>";
  19.                 }else{
  20.                     echo "<option value='".strtoupper($registro2['idVoluntario'])."'>".strtoupper($registro2['nombre'])."</option>";
  21.                 }
  22.             }
  23.         echo "</select>";
  24.     ?><br />
  25.     <label>Lugar:</label>
  26.     <?php
  27.         $lugar=$registro['lugar'];
  28.         $sql3="SELECT * FROM sitios WHERE idSitios='$lugar'";
  29.         $consulta3=mysql_query($sql3,$conexion);
  30.         $registro3=mysql_fetch_array($consulta3);      
  31.     ?>
  32.     <input type="text" name="denominacion" readonly="readonly" value="<?php echo strtoupper($registro3["denominacion"]);?>"/><br/>
  33.     <input type="hidden" name="lugar" value="<?php echo $registro["lugar"];?>"/>
  34.     <label>Cambiar el Lugar:</label>
  35.     <?php
  36.         echo "<select name='lugar'>";
  37.             $sql3="SELECT * FROM sitios WHERE tipo!='2'";
  38.             $consulta3=mysql_query($sql3,$conexion);
  39.             while($registro3=mysql_fetch_array($consulta3)){
  40.                 if($registro3["idSitios"]==$registro["lugar"])
  41.                 {
  42.                 echo "<option value='".strtoupper($registro3['idSitios'])."'>".strtoupper($registro3['denominacion'])."</option>";
  43.                 }else{
  44.                     echo "<option value='".strtoupper($registro3['idSitios'])."'>".strtoupper($registro3['denominacion'])."</option>";
  45.                 }
  46.             }
  47.         echo "</select>";
  48.     ?><br/>

Etiquetas: defecto, formulario, registro, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:13.