Recoger datos de un txt y mostrarlos en web

Slipk

Se le ha ido la olla a mi profesor y me ha pedido:

Cada 10 minutos se sube mediante ftp un txt

Tengo que hacer una web, para que recoga los datos de ese txt, les guarde en mysql y luego lo muestre en la pagina web, y claro que se actualiza cada 10 minutos.

Lo unico que me ha dicho a sido: "Hazlo con un fopen"

Y no tengo ni zorra de como recoger los datos de ese txt y mostarlos en la web.

Alguna idea? Gracias de antemano

elkaoD

¿Para qué guardarlos en MySQL?

Para todo lo demás, www.php.net/fopen aunque como estoy aburrido en el curro, te lo hago. Supongo que las especificaciones no serán así exactamente, pero como te digo me aburro mucho así que me las invento xD

config.php:

$host_mysql = "localhost";
$user_mysql = "ejemplo";
$pass_mysql = "wtf0rzk";
$db_mysql = "texto";
$tabla_mysql = "subidas";

$nombre_archivo = "archivo.txt";

Primero vamos a conectarnos a MySQL para ver cuándo se actualizó por última vez el fichero y si conviene volver a guardarlo:

require ("config.php");

$mysql = mysql_connect($host_mysql, $user_mysql, $pass_mysql)
	or die('Error de conexi&oactue;n: ' . mysql_error()); // Se sigue usando die? En la ref de PHP sale como if (!$mysql)

mysql_select_db($db_mysql, $mysql)
	or die ('Error al seleccionar la BD: ' . mysql_error());

$hace_diez_mins = $time() - 600;

$consulta = "SELECT * FROM $tabla_mysql WHERE fecha > $hace_diez_mins";

$resultado = mysql_query($consulta, $mysql)
	or die('Error recogiendo datos:' . mysql_error()); // Espero que devuelva FALSE sólo si la consulta no es válida

if (!mysql_num_rows($resultado)) // Si no ha seleccionado nada
{

El meollo de la cuestión, aquí se abre el archivo y se lee:

if (!(is_file($nombre_archivo) && is_readable($nombre_archivo)))
	die ('El archivo no existe o no se puede acceder a él');
else {
	$archivo = fopen($nombre_archivo, "r");
	$contenido = fread($archivo, filesize($nombre_archivo));
	$contenido = addslashes($contenido); // SQL Injection a mi?
	fclose($archivo);

echo $contenido;

Ahora, si quieres guardarlo en MySQL:

	$consulta = "INSERT INTO $tabla_mysql (contenido, fecha) VALUES ('$contenido', $time)";

mysql_query($consulta, $mysql)
	or die('Error en la inserción:' . mysql_error());

mysql_close($mysql);
}

Para que quede perfecto, te quedaría hacer con filemtime($nombre_archivo) una comprobación para sólo subir si realmente se ha modificado el archivo después que el último almacenado en la BD.

No prometo que funcione, esta hecho todo a ojo, pero es para que tengas una base de más o menos cómo hacerlo.

Slipk

bua bua bua! muchisimas gracias ahora ya tengo con lo que tirar, te lo agradezco muchisimo!

elkaoD

De todas formas, la próxima vez puedes no haberme pillado aburrido, así que apúntate lo de www.php.net/nombredefuncion que viene bien para ver la referencia.

También poniendo en Google "php fopen leer fichero" te debería haber salido cómo hacerlo xD

Usuarios habituales

  • elkaoD
  • Slipk