Foros del Web » Programando para Internet » PHP »

Descargas PHP y MySQL

Estas en el tema de Descargas PHP y MySQL en el foro de PHP en Foros del Web. Hola Webmasters!!! Tengo una dificultad que espero me puedan ayudar. Quiero hacer un sistema de descargas con PHP y MySQL, no necesito algo muy complicado ...
  #1 (permalink)  
Antiguo 13/01/2006, 13:42
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 208
Antigüedad: 19 años, 1 mes
Puntos: 1
Exclamación Descargas PHP y MySQL

Hola Webmasters!!!

Tengo una dificultad que espero me puedan ayudar.

Quiero hacer un sistema de descargas con PHP y MySQL, no necesito algo muy complicado solo que la base de datos tenga digamos el numero de la descarga y el URL y por medio de un codigo PHP hacer la conexión y descargar el archivo.

Tengo mi base de datos hecha asi:

CREATE TABLE `descargas` (
`id` int(7) NOT NULL auto_increment,
`descargas_nombre` varchar(100) NOT NULL default '',
`descargas_url(100) NOT NULL default '', KEY `id` (`id`),
) TYPE=MyISAM AUTO_INCREMENT=1 ;

He visto codigos que hacen la consulta a la BD y me muestran el contenido clasificado y cuenta el numero de descargas para luego ir a una pagina de confirmacion de descarga y de ahi descargar, lo cual se me hace muy engorroso ya que logro consultar las descargas en la BD pero no me redirecciona a descargar el archivo, simplemente se va en blanco y no hace nada y ahora simplemente quiero que asi como esta sin más ni más el codigo PHP haga la consulta y descargue el archivo desde la direccion que en la BD se muestra, el problema es que no soy avanzado en esto y no sabria como va el codigo para que esto se haga .

Mi pregunta es ¿se puede hacer esto? ¿como se podria hacer? ¿me pueden ustedes ayudar?

De antemano muchas gracias.
  #2 (permalink)  
Antiguo 13/01/2006, 13:47
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
puedes usar la función header() para redireccionar directamente al archivo que quieres descargar:

header("Location: $nombre_del_archivo");

donde $nombre_del_archivo contiene la ruta al archivo de descarga, relativo a la raíz del sitio.

Así como tienes la bd, creo que esta es tu mejor opción.
También podrías cargar el archivo en una variable, y modificar las cabeceras para que correspondan al tipo de archivo, pero me parece que la forma más simple es la que puse antes.


Saludos.
  #3 (permalink)  
Antiguo 13/01/2006, 13:47
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
Si se puede, muestra el codigo php que hasta ahora llevas.
  #4 (permalink)  
Antiguo 13/01/2006, 13:58
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 208
Antigüedad: 19 años, 1 mes
Puntos: 1
Exclamación

Perdonarán mi ignorancia en este tema, estoy aprendiendo aun.

Gracias por su respuesta, pero hay algo que no entiendo en la primera respuesta el $nombre de archivo ¿donde lo tengo que poner o como lo manejo?

Y con la seguna respuesta pues aqui dejo los codigos que tengo pero como les mencionaba, siento que es demasiado para lo que quiero hacer:

Primero el archivo que me muestra el contenido de la BD (descargas.php) en el cual todo funciona bien:

<?
$conn = mysql_connect("------","--------","------------");
mysql_select_db("-------------",$conn);
if(!$_GET[id]){
$consult = mysql_query("SELECT * FROM `descargas` ORDER BY `id`");
while($Row = mysql_fetch_array($consult)) {
echo "<a href=\"descargas.php?id=".$Row[id]."\">".$Row[descargas_nombre]."</a><br />";
echo "".$Row[descargas_nombre]."<br />";
echo "<b>".$Row[id]."</b> descargas";
echo "<br /><br />";
}
}
$sql = mysql_query("SELECT * FROM `descargas` WHERE id='$id'");
while($Row = mysql_fetch_array($sql)) {
echo "".$Row[descargas_nombre]."<br />";
echo "<a href=\"desc.php?id=".$Row[id]."\">Descargar</a>";
echo "<br />";
}
?>





Y este archivo hace links hacia el otro que supuestamente me descargara el archivo (desc.php):

<?php
$sql = "SELECT * FROM `descargas` WHERE `id`='$id'";
$resp = mysql_query($sql);
$suma = mysql_query("select * from `descargas` where `id` like '$id'");
$upd=mysql_fetch_array($suma);
$desc=$upd["desc"];
$desc++;
$update=mysql_query("Update `descargas` Set `desc`='$desc' Where `id`='$id'");

while ($row = mysql_fetch_array($resp)) {
$desc = $row["descargas_url"];
$titulo = $row["descargas_nombre"];
}
?>
<html>
<head>
<meta http-equiv="refresh" content="1;URL=<?php echo "$desc" ;?>">
</head>
<body>
<font color="#990000"><b><?=$titulo?></b></font><br />
<font color="#000000">Estás descargando <?=$titulo?>.<br />
En ocasión de que no abrá la descarga <a href="<?=$desc?>">Haz Clíck Aquí </a>
<br /><br />

Que disfrutes de la descarga!</font>
</body>
</html>




Y pues ya de aqui no descarga bada, solo se va en blanco y no baja nada de nada.



Gracias por su ayuda.
  #5 (permalink)  
Antiguo 13/01/2006, 14:01
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
Y si quitas esto: <meta http-equiv="refresh" content="1;URL=<?php echo "$desc" ;?>">
Pruébalo.
  #6 (permalink)  
Antiguo 13/01/2006, 14:18
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 208
Antigüedad: 19 años, 1 mes
Puntos: 1
De acuerdo Funcionaa!!!

Ok, funciona perfecto con la solucion que me has dado, pero tengo una duda más.

¿ se puede hacer que desde el primer click simplemente se descargue el archivo? sin pasar a otra página y a otra y confirmar y toso eso?

Gracias de nuevo
  #7 (permalink)  
Antiguo 13/01/2006, 18:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
se puede con lo que te escribí antes, manejando las cabeceras luego de seleccionar el archivo que quieres bajar.

lo que puse como $nombre_de_archivo es lo que tu pones como $desc.

y no olvides un exit; luego del header()


Saludos.
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 19:08.