Ver Mensaje Individual
  #7 (permalink)  
Antiguo 23/09/2015, 10:31
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Error insertando valores de una fecha desde formulario.

Hola de nuevo NSD

He seguido tus ejemplos paso a paso y parece que por fin se imprime todo correctamente a exepción de si repito alguna fecha en plan santo.

Por ejemplo para buscar los valores de fecha de nacimiento y santo lo he hecho así:

Código PHP:
Ver original
  1. <?php
  2. $fecha_de_nacimiento = $fila['fecha_de_nacimiento'];               
  3. $dia_nacimiento = date('d',strtotime($fecha_de_nacimiento));
  4. $mes_nacimiento = date('m',strtotime($fecha_de_nacimiento));
  5. $ano_nacimiento = date('Y',strtotime($fecha_de_nacimiento));
  6.    
  7. $santo = $fila['santo'];
  8. $dia_santo = date('d',strtotime($santo));
  9. $mes_santo = date('m',strtotime($santo));
  10. ?>

Y luego en el formulario de edición igual que en tu ejemplo pero cambiando $_POST["dia_nacimiento"] por $dia_nacimiento:

Código php:
Ver original
  1. <label>Fecha de nacimiento: </label>
  2.     <select id="dia_nacimiento" name="dia_nacimiento">    
  3.         <option value="">Día: </option>
  4.         <?php
  5.         //$selected = (empty($_POST['dia_nacimiento']) ? 0 : $_POST["dia_nacimiento"]);
  6.         $selected = (empty($dia_nacimiento) ? 0 : $dia_nacimiento);
  7.         for ($i=1; $i<32; $i++)
  8.             echo "<option value=\"$i\" ".($i == $selected ? "selected" : "").">$i</option>";
  9.         ?>
  10.     </select>
  11.     <select id="mes_nacimiento" name="mes_nacimiento"> 
  12.         <option value="">Mes: </option>
  13.         <?php          
  14.         $selected = (empty($mes_nacimiento) ? 0 : $mes_nacimiento);
  15.         $meses = array('Meses','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio',
  16.             'Agosto','Septiembre','Octubre','Noviembre','Diciembre');
  17.         for ($i=1;$i<sizeof($meses); $i++){
  18.             echo "<option value=\"$i\" ".($i == $selected ? "selected" : "").">$meses[$i]</option>";   
  19.         }
  20.         ?>
  21.     </select>  
  22.     <select id="ano_nacimiento" name="ano_nacimiento">
  23.         <option value="">Año: </option>
  24.         <?php      
  25.         $selected = (empty($ano_nacimiento) ? 0 : $ano_nacimiento);
  26.         for ($i=1930; $i<2002; $i++)
  27.             echo "<option value=\"$i\" ".($i == $selected ? "selected" : "").">$i</option>";
  28.         ?> 
  29.     </select>

Hasta aquí va todo perfectamente, sin embargo si repito la opción del campo "santo" (que por cierto la he mantenido como "date" en la base de datos) pues la edita correctamente pero a la hora de volver a imprimirla muestra día: 1 y mes: Enero.

Código PHP:
Ver original
  1. <label>Fecha del santo: </label>
  2.     <select id="dia_santo" name="dia_santo">    
  3.         <option value="">Día: </option>
  4.         <?php        
  5.         $selected = (empty($dia_santo) ? 0 : $dia_santo);
  6.         for ($i=1; $i<32; $i++)
  7.             echo "<option value=\"$i\" ".($i == $selected ? "selected" : "").">$i</option>";
  8.         ?>
  9.     </select>
  10.     <select id="mes_santo" name="mes_santo">   
  11.         <option value="">Mes: </option>
  12.         <?php          
  13.         $selected = (empty($mes_santo) ? 0 : $mes_santo);          
  14.  
  15.         $meses = array('Meses','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio',
  16.             'Agosto','Septiembre','Octubre','Noviembre','Diciembre');
  17.         for ($i=1;$i<sizeof($meses); $i++){
  18.             echo "<option value=\"$i\" ".($i == $selected ? "selected" : "").">$meses[$i]</option>";   
  19.         }      
  20.         ?>
  21.     </select>

Lo he revisado varias veces y no encuentro un error o el por qué de imprimir siempre 1 o Enero en santo.

¿Es la manera correcta?

Gracias de nuevo por tu ayuda, saludos.