Foros del Web » Programando para Internet » PHP »

Función EXTRACT () devolver en un solo campo en PHP

Estas en el tema de Función EXTRACT () devolver en un solo campo en PHP en el foro de PHP en Foros del Web. Hola no se si es la forma correcta en la consulta pero aqui voy Tengo un campo de "fecha" y quiero extraer "Y-m-d H:i:s" en ...
  #1 (permalink)  
Antiguo 07/01/2011, 00:23
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Función EXTRACT () devolver en un solo campo en PHP

Hola no se si es la forma correcta en la consulta pero aqui voy

Tengo un campo de "fecha" y quiero extraer "Y-m-d H:i:s" en un campo cada uno, la función EXTRACT () se utiliza para devolver una sola parte de una fecha / hora, como el año, mes, día, hora, minuto, etc

alguien puede darme una idea como seria una consulta tengo esto

Aqui me da todo en un solo campo

Código HTML:
<input name="fecha" type="text" value="[PHP]<? echo date("Y-m-d H:i:s"); ?>[/PHP]" /> 
La idea es que cada año, mes, día, hora, minuto, etc se vea en un campo cada uno que lo hago de esta forma

Código HTML:

<select name="fecha"><option value="2011">2011</option></select>->AÑO
<select name="fecha"><option value="2010">2010</option></select>->AÑO
<input name="fecha" type="text" value="[PHP]<? echo date("m"); ?>[/PHP" /> ->MES
<input name="fecha" type="text" value="[PHP]<? echo date("d"); ?>[/PHP" /> ->DIA
<input name="fecha" type="text" value="[PHP]<? echo date("H"); ?>[/PHP" /> ->HORA
<input name="fecha" type="text" value="[PHP]<? echo date("i"); ?>[/PHP" /> ->MINUTOS
<input name="fecha" type="text" value="[PHP]<? echo date("s"); ?>[/PHP" /> ->SEGUNDOS

esto me da el resultado pero no me ingresa al db en el DB me sale esto

"0000-00-00 00:00:00"
  #2 (permalink)  
Antiguo 07/01/2011, 01:01
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Tienes varios campos con el mismo nombre "fecha"... no recuerdo si el navegador toma el primero o el ultimo que encuentra para enviar el valor correspondiente. Lo mejor seria que expreses un poco mejor la idea que tienes, porque, hasta donde puedo entender, parece que quieres meter todos los segundos de un año (o varios) en un solo select... Espero (como usuario) no tener que llegar a usar un dia algo asi!!!

O bien, podria ser que quieras que el usuario seleccione/capture una fecha, pero dependiendo de varios campos... pero esto no se hace automatico, sino manual... ya nos contaras que es exactamente lo que quieres y vermos como ayudar.

P.D. extract() crea variables correspondientes a los indices de una matriz (array) asociativa.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 07/01/2011, 01:48
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Cita:
Iniciado por Triby Ver Mensaje
Tienes varios campos con el mismo nombre "fecha"... no recuerdo si el navegador toma el primero o el ultimo que encuentra para enviar el valor correspondiente. Lo mejor seria que expreses un poco mejor la idea que tienes, porque, hasta donde puedo entender, parece que quieres meter todos los segundos de un año (o varios) en un solo select... Espero (como usuario) no tener que llegar a usar un dia algo asi!!!

O bien, podria ser que quieras que el usuario seleccione/capture una fecha, pero dependiendo de varios campos... pero esto no se hace automatico, sino manual... ya nos contaras que es exactamente lo que quieres y vermos como ayudar.

P.D. extract() crea variables correspondientes a los indices de una matriz (array) asociativa.
Hola Triby

Gracias por tu respuesta ya buen tiempo que no entraba por aqui, y siempre has sido de una gran ayuda, quiza no me explique bien pero creo que con una grafica me dejare entender mejor


Mira WP........ tiene esto y solo utiliza un campo con fecha de post de alta y modificacion, la idea es algo similar mas simple, por que aqui en este codigo no logre entender..


Código PHP:
<?php // view filters
if ( !is_singular() ) {
$arc_query "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC";

$arc_result $wpdb->get_results$arc_query );

$month_count count($arc_result);

if ( 
$month_count && !( == $month_count && == $arc_result[0]->mmonth ) ) {
$m = isset($_GET['m']) ? (int)$_GET['m'] : 0;
?>
<select name='m'>
<option<?php selected$m); ?> value='0'><?php _e('Show all dates'); ?></option>
<?php
foreach ($arc_result as $arc_row) {
    if ( 
$arc_row->yyear == )
        continue;
    
$arc_row->mmonth zeroise$arc_row->mmonth);

    if ( 
$arc_row->yyear $arc_row->mmonth == $m )
        
$default ' selected="selected"';
    else
        
$default '';

    echo 
"<option$default value='" esc_attr("$arc_row->yyear$arc_row->mmonth") . "'>";
    echo 
$wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear";
    echo 
"</option>\n";
}
?>
</select>
<?php ?>


Aqui la imagen

  #4 (permalink)  
