Foros del Web » Programando para Internet » PHP »

problema con fecha

Estas en el tema de problema con fecha en el foro de PHP en Foros del Web. hola necesito ayuda con una fecha que quiero guardar en la bese de datos, en el html tengo la fecha en campos tipo select <select ...
  #1 (permalink)  
Antiguo 26/04/2009, 01:03
 
Fecha de Ingreso: julio-2008
Mensajes: 20
Antigüedad: 15 años, 9 meses
Puntos: 0
problema con fecha

hola necesito ayuda con una fecha que quiero guardar en la bese de datos, en el html tengo la fecha en campos tipo select
<select name="fecha" >
<? for ($i=1;$i<32;$i++){

echo "<option>$i</option>";

}

?>

</select> de
<select name="fecha">
<option value="01">Enero</option>
<option value="02">Febrero</option>
<option value="03">Marzo</option>
<option value="04">Abril</option>
<option value="05">Mayo</option>
<option value="06">Junio</option>
<option value="07">Julio</option>
<option value="08">Agosto</option>
<option value="09">Septiembre</option>
<option value="10">Octubre</option>
<option value="11">Noviembre</option>
<option value="12">Diciembre</option>
</select> de
<select name="fecha">
<? for ($i=1990;$i<2010;$i++){

echo "<option>$i</option>";

}

?>
</select>


y en el php

$fecha=date("Y/n/d");


