PDA

Ver la versión completa : (Muy urgente) Necesito ayuda con web...



buba-ho-tep
10/05/2013, 02:06
Hola,

llevo una semana terrible a raíz de que perdiera la información de mi pen y ahora me veo todas las noches estando hasta tarde para poder llegar a tiempo.

Ahora estoy liado con la asignatura que más me cuesta Web y necesito ayuda. Debo cambiar la fecha de mi base de datos mysql, tengo el código pero no sé como aplicarlo...

Este es el código:

http://www.desarrolloweb.com/articulos/1280.php

y este es el estado de mi código:

josepzin
10/05/2013, 02:56
Usa tablas... Infinito desprecio!!! :-P

Te refieres al datepicker??

MWarrior
10/05/2013, 02:58
¿A que te refieres con "Debo cambiar la fecha de mi base de datos mysql"?
¿Necesitas un campo de fecha para insertarlo en base de datos?

josepzin
10/05/2013, 02:59
Según el javascript que uses para el datepicker, tiene la opción para convertir formato, mañana te digo algo más

buba-ho-tep
10/05/2013, 03:31
¿A que te refieres con "Debo cambiar la fecha de mi base de datos mysql"?
¿Necesitas un campo de fecha para insertarlo en base de datos?

Sí, necesito cambiar el formato AÑO/MES/DIA que se guarda en mysqul por el formato español DIA/MES/AÑO

En esa pagina esta el codigo pero no sé donde va la función ni nada...

MWarrior
10/05/2013, 03:44
mm me voy a dormir porque mañana curro temprano, pasame los codigos y te lo hago (y explico). buenas noches xd

-----Actualizado-----

la bbdd tbn (ya que tbn me hace falta saber que tipo de dato es la columna mysql)

buba-ho-tep
10/05/2013, 03:46
Como te doy mi base datos??

akualung
10/05/2013, 03:52
Como te doy mi base datos??

Supongo que bastará con que le pases la cadena de conexión a la base de datos, y ya en el código de la página se inserta ésta donde toque y se conectará a la base de datos que corresponda, la tabla que corresponda, etc.

O con que le digas el nombre de la BD, la tabla y el campo que hay que modificar, supongo que ya bastará.

Mira, aprovecho para dejarte un código en PHP por si te sirve de algo. Es sencillamente una página en php que se conecta una base de datos y una tabla y saca todos los campos de esa tabla (tiene solo dos campos, "usuario" y "password", y la tabla se llama "usuarios")


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>