Antiguo 07/01/2011, 13:03
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Bueno, no se como sera en WP, pero... lo mas logico seria:

Código HTML:
Ver original
  1. <select name="mes">
  2.     <option value="01">Enero</option>
  3.     <option value="...">todos los demas</option>
  4.     <option value="12">Diciembre</option>
  5. <input type="text" name="dia" value="08" />
  6. <input type="text" name="anio" value="2011" />
  7. <input type="text" name="hora" value="00" />
  8. <input type="text" name="mins" value="00" />

Despues en PHP tomas cada uno de esos campos:
Código PHP:
Ver original
  1. $mes = $_POST['mes'];
  2. // ... Aqui todos los demas
  3. $mins = $_POST['mins'];
  4.  
  5. $fecha_sql = "$anio-$mes-$dia $hora:$mins:00"; // voila!!!
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 07/01/2011, 14:13
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 10 meses
Puntos: 51
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Lo mejor siempre es hacer con date de php.

Tomando el código de Triby:

Código PHP:
Ver original
  1. $fecha_sql = date("Y-m-d H:i:s", strtotime("$anio-$mes-$dia $hora:$mins:00"));
  #6 (permalink)  
Antiguo 08/01/2011, 00:35
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Gracias por sus respuestas como siempre son de gran ayuda e iluminacion, pero el problema esta en que yo solo necesito un unico campo


el campo es "fecha"