if(isset ($_POST['fecha']) && !empty($_POST['fecha'])) {

$link = mysql_connect("localhost","xxx","xxx");
mysql_select_db("xxx",$link);

mysql_query("INSERT INTO prueba
(fecha)

VALUES
(('$fecha')",$link);


$my_error = mysql_error($link);

if(!empty($my_error)) {

echo "Ha habido un error al insertar los valores. $my_error";

} else {

echo "Los datos han sido introducidos satisfactoriamente";

}

} else {

echo "Error, no ha introducido todos los datos";

}


el error que me da es que siempre marca la misma fecha en la tabla sql
les agradeceria mucho su ayuda amigos...
  #2 (permalink)  
Antiguo 26/04/2009, 06:03
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: problema con fecha

No entiendo porque haces unos select y luego a fecha le pasas date("Y/n/d");

Lo más logíco es que los name de los select se llamen dia, mes, anyo, y luego en el php hacer

$dia = $_GET["dia"];
$mes = $_GET["mes"];
$anyo = $_GET["anyo"];

$fecha = $dia . " de " . $mes . " del " . $anyo;

y la sql correcta (te sobra un paréntesi):

mysql_query("INSERT INTO prueba (fecha) VALUES ('$fecha')", $link);

Siendo el atributo un varchar de 30 por lo menos para que te quepa por ejempo:
12 de Mayo del 2007
31 de Diciembre del 1999
etc ...
  #3 (permalink)  
Antiguo 26/04/2009, 08:57
 
Fecha de Ingreso: julio-2008
Mensajes: 20
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con fecha

hola ya lo intente pero me da un Error, no ha introducido todos los datos.
  #4 (permalink)  
Antiguo 26/04/2009, 09:16
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: problema con fecha

Que error? que datos no introduce? mejor que pongas el código y la descripción de la tabla donde haces el insert.
  #5 (permalink)  
Antiguo 26/04/2009, 09:24
 
Fecha de Ingreso: julio-2008
Mensajes: 20
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con fecha

es como si no lo reconociera.
<?

$dia = $_GET["dia"];
$mes = $_GET["mes"];
$anyo = $_GET["anyo"];
$fecha = array($dia . " de " . $mes . " del " . $anyo);


if(

isset ($_POST['fecha']) && !empty($_POST['fecha'])) {



$link = mysql_connect("localhost","xxxx","xxxx");
mysql_select_db("xxxx",$link);

mysql_query("INSERT INTO prueba (fecha) VALUES ('$fecha')", $link);




$my_error = mysql_error($link);

if(!empty($my_error)) {

echo "Ha habido un error al insertar los valores. $my_error";

} else {

echo "Los datos han sido introducidos satisfactoriamente";

}

} else {

echo "Error, no ha introducido todos los datos";

}

?>


y en el html

<select id:"dia" name="dia">
<? for ($i=1;$i<32;$i++){

echo "<option>$i</option>";

}

?>

</select> de
<select id="mes" name="mes">
<option value="01">Enero</option>
<option value="02">Febrero</option>
<option value="03">Marzo</option>
<option value="04">Abril</option>
<option value="05">Mayo</option>
<option value="06">Junio</option>
<option value="07">Julio</option>
<option value="08">Agosto</option>
<option value="09">Septiembre</option>
<option value="10">Octubre</option>
<option value="11">Noviembre</option>
<option value="12">Diciembre</option>
</select> de
<select id="anyo" name="anyo">
<? for ($i=1990;$i<2010;$i++){

echo "<option>$i</option>";

}

?>
</select>

y el sql

CREATE TABLE prueba (
ID int(8) unsigned NOT NULL auto_increment,

fecha varchar(30),

PRIMARY KEY (ID)
);
  #6 (permalink)  
Antiguo 26/04/2009, 09:26
 
Fecha de Ingreso: julio-2008
Mensajes: 20
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con fecha

tambien lo probe asi $fecha = $dia . " de " . $mes . " del " . $anyo;
  #7 (permalink)  
Antiguo 26/04/2009, 09:46
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: problema con fecha

Ya veo :)

usas pistas:

si pones: <option value="01" selected="selected">Enero</option> te aseguras de que por defecto haya algo seleccionado, así te ahorras el if(isset ($_POST['fecha']) && !empty($_POST['fecha'])) ya que siempre se le pasa algo.

Excepto cuando haces el for, hazlo igual pero en lugar de for hazlo del 1991 en adelante, pero antes creas un option con el selected de 1990

Por otro lado:

$dia = $_POST["dia"];
$mes = $_POST["mes"];
$anyo = $_POST["anyo"];

ya que imagino que tendrás en el form un método post.

vamos:

Código PHP:
<?php

$dia 
$_POST["dia"];
$mes $_POST["mes"];
$anyo $_POST["anyo"];
$fecha $dia " de " $mes " del " $anyo;


$link mysql_connect("localhost","xxxx","xxxx");
mysql_select_db("xxxx",$link);

mysql_query("INSERT INTO prueba (fecha) VALUES ('$fecha')"$link);

$my_error mysql_error($link);

if(!empty(
$my_error)) {
    echo 
"Ha habido un error al insertar los valores. $my_error";
} else {
    echo 
"Los datos han sido introducidos satisfactoriamente";

}
?>
y en el html

Código PHP:
<select id:"dia" name="dia">
<?php

echo "<option value="1" selected="selected">1</option>";
for (
$i=2;$i<32;$i++){
    echo 
"<option value="$i">$i</option>";
}

?>

</select> de
<select id="mes" name="mes">
<option value="01">Enero</option>
<option value="02">Febrero</option>
<option value="03">Marzo</option>
<option value="04">Abril</option>
<option value="05">Mayo</option>
<option value="06">Junio</option>
<option value="07">Julio</option>
<option value="08">Agosto</option>
<option value="09">Septiembre</option>
<option value="10">Octubre</option>
<option value="11">Noviembre</option>
<option value="12">Diciembre</option>
</select> de
<select id="anyo" name="anyo">
<?php
echo "<option value="1990" selected="selected">1990</option>";
for (
$i=1991;$i<2010;$i++){
    echo 
"<option value="$i">$i</option>";

}

?>
</select>
He modificado cosas del html, aunque en mes, quizá (a tu gusto), mejor poner en los values el mes y no el número, según como lo quieras mostrar luego, pero como digo, a tu gusto.

Última edición por moddik; 26/04/2009 a las 09:55
  #8 (permalink)  
Antiguo 26/04/2009, 09:56
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: problema con fecha

ojo que he modificado

$fecha = array($dia . " de " . $mes . " del " . $anyo); por $fecha = $dia . " de " . $mes . " del " . $anyo;

ya que lo que generas es un string, no un array
  #9 (permalink)  
Antiguo 26/04/2009, 11:14
 
Fecha de Ingreso: julio-2008
Mensajes: 20
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con fecha

ahora el error me lo da aqui

<?php

echo "<option value="1" selected="selected">1</option>";
for ($i=2;$i<32;$i++){
echo "<option value="$i">$i</option>";
}

?>
  #10 (permalink)  
Antiguo 26/04/2009, 15:14
 
Fecha de Ingreso: julio-2008
Mensajes: 20
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con fecha

Gracias ya lo pude resolver, me fue de mucha ayuda tu codigo. Lo unico que no me funciono fue en el html echo "<option value="1" selected="selected">1</option>"; esa linea me dio error. Pero la quite y funciona perfecto. gracias
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 14:27.