<?php
function conectar()
{
$servidor="mysql.webcindario.com";
$usuario="XXXXXXX";
$contrasenya="XXXXXXXXX";

if (!($link=mysql_connect($servidor,$usuario,$contras enya)))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("mispracticasphp",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

function hacerConsulta($link)
{
$result=mysql_query("select * from usuarios",$link);
printf("<table border=\"1\" cellspacing=\"1\">");
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td></tr>", $row["usuario"],$row["password"]);
}
printf("</table>");
mysql_free_result($result);
}

$link=conectar();

hacerConsulta($link); //ejecuta la consulta

mysql_close($link); //cierra la conexion
?>

</body>
</html>


Podrías modificar la sentencia SQL de la función hacerConsulta($link) para que extraiga el campo fecha que tienes en tu base de datos, por ejemplo "select campoFecha from nombreTabla" y modificas el código de la función para que te printe el html que necesites (en mi caso tan solo printo los dos campos en una tabla) donde llamarás también a cambiaf_a_normal($campoFecha) que te formateará la fecha y la printará tal como quieres que se vea. No sé si me he explicado bien, creo que me he liado de mala manera xD.

josepzin
10/05/2013, 09:34
Yo creo que le estais errando...

Si mal no entiendo el problema es que en la base de datos la fecha está almacenada asi YYYY-MM-DD pero en el datepicker en pantalla debe verse asi DD-MM-YYYY.

Si estas usando el datepicker que viene en la librería de JQuery UI, esa conversión la puede hacer directamente el javascript, por ejemplo yo lo tengo asi:


echo form_input(array('name'=>'Xdate_start', 'value'=>$_POST['date_start']=='0000-00-00 00:00:00' ? '' : date('d/m/Y H:i', strtotime($_POST['date_start'])), 'maxlength'=>16, 'size'=>16, 'class'=>'datePicker', 'required'=>'required'));

Es Codeigniter, eso en realidad se convierte en <input name="Xdate_start" value=... etc.

Luego en el javascript va esto:



$("input[name=Xdate_start]").datepicker({
altFormat: "yy-mm-dd",
altField: "#hidden_date_start",
defaultDate: +0,
showButtonPanel: true,
disabled: true,
numberOfMonths: 3,
changeYear: true,
changeMonth: true
});

En realidad el campo se llama date_start pero se usa Xdate_start para poder mostrar en pantalla el formato de la fecha de otra manera. El javascript se encarga de crear un input hidden para que se envíe el campo correcto en el formato de la base de datos.

A ver si es esto o le he errado yo :D

buba-ho-tep
10/05/2013, 10:16
Yo creo que le estais errando...

Si mal no entiendo el problema es que en la base de datos la fecha está almacenada asi YYYY-MM-DD pero en el datepicker en pantalla debe verse asi DD-MM-YYYY.

Si estas usando el datepicker que viene en la librería de JQuery UI, esa conversión la puede hacer directamente el javascript, por ejemplo yo lo tengo asi:


echo form_input(array('name'=>'Xdate_start', 'value'=>$_POST['date_start']=='0000-00-00 00:00:00' ? '' : date('d/m/Y H:i', strtotime($_POST['date_start'])), 'maxlength'=>16, 'size'=>16, 'class'=>'datePicker', 'required'=>'required'));

Es Codeigniter, eso en realidad se convierte en <input name="Xdate_start" value=... etc.

Luego en el javascript va esto:



$("input[name=Xdate_start]").datepicker({
altFormat: "yy-mm-dd",
altField: "#hidden_date_start",
defaultDate: +0,
showButtonPanel: true,
disabled: true,
numberOfMonths: 3,
changeYear: true,
changeMonth: true
});

En realidad el campo se llama date_start pero se usa Xdate_start para poder mostrar en pantalla el formato de la fecha de otra manera. El javascript se encarga de crear un input hidden para que se envíe el campo correcto en el formato de la base de datos.

A ver si es esto o le he errado yo :D

Sí, exactamente es eso pero donde va el código ese? En el body o el Head?
Tengo un formulario con los campos a rellenas de nombre, mail y fecha. ¿Se pone algo en el campo fecha?

Tengo hasta las dos de la tarde para entregarlo todo. Estrés a full ya que no tengo solo web. Aún estoy renderizando el proyecto final de 3D, que me ha salido un mojón por las prisas.

Muchas gracias a todos los que ayuden.

josepzin
10/05/2013, 10:41
Si es que os meteis en cada cosa... :D :D

A ver, ¿hace falta que tenga un datepicker? porque sino puedes hacerlo mas cutremente pidiendo la fecha directamente en el formato que quieras y luego convirtiendola antes de meterla en la base de datos.
Las dos opciones tienen sus "cositas".

Sin el picker puedes hacerlo asi:

Apenas lees la base de datos separas el campo de la fehca (supongamos que se llama $date) en dia, fecha y año (por cierto, en el HTML el INPUT de la fecha no tiene el NAME="...")

Para separar la fecha si está en formato datetime (YYYY-MM-DD) es como si fuera un texto, puedes hacer algo asi:

$ano=substr($date, 0, 4);
$mes=substr($date, 5, 2);
$dia=substr($date, 8, 2);


Luego en el HTML puedes poner 3 inputs normales, uno para el dia, mes y año.



<input name="dia" value="<?php echo $dia; ?>" maxlength="2" size="2" required="required" />
<input name="mes" value="<?php echo $mes; ?>" maxlength="2" size="2" required="required" />
<input name="ano" value="<?php echo $ano; ?>" maxlength="4" size="4" required="required" />


Y antes de guardar la BD haces la operacion inversa:


$date = $_POST['ano'].'-'.$_POST['mes'].'-'.$_POST['dia'];

¿Entiendes?

-----Actualizado-----

Seguramente hace falta alguna validación extra, por ejemplo que el día sea "01" y no "1", cosas asi... pero sería funcional!

Lo del datepicker es mas lioso.... necesitas hacer algo asi:

Agregar al HEAD:

Cargar JQUERY desde internet.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>

Cargar JQUERY UI (hay que descargar estos archivos y guardarlos en tu servidor, te he adjuntado un zip)


<link rel="stylesheet" media="screen" href="js/jquery-ui-1.7.2.custom/css/smoothness/jquery-ui-1.7.2.custom.css" />
<script src="js/jquery-ui-1.7.2.custom/jquery-ui-1.7.2.custom.min.js"></script>
33349

Y luego dentro del HTML tienes que poner esto:



<script>
$(document).ready( function()
{
$("input[name=Xdate]").datepicker({
altFormat: "yy-mm-dd",
altField: "#hidden_date",
defaultDate: +0,
showButtonPanel: true,
disabled: true,
numberOfMonths: 3,
changeYear: true,
changeMonth: true
});
});
</script>


El INPUT tiene que tener name="Xdate".

No sé, creo que si te lias te conviene usar el otro sistema, aqui quedan cosas por explicar y seguro que no funciona a la primera y no sabrás porqué!!

buba-ho-tep
10/05/2013, 11:17
Si es que os meteis en cada cosa... :D :D

A ver, ¿hace falta que tenga un datepicker? porque sino puedes hacerlo mas cutremente pidiendo la fecha directamente en el formato que quieras y luego convirtiendola antes de meterla en la base de datos.
Las dos opciones tienen sus "cositas".

Sin el picker puedes hacerlo asi:

Apenas lees la base de datos separas el campo de la fehca (supongamos que se llama $date) en dia, fecha y año (por cierto, en el HTML el INPUT de la fecha no tiene el NAME="...")

Para separar la fecha si está en formato datetime (YYYY-MM-DD) es como si fuera un texto, puedes hacer algo asi:

$ano=substr($date, 0, 4);
$mes=substr($date, 5, 2);
$dia=substr($date, 8, 2);


Luego en el HTML puedes poner 3 inputs normales, uno para el dia, mes y año.



<input name="dia" value="<?php echo $dia; ?>" maxlength="2" size="2" required="required" />
<input name="mes" value="<?php echo $mes; ?>" maxlength="2" size="2" required="required" />
<input name="ano" value="<?php echo $ano; ?>" maxlength="4" size="4" required="required" />


Y antes de guardar la BD haces la operacion inversa:


$date = $_POST[ano].'-'.$_POST[mes].'-'.$_POST[dia];

¿Entiendes?

-----Actualizado-----

Seguramente hace falta alguna validación extra, por ejemplo que el día sea "01" y no "1", cosas asi... pero sería funcional!

Lo del datepicker es mas lioso.... necesitas hacer algo asi:

Agregar al HEAD:

Cargar JQUERY desde internet.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>

Cargar JQUERY UI (hay que descargar estos archivos y guardarlos en tu servidor, te he adjuntado un zip)


<link rel="stylesheet" media="screen" href="js/jquery-ui-1.7.2.custom/css/smoothness/jquery-ui-1.7.2.custom.css" />
<script src="js/jquery-ui-1.7.2.custom/jquery-ui-1.7.2.custom.min.js"></script>
33349

Y luego dentro del HTML tienes que poner esto:



<script>
$(document).ready( function()
{
$("input[name=Xdate]").datepicker({
altFormat: "yy-mm-dd",
altField: "#hidden_date",
defaultDate: +0,
showButtonPanel: true,
disabled: true,
numberOfMonths: 3,
changeYear: true,
changeMonth: true
});
});
</script>


El INPUT tiene que tener name="Xdate".

No sé, creo que si te lias te conviene usar el otro sistema, aqui quedan cosas por explicar y seguro que no funciona a la primera y no sabrás porqué!!

No, no hace falta pero es un extra de cara a la nota. En clase nos pasaron el código del enlace que pongo arriba del todo. Es algo diferente del tuyo.

-----Actualizado-----

Gracias una vez más. Lo voy a intentar y sino sale lo dejo tal cual. :)

josepzin
10/05/2013, 17:36
¿Cómo fue?? :P

MWarrior
10/05/2013, 18:23
Vaya, he estado en el trabajo y me he perdido la movida, te dije lo de la base de datos, por lo menos para saber el tipo de dato de la columna fecha donde la quieres guardar, Mysql trabaja con tres tipos de datos para las fechas y esta bien saber cual. Te lo dice uno que trabaja con bases de datos Oracle ;)
Bueno y como vas

buba-ho-tep
10/05/2013, 19:05
Hola, al final me han dejado entregarlo para más tarde y no lo he podido hacer. He dormido muy poco y creo que me echaré una siesta. Lo miro cuando este más descansado. :)

MWarrior
10/05/2013, 19:08
Ok, la proxima vez, no esperes a última hora hombre

akualung
10/05/2013, 21:05
Ok, la proxima vez, no esperes a última hora hombre

No se cuál habrá sido su caso, pero creo que a veces no se trata de eso. En mi caso, empezamos el proyecto de final de ciclo con tiempo de sobra (o eso creíamos), pero entre cosas que te salen que no sabes cómo solucionar, cosas que has planteado mal y has de rehacer (normal cuando eres novato) y una cosa extra que nos pidió el profe como "putadilla final, porque eso nos pasará también en un curro real", acabamos terminando todo la noche anterior, haciendo la presentación después de dos días seguidos sin dormir, que no sé ni cómo pude articular frases coherentes mientras explicaba el proyecto.

buba-ho-tep
12/05/2013, 02:19
No se cuál habrá sido su caso, pero creo que a veces no se trata de eso. En mi caso, empezamos el proyecto de final de ciclo con tiempo de sobra (o eso creíamos), pero entre cosas que te salen que no sabes cómo solucionar, cosas que has planteado mal y has de rehacer (normal cuando eres novato) y una cosa extra que nos pidió el profe como "putadilla final, porque eso nos pasará también en un curro real", acabamos terminando todo la noche anterior, haciendo la presentación después de dos días seguidos sin dormir, que no sé ni cómo pude articular frases coherentes mientras explicaba el proyecto.

Mi caso fue que perdí el pendrive con los trabajos de todo un trimestre y he tenido que volver a hacerlo todo deprisa y corriendo. Y encima el diseño web nunca se me ha dado bien y trabajamos con dreamweaver que te da casi todo el código php mascado.

Al final no me ha salido y es que soy muy negado. Me podéis dar el código pero no sé ni donde ponerlo ni nada. Seguro que lo he puesto en un sitio erróneo. Lo he puesto en el head.