se que se puede extraer cada uno de ellos y mostrar en un solo campo o enviar a un campo pero como seria la consulta ya que ahi salen varios campos dia mes hora etc... y eso no es la idea o estoy aun pero :(

Última edición por pilucho; 08/01/2011 a las 00:44 Razón: ortografia gracias.
  #7 (permalink)  
Antiguo 08/01/2011, 10:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Puedes ver el codigo fuente de la captura que mostraste... es imposible con un solo campo (o nombre de campo).
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 08/01/2011, 22:15
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Cita:
Iniciado por Triby Ver Mensaje
Puedes ver el codigo fuente de la captura que mostraste... es imposible con un solo campo (o nombre de campo).

Hola Triby

Bueno creo que tienes razon es imposible para mi al menos, pero en esta imagen fijate el "post_date" y "post_date_gmt" el primero es la fecha de alta, y el segundo es fecha de modificacion aqui la imagen



y este codigo usan ellos

Código PHP:
<?php // view filters 
if ( !is_singular() ) { 
$arc_query "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC"

$arc_result $wpdb->get_results$arc_query ); 

$month_count count($arc_result); 

if ( 
$month_count && !( == $month_count && == $arc_result[0]->mmonth ) ) { 
$m = isset($_GET['m']) ? (int)$_GET['m'] : 0
?> 
<select name='m'> 
<option<?php selected$m); ?> value='0'><?php _e('Show all dates'); ?></option> 
<?php 
foreach ($arc_result as $arc_row) { 
    if ( 
$arc_row->yyear == 
        continue; 
    
$arc_row->mmonth zeroise$arc_row->mmonth); 

    if ( 
$arc_row->yyear $arc_row->mmonth == $m 
        
$default ' selected="selected"'
    else 
        
$default ''

    echo 
"<option$default value='" esc_attr("$arc_row->yyear$arc_row->mmonth") . "'>"
    echo 
$wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear"
    echo 
"</option>\n"

?> 
</select> 
<?php ?>
se que ellos lo hacen posible no tengo la menor idea como, pero la idea es recojer los datos la idea que planteas aqui es muy bien

Cita:
<select name="mes">
<option value="01">Enero</option>
<option value="...">todos los demas</option>
<option value="12">Diciembre</option>
</select>
<input type="text" name="dia" value="08" />
<input type="text" name="anio" value="2011" />
<input type="text" name="hora" value="00" />
<input type="text" name="mins" value="00" />



$mes = $_POST['mes'];
// ... Aqui todos los demas
$mins = $_POST['mins'];

$fecha_sql = "$anio-$mes-$dia $hora:$mins:00"; // voila!!!
Yo recojo la fecha asi
Código PHP:
<input name="fecha" type="text" value="<? echo date("Y-m-d H:i:s"); ?>" />
hasta ahi va bien en la base de datos ingresa todo bien, pero como logro separar cada uno de ellos ("Y-m-d H:i:s") en campos y enviar en un solo campo "fecha"

ellos hacen algo asi
Código PHP:
    echo "<option$default value='" esc_attr("$arc_row->yyear$arc_row->mmonth") . "'>"
    echo 
$wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear"
    echo 
"</option>\n"
muy complejo para mi imposible como lo dices tu, se que existe algo mas simple pero nose cual seria la consulta.

Última edición por pilucho; 08/01/2011 a las 22:17 Razón: corrigiendo los codigos, gracias
  #9 (permalink)  
Antiguo 09/01/2011, 00:09
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

aqui una funcion de como se resuelve pero no consigo relacionar a un solo campo se que anda por aqui la cosa....

Código PHP:
    foreach ( array('aa''mm''jj''hh''mn') as $timeunit ) {
        if ( !empty( 
$post_data['hidden_' $timeunit] ) && $post_data['hidden_' $timeunit] != $post_data[$timeunit] ) {
            
$post_data['edit_date'] = '1';
            break;
        }
    }

    if ( !empty( 
$post_data['edit_date'] ) ) {
        
$aa $post_data['aa'];
        
$mm $post_data['mm'];
        
$jj $post_data['jj'];
        
$hh $post_data['hh'];
        
$mn $post_data['mn'];
        
$ss $post_data['ss'];
        
$aa = ($aa <= ) ? date('Y') : $aa;
        
$mm = ($mm <= ) ? date('n') : $mm;
        
$jj = ($jj 31 ) ? 31 $jj;
        
$jj = ($jj <= ) ? date('j') : $jj;
        
$hh = ($hh 23 ) ? $hh -24 $hh;
        
$mn = ($mn 59 ) ? $mn -60 $mn;
        
$ss = ($ss 59 ) ? $ss -60 $ss;
        
$post_data['post_date'] = sprintf"%04d-%02d-%02d %02d:%02d:%02d"$aa$mm$jj$hh$mn$ss );
        
$post_data['post_date_gmt'] = get_gmt_from_date$post_data['post_date'] );
    } 
  #10 (permalink)  
Antiguo 09/01/2011, 00:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Ese bloque de codigo de WP, lo unico que hace es crear un select para el mes... no mas!

Como consigues separar cada campo?... es facil con dos simples funciones list() y explode():
Código PHP:
Ver original
  1. // La hora esta separada de la fecha por un espacio:
  2. list($fecha, $hora) = explode(' ', $fecha_sql);
  3.  
  4. // Los elementos de fecha estan separados por -
  5. list($anio, $mes, $dia) = explode('-', $fecha);
  6.  
  7. // Los elementos de hora estan separados por :
  8. list($hh, $mm, $ss) = explode(':', $hora);
  9.  
  10. // Para volver a unirlas como fecha, basta con:
  11. // Asegurarte de que cada elemento tiene ceros a la izquierda necesarios
  12. // Crear una cadena de fecha
  13. $fecha_sql = "$anio-$mes-$dia $hh:$mm:$ss";

Para ceros a la izquierda puedes usar str_pad()

En tu consulta solo necesitas poner:
Código SQL:
Ver original
  1. UPDATE tabla SET fecha = '$fecha_sql' WHERE aqui_tu_filtro
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 09/01/2011, 02:17
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: Función EXTRACT () devolver en un solo campo en PHP

Cita:
Iniciado por Triby Ver Mensaje
Ese bloque de codigo de WP, lo unico que hace es crear un select para el mes... no mas!

Como consigues separar cada campo?... es facil con dos simples funciones list() y explode():
Código PHP:
Ver original
  1. // La hora esta separada de la fecha por un espacio:
  2. list($fecha, $hora) = explode(' ', $fecha_sql);
  3.  
  4. // Los elementos de fecha estan separados por -
  5. list($anio, $mes, $dia) = explode('-', $fecha);
  6.  
  7. // Los elementos de hora estan separados por :
  8. list($hh, $mm, $ss) = explode(':', $hora);
  9.  
  10. // Para volver a unirlas como fecha, basta con:
  11. // Asegurarte de que cada elemento tiene ceros a la izquierda necesarios
  12. // Crear una cadena de fecha
  13. $fecha_sql = "$anio-$mes-$dia $hh:$mm:$ss";

Para ceros a la izquierda puedes usar str_pad()

En tu consulta solo necesitas poner:
Código SQL:
Ver original
  1. UPDATE tabla SET fecha = '$fecha_sql' WHERE aqui_tu_filtro
Hola Triby


probe de esta manera


Código PHP:
<?php    
// La hora esta separada de la fecha por un espacio:
list($fecha$hora) = explode(' '$fecha_sql);
 
// Los elementos de fecha estan separados por -
list($Y$m$d) = explode('-'$fecha);
 
// Los elementos de hora estan separados por :
list($H$i$s) = explode(':'$hora);
 
// Para volver a unirlas como fecha, basta con:
// Asegurarte de que cada elemento tiene ceros a la izquierda necesarios
// Crear una cadena de fecha
$fecha_sql "$Y-$m-$d $H:$i:$s";
;
?>
   
<select name="fecha">
<option value="<? echo date("Y"); ?>">Enero</option>
<option value="02">Febrero</option>
</select>

<input name="<? echo date("m"); ?>" type="text" value="<? echo date("m"); ?>" />
<input name="<? echo date("d"); ?>" type="text" value="<? echo date("d"); ?>" />
<input name="<? echo date("H"); ?>" type="text" value="<? echo date("H"); ?>" />
<input name="<? echo date("i"); ?>" type="text" value="<? echo date("i"); ?>" />
<input name="<? echo date("s"); ?>" type="text" value="<? echo date("s"); ?>" />
me muestra los resultados pero no logra ingresar al db aun no he probado con el update corrigeme si estoy mal porfavor, gracias.

Etiquetas: devolver, extract, campos
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 23:43.