| ||||
Respuesta: Borrar datos MySQL cada x dias Sí, busca información sobre cronjob.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| ||||
Respuesta: Borrar datos MySQL cada x dias Entra en el menu Cronjobs En la seccion 'Add New Cron Job' pon en Minute * , Hour *, Day *, Month * y Weekday * (todo asteriscos), esto hara que cada minuto se ejecute lo que queremos, luego cuando veas que todo va bien lo cambiaremos para que lo ejecute 1 vez por semana. En Command pones algo como: /home/tuusuario/public_html/cronjob.sh (o la ruta correspondiente a tu hosting) Crea el archivo cronjob.sh con lo siguiente: php /home/tusuario/public_html/borrardatos.php Y ya en borrardatos.php programas normalmente el borrado de los datos que quieras. Prueba primero a que simplemente modifique algun dato en vez de borrar nada, asi ves que se esta ejecutando bien el cronjob. Cuando lo tengas todo listo entras a editar el cronjob y pones: Minute 0, Hour 0, Day *, Month * y Weekday 1 (para el lunes) Prueba y me dices. |
| |||
Respuesta: Borrar datos MySQL cada x dias pero haver, creo que me explique mal. No quiero que cada X tiempo se borren los datos si no que cuando unos datos cumplan X dias se borren automaticamente. Sorry por la confusion :S |
| ||||
Respuesta: Borrar datos MySQL cada x dias De alguna forma se tiene que ejecutar un código automaticamente ¿no? Bueno, otra forma de hacerlo es guardando el tiempo time() en cada registro, y cada vez que insertes uno, automaticamente borre los que fueron creados hace X dias. |
| |||
Respuesta: Borrar datos MySQL cada x dias he pensado que con php podria hacer un script que borrase todos los datos que tuviesen más de X tiempo,y con cronjobs programar que se ejecutase cada dia Es una manera ¿no? |
| ||||
Respuesta: Borrar datos MySQL cada x dias Claro, ¿pero eso que dices quien lo activa? ¿automatico? Pues sería otro cronjob diario. Yo te recomiendo que pruebes a manejar la funcion time(); Haz echo time(); veras que te muestra el tiempo 'en segundos', si a cada registro le guardas su time() al ser creado ya tienes todo hecho. Luego puedes borrar aquellos registros cuyo time() actual menos el time() de creación guardado sea mayor que 86400 (un dia). |
| ||||
Respuesta: Borrar datos MySQL cada x dias Esta sería la sentencia Mysql siempre que guardes en TIMECREACION el time() correctamente: DELETE from tabla where (UNIX_TIMESTAMP()-tabla.TIMECREACION)>86400 |
| |||
Respuesta: Borrar datos MySQL cada x dias haver seria algo asi? Cita: Por cierto he cambiado el86400 a 60 para las pruebas //Conexion con la base de datos <?php $time = time(); $result = $time - $row_Recordset1['time']; if($result >= 60){ mysql_query(DELETE from time where (UNIX_TIMESTAMP()-time.TIMECREACION)>60); } ?> |
| ||||
Respuesta: Borrar datos MySQL cada x dias Tan solo sería necesario esto en tu .php: mysql_query("DELETE from time where (UNIX_TIMESTAMP()-time.TIMECREACION)>60"); Con eso ya esta mirando todos los registros y borrando los antiguos. |
| |||
Respuesta: Borrar datos MySQL cada x dias entonces si pongo esto en un php se borraran los antiguos? //datos de conexion mysql_query("DELETE from time where (UNIX_TIMESTAMP()-time.TIMECREACION)>60"); Lo digo por que he insertado unos datos y a los 3 minutos lo he ejecutado he mirado la base de datos y no se ha borrado nada |
| |||
Respuesta: Borrar datos MySQL cada x dias veras en la tabla no hay 3 valores solo hay 1, porque es para la prueba el valor es time y al imprimir echo time(); 1279911505 |
| ||||
Respuesta: Borrar datos MySQL cada x dias ¿El valor numerico del campo TIMECREACION cual es? tendrá que ser algo parecido a 1279911505. Al momento de crear el registro pues lo rellenas con un time();. De esa forma esto (UNIX_TIMESTAMP()-time.TIMECREACION)>60 tiene sentido. |
| |||
Respuesta: Borrar datos MySQL cada x dias vale, me sigue sin ir. Voy a poner todos los datos para ver si encuentras algun fallo TIMECREATION es un INT(200) El valor de prueba de TIMECREATION es 1279894498 Y el PHP que debería borrarlo es así: Cita: Y más datos el PHP que inserta los datos de prueba es este:<?php require_once('Connections/Prueba.php'); mysql_query("DELETE from time where ((UNIX_TIMESTAMP()-time.TIMECREACION)>60"); ?> Cita: <?php require_once('Connections/Prueba.php'); ?> <?php $time = time(); $sql = "INSERT INTO time (TIMECREACION) VALUES ('$time')"; mysql_query($sql); ?> |
| ||||
Respuesta: Borrar datos MySQL cada x dias Creo que hay un parentesis de mas aqui: mysql_query("DELETE from time where ((UNIX_TIMESTAMP()-time.TIMECREACION)>60"); Quitalo a ver si es eso |
| |||
Respuesta: Borrar datos MySQL cada x dias pues lo he quitado, y nada sigue sin darme errores, pero no me borra los datos de prueba. ¿Tendra algo que ver que este haciendo las pruebas con el wamp? |
| ||||
Respuesta: Borrar datos MySQL cada x dias Metete en la consola del phpmyadmin y ejecuta: DELETE from time where (UNIX_TIMESTAMP()-time.TIMECREACION)>60 Y fijate si te da algun error, y si no lo da, fijate abajo que te dice cuantas filas ha afectado (borrado en este caso) Si te dice que 0, prueba a cambiar a: DELETE from time where (UNIX_TIMESTAMP()-time.TIMECREACION)<0 Todo sea por dar con el motivo de que no borra nada. Tambien puedes probar un SELECT UNIX_TIMESTAMP(); Para comprobar que realmente eso devuelve una cifra |
| |||
Respuesta: Borrar datos MySQL cada x dias si lo hago desde la entrada de phpmyadmin me da el siguiente error #1046 - No database selected Pero si lo hago dentro de la base de datos no me da ningun error y ha borrado los datos de muestra |
| ||||
Respuesta: Borrar datos MySQL cada x dias ¿entonces? ¿que consulta hiciste la primera o la segunda? Ahora aplicalo a tu archivo .php y luego configura el cronjob tal como te dije anets. |
| |||
Respuesta: Borrar datos MySQL cada x dias hice la primera. Pero no entiendo una cosa: ahora uso el PHP para insertar el time, y ya no funciona. No he cambiado el codigo absolutamente nada, ni me da error. Última edición por DavidBL; 25/07/2010 a las 04:01 |
| |||
Respuesta: Borrar datos MySQL cada x dias El codigo que inserta(antes insertaba, ahora no) el time es este: Cita: Y el codigo que tendria que borrarlos<?php require_once('Connections/Prueba.php'); ?> <?php $time = time(); $sql = "INSERT INTO time (TIMECREACION) VALUES ('$time')"; mysql_query($sql); ?> Cita: Haver si encuentras algo <?php require_once('Connections/Prueba.php'); mysql_query(DELETE from time where (UNIX_TIMESTAMP()-time.TIMECREACION)>60); ?> |
| ||||
Respuesta: Borrar datos MySQL cada x dias Pero a ver, ¿en que tabla tienes los datos que quieres borrar? Estamos liandonos demasiado ya me parece........... Te pongo un ejemplo, imaginate una tabla de VENTAS , con los campos ID, PRODUCTO, PRECIO, TIMECREACION, y varios registros: 1 - Camiseta - 15 - 1279894498 2 - Pantalon- 25 - 1279894500 3 - Gorra - 5 - 1279894600 4 - Zapatos - 35 - 1279894700 5 - Chaqueta - 50 - 1279894800 6 - Blusa - 20 - 1279894900 Ahi estan los registros, con su time() de cuando se realizo la venta correspondiente ¿ok? Pues ahora con esto se borrarian las ventas hechas hace mas de 60 segundos: mysql_query("DELETE from VENTAS where (UNIX_TIMESTAMP()-VENTAS.TIMECREACION)>60"); (No le quites las comillas, que he visto en tu post anterior que se las habias quitado) Espero entiendas ahora, yo me rindo ya xD |
Etiquetas: |