Retroceder   Foros del Web > Programación para sitios web > PHP

Respuesta
 
Herramientas Desplegado
Antiguo 28-feb-2008, 08:00   #1 (permalink)
jaronu tiene algunos puntos positivos de karma
 
Avatar de jaronu
 
Fecha de Ingreso: febrero-2008
Ubicación: Barcelona España
Mensajes: 1.377
Aporte: Aplicacion de centro de descargas. parte 1

Hola, presento una aplicación optenida de varios scripts de la red, adaptados por mi, Javier Rojas, y con la colaboración de GatorV del foro de php de www.forosdelweb.com, sin su ayuda no hubiera solucionado los problemas que me surgian en la aplicación, Tambien mis agradecimientos a Carlojas, que tambien colaboro con su sabiduria, Y a Okram que puso la guinda final para forzar la descarga de los archivos.

La aplicación consiste en varios scripts, los cuales te permiten:
· Cargar archivos a un directorio de tu web
· Guardar la ruta al directorio y la información que desees del archivo, en una Base de datos, en este caso MySQL
· Listar el contenido de archivos paginados en funcion del numero de resultados
· Y que permite la descarga del archivo.


Empezamos por configurar la tabla de la base de datos, archivo descargas.sql

Descargas.sql

CREATE TABLE `archivos` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(120) NOT NULL,
`description` varchar(250) NOT NULL,
`ruta` varchar(100) NOT NULL,
`tipo` varchar(50) NOT NULL,
`size` int(50) NOT NULL,
PRIMARY KEY (`id`)


Ahora el codigo que procesa la carga de archivos a una carpeta que ya hemos creado en el hosting o en local, con su formulario.



Código PHP:
<?php 
//guardar como subir_archivos.php
//Aplicacion por Javier Rojas de www.tuboolar-web.com con la inestimable ayuda de  GatorV

if (isset($_POST['submit'])) {  
    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
    
    
     
// me verifica haya sido cargado el archivo 
        
$ruta_destino "../cevit/archivos/";
        if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta_destino $_FILES['fichero']['name'])) { // se coloca en su lugar final 
                    
echo "<b>Upload exitoso!. Datos:</b><br>"
            echo 
"Nombre: <i><a href=\"".$ruta_destino $_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>"
            echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
                    echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
                        echo 
"<br><hr><br>"
                        


//conectamos a la base de datos para almacenar los datos y la ruta del archivo

mysql_connect('localhost','Tu_user','Tu_password')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());


 
 
 
 
$nombre_archivo  $_POST["nombre_archivo"];
 
$description  $_POST["description"];


$query "INSERT INTO archivos 
    VALUES (0,'$nombre_archivo','$description' , '"
.$_FILES['fichero']['name']."','".$_FILES['fichero']['type']."', '".$_FILES['fichero']['size']."')";

                
mysql_query($query) or die(mysql_error());
                echo 
"El archivo '".$nombre_archivo."' ha sido registrado de manera satisfactoria.<br />";
                
    


                     
        } 
    } 
 
// A continuación el formulario 
}
?>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'?>" method="post" enctype="multipart/form-data"> 
    Archivo: <input name="fichero" type="file" size="150" maxlength="150"> 
    <br> Nombre: <input name="nombre_archivo" type="text" size="70" maxlength="70">
    <br> Descripcion: <input name="description" type="text" size="100" maxlength="250">
    <br>
  <input name="submit" type="submit" value="Upload!">  
</form> </body>

Última edición por jaronu; 10-jun-2008 a las 06:03.
jaronu está desconectado   Responder Citando
Antiguo 28-feb-2008, 08:03   #2 (permalink)
jaronu tiene algunos puntos positivos de karma
 
Avatar de jaronu
 
Fecha de Ingreso: febrero-2008
Ubicación: Barcelona España
Mensajes: 1.377
Aporte: Aplicacion de centro de descargas. parte 2

Ahora la consulta ala Base de datos para listar los resultados y paginarlos.
Se compone de dos scripts, listar_archivos.php, que muestra en pantalla los datos obtenidos de la base de datos con un link para su descarga, y el otro que se llama paginator.inc.php. PAGINATOR, clase de Jpinedo.
Listado de resultados totalmente personalizable, hasta el numero de resultados por pagina que quieres, colores, etc...




Código PHP:
<?php   
//listar_archivos.php
        
         
$conexion mysql_connect('localhost','tu_user','tu_clave')or die ('Ha fallado la conexión: '.mysql_error());
         
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
 
 
$_pagi_sql "SELECT   id, name, description, ruta, tipo, size FROM archivos";  
$_pagi_result mysql_query($_pagi_sql $conexion) or die ( mysql_error() );  
 

  
    
//Sentencia sql (sin limit)
//$_pagi_sql = mysql_result($res);

//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 2;//Elegí un número pequeño para que se generen varias páginas

//cantidad de enlaces que se mostrarán como máximo en la barra de navegación
$_pagi_nav_num_enlaces 3;//Elegí un número pequeño para que se note el resultado

//Decidimos si queremos que se muesten los errores de mysql
$_pagi_mostrar_errores false;//recomendado true sólo en tiempo de desarrollo.

//Si tenemos una consulta compleja que hace que el Paginator no funcione correctamente, 
//realizamos el conteo alternativo.
$_pagi_conteo_alternativo true;//recomendado false.

//Supongamos que sólo nos interesa propagar estas dos variables
$_pagi_propagar = array("id","termino");//No importa si son POST o GET

//Definimos qué estilo CSS se utilizará para los enlaces de paginación.
//El estilo debe estar definido previamente
$_pagi_nav_estilo "paginacion";

//definimos qué irá en el enlace a la página anterior
$_pagi_nav_anterior "&lt;";// podría ir un tag <img> o lo que sea

//definimos qué irá en el enlace a la página siguiente
$_pagi_nav_siguiente "&gt;";// podría ir un tag <img> o lo que sea

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

//Leemos y escribimos los registros de la página actual
while($row mysql_fetch_array($_pagi_result)){

echo 
"<table width=70%><tr bgcolor= #61e877><div align=center>";

echo 
"<b>Titulo: </b>";
echo 
$row[name];
echo 
"</div></tr>";
echo
"<tr>&nbsp;</tr>";
echo 
"<tr bgcolor= #cccccc><b> &nbsp;&nbsp;&nbsp;Descripcion: </b><br>";

echo 
$row[description];
echo 
"</tr>";

echo
"<tr bgcolor= #cccccc >&nbsp;</tr>";
echo 
"<tr bgcolor= #cccccc><b> &nbsp;&nbsp;&nbsp;Tamaño: </b>";
echo 
$row[size]." Bytes";
 
echo 
"</tr>";


echo
"<tr bgcolor= #cccccc>&nbsp;</tr>";
echo 
"<tr bgcolor= #cccccc><div align=center><a href=\"descargar.php?ruta=archivos/$row[ruta]\">Descargar</a></div>"
echo 
"</tr>";
echo
"<tr bgcolor= #cccccc>&nbsp;</tr>";

echo 
"</table>" ;

}

echo 
"<table width=50%><tr bgcolor= #61e877><div align=center>";
//Incluimos la barra de navegación

echo"<p>".$_pagi_navegacion."</p>";
echo 
"</div></tr>";
echo
"<tr>&nbsp;</tr>";
//Incluimos la información de la página actual

echo"<tr><div align=center><p>Resultados ".$_pagi_info."</p></div>";
echo 
"</tr>";    
echo 
"</table>" ;    
    
        
  
?>

Última edición por jaronu; 23-mar-2008 a las 15:52. Razón: perfeccionar la aplicacion
jaronu está desconectado   Responder Citando
Antiguo 28-feb-2008, 08:04   #3 (permalink)
jaronu tiene algunos puntos positivos de karma
 
Avatar de jaronu
 
Fecha de Ingreso: febrero-2008
Ubicación: Barcelona España
Mensajes: 1.377
Aporte: Aplicacion de centro de descargas. parte 3

Código PHP:
y ahora el archivo paginator.inc.php que viene en el incluye del script anterior.
En dos partes estar pendiente de la sintaxis al copiar y pegar

<?
//paginator.inc.php
Variables que se pueden definir antes de incluir el script vía include():
 * ------------------------------------------------------------------------
 * 
$_pagi_sql                     OBLIGATORIA.    CadenaDebe contener una sentencia sql válida (y sin la cláusula "limit").
 
 * 
$_pagi_cuantos                OPCIONAL.        EnteroCantidad de registros que contendrá como máximo cada página.
                                
Por defecto está en 20.
                                            
 
$_pagi_nav_num_enlaces        OPCIONAL        EnteroCantidad de enlaces a los números de página que se mostrarán como 
                                máximo en la barra de navegación
.
                                
Por defecto se muestran todos.
                                            
 * 
$_pagi_mostrar_errores        OPCIONAL        BooleanoDefine si se muestran o no los errores de MySQL que se puedan producir.
                                 
Por defecto está en "true";
                                            
 * 
$_pagi_propagar                OPCIONAL        Array de cadenasContiene los nombres de las variables que se quiere propagar
                                por el url
Por defecto se propagarán todas las que ya vengan por el url (GET).
 * 
$_pagi_conteo_alternativo    OPCIONAL        BooleanoDefine si se utiliza mysql_num_rows() (trueo COUNT(*) (false).
                                
Por defecto está en false.
 * 
$_pagi_separador                OPCIONAL        CadenaCadena que separa los enlaces numéricos en la barra de navegación entre páginas.
                                 
Por defecto se utiliza la cadena " | ".
 * 
$_pagi_nav_estilo            OPCIONAL        CadenaContiene el nombre del estilo CSS para los enlaces de paginación.
                                 
Por defecto no se especifica estilo.
 * 
$_pagi_nav_anterior            OPCIONAL        CadenaContiene lo que debe ir en el enlace a la página anteriorPuede ser un tag <img>.
                                 
Por defecto se utiliza la cadena "&laquo; Anterior".
 * 
$_pagi_nav_siguiente            OPCIONAL        CadenaContiene lo que debe ir en el enlace a la página siguientePuede ser un tag <img>.
                                 
Por defecto se utiliza la cadena "Siguiente &raquo;"
 
$_pagi_nav_primera            OPCIONAL        CadenaContiene lo que debe ir en el enlace a la primera páginaPuede ser un tag <img>.
                                 
Por defecto se utiliza la cadena "&laquo;&laquo; Primera".
 * 
$_pagi_nav_ultima            OPCIONAL        CadenaContiene lo que debe ir en el enlace a la página siguientePuede ser un tag <img>.
                                 
Por defecto se utiliza la cadena "&Uacute;ltima &raquo;&raquo;"
--------------------------------------------------------------------------
*/


/*
 * Verificación de los parámetros obligatorios y opcionales.
 *------------------------------------------------------------------------
 */
 
 
 
 
if(empty($_pagi_sql)){
    
// Si no se definió $_pagi_sql... grave error!
    // Este error se muestra sí o sí (ya que no es un error de mysql)
    
die("<b>Error Paginator : </b>No se ha definido la variable \$_pagi_sql");
 }
 
 if(empty(
$_pagi_cuantos)){
    
// Si no se ha especificado la cantidad de registros por página
    // $_pagi_cuantos será por defecto 20
    
$_pagi_cuantos 20;
 }
 
 if(!isset(
$_pagi_mostrar_errores)){
    
// Si no se ha elegido si se mostrará o no errores
    // $_pagi_errores será por defecto true. (se muestran los errores)
    
$_pagi_mostrar_errores true;
 }

 if(!isset(
$_pagi_conteo_alternativo)){
    
// Si no se ha elegido el tipo de conteo
    // Se realiza el conteo dese mySQL con COUNT(*)
    
$_pagi_conteo_alternativo false;
 }
 
 if(!isset(
$_pagi_separador)){
    
// Si no se ha elegido un separador
    // Se toma el separador por defecto.
    
$_pagi_separador " ][ ";
 }
 
  if(isset(
$_pagi_nav_estilo)){
    
// Si se ha definido un estilo para los enlaces, se genera el atributo "class" para el enlace
    
$_pagi_nav_estilo_mod "class=\"$_pagi_nav_estilo\"";
 }else{
     
// Si no, se utiliza una cadena vacía.
     
$_pagi_nav_estilo_mod "";
 }
 
 if(!isset(
$_pagi_nav_anterior)){
    
// Si no se ha elegido una cadena para el enlace "siguiente"
    // Se toma la cadena por defecto.
    
$_pagi_nav_anterior "&laquo; [Anterior]";
 } 
 
 if(!isset(
$_pagi_nav_siguiente)){
    
// Si no se ha elegido una cadena para el enlace "siguiente"
    // Se toma la cadena por defecto.
    
$_pagi_nav_siguiente "[Siguiente] ;";
 } 

 if(!isset(
$_pagi_nav_primera)){
    
// Si no se ha elegido una cadena para el enlace "primera"
    // Se toma la cadena por defecto.
    
$_pagi_nav_primera "&laquo;&laquo; Primera";
 } 
 
 if(!isset(
$_pagi_nav_ultima)){
    
// Si no se ha elegido una cadena para el enlace "siguiente"
    // Se toma la cadena por defecto.
    
$_pagi_nav_ultima "&Uacute;ltima ] ";
 } 
 
//------------------------------------------------------------------------


/*
 * Establecimiento de la página actual.
 *------------------------------------------------------------------------
 */
 
if (empty($_GET['_pagi_pg'])){
jaronu está desconectado   Responder Citando
Antiguo 28-feb-2008, 08:06   #4 (permalink)
Colaborador
okram llegará a ser famoso muy prontookram llegará a ser famoso muy prontookram llegará a ser famoso muy prontookram llegará a ser famoso muy pronto
 
Avatar de okram
 
Fecha de Ingreso: abril-2005
Ubicación: Arequipa - Perú
Mensajes: 1.810
Re: Aporte: Aplicacion de centro de descargas. parte 1

Wow! Ahora sí que llueven los aportes en este foro

Gracias por compartir!

EDITO: Creo que mi mensaje estuvo un poco fuera de lugar (me precipité), hay una última parte de este tuto en el siguiente mensaje
__________________
- Facultad de Medicina UNSA - 4to Año » Ginecología & Farmacología
PHPeru.net - Blog

Última edición por okram; 28-feb-2008 a las 08:20.
okram está desconectado   Responder Citando
Antiguo 28-feb-2008, 08:06   #5 (permalink)
jaronu tiene algunos puntos positivos de karma
 
Avatar de jaronu
 
Fecha de Ingreso: febrero-2008
Ubicación: Barcelona España
Mensajes: 1.377
Aporte: Aplicacion de centro de descargas. parte 4

Código PHP:
// Si no se ha hecho click a ninguna página específica
    // O sea si es la primera vez que se ejecuta el script
        // $_pagi_actual es la pagina actual-->será por defecto la primera.
    
$_pagi_actual 1;
 }else{
    
// Si se "pidió" una página específica:
    // La página actual será la que se pidió.
        
$_pagi_actual $_GET['_pagi_pg'];
 }
//------------------------------------------------------------------------


/*
 * Establecimiento del número de páginas y del total de registros.
 *------------------------------------------------------------------------
 */
 // Contamos el total de registros en la BD (para saber cuántas páginas serán)
 // La forma de hacer ese conteo dependerá de la variable $_pagi_conteo_alternativo
 
if($_pagi_conteo_alternativo == false){
     
$_pagi_sqlConta eregi_replace("select[[:space:]](.*)[[:space:]]from""SELECT COUNT(*) FROM"$_pagi_sql);
     
$_pagi_result2 mysql_query($_pagi_sqlConta);
    
// Si ocurrió error y mostrar errores está activado
     
if($_pagi_result2 == false && $_pagi_mostrar_errores == true){
        die (
" Error en la consulta de conteo de registros: $_pagi_sqlConta. Mysql dijo: <b>".mysql_error()."</b>");
     }
     
$_pagi_totalReg mysql_result($_pagi_result2,0,0);//total de registros
 
}else{
    
$_pagi_result3 mysql_query($_pagi_sql);
    
// Si ocurrió error y mostrar errores está activado
     
if($_pagi_result3 == false && $_pagi_mostrar_errores == true){
        die (
" Error en la consulta de conteo alternativo de registros: $_pagi_sql. Mysql dijo: <b>".mysql_error()."</b>");
     }
    
$_pagi_totalReg mysql_num_rows($_pagi_result3);
 }
 
// Calculamos el número de páginas (saldrá un decimal)
 // con ceil() redondeamos y $_pagi_totalPags será el número total (entero) de páginas que tendremos
 
$_pagi_totalPags ceil($_pagi_totalReg $_pagi_cuantos);

//------------------------------------------------------------------------


/*
 * Propagación de variables por el URL.
 *------------------------------------------------------------------------
 */
 // La idea es pasar también en los enlaces las variables hayan llegado por url.
 
$_pagi_enlace $_SERVER['PHP_SELF'];
 
$_pagi_query_string "?";
 
 if(!isset(
$_pagi_propagar)){
     
//Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
    //Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
    
if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
    
$_pagi_propagar array_keys($_GET);
 }elseif(!
is_array($_pagi_propagar)){
    
// si $_pagi_propagar no es un array... grave error!
    
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
 }
 
// Este foreach está tomado de la Clase Paginado de webstudio
 // (http://www.forosdelweb.com/showthread.php?t=65528)
 
foreach($_pagi_propagar as $var){
     if(isset(
$GLOBALS[$var])){
        
// Si la variable es global al script
        
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
    }elseif(isset(
$_REQUEST[$var])){
        
// Si no es global (o register globals está en OFF)
        
$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
    }
 }

 
// Añadimos el query string a la url.
 
$_pagi_enlace .= $_pagi_query_string;
 
//------------------------------------------------------------------------


/*
 * Generación de los enlaces de paginación.
 *------------------------------------------------------------------------
 */
 // La variable $_pagi_navegacion contendrá los enlaces a las páginas.
 
$_pagi_navegacion_temporal = array();
 if (
$_pagi_actual != 1){
    
// Si no estamos en la página 1. Ponemos el enlace "primera"
    
$_pagi_url 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_primera</a>";

    
// Si no estamos en la página 1. Ponemos el enlace "anterior"
    
$_pagi_url $_pagi_actual 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_anterior</a>";
 }
 
 
// La variable $_pagi_nav_num_enlaces sirve para definir cuántos enlaces con 
 // números de página se mostrarán como máximo.
 // Ojo: siempre se mostrará un número impar de enlaces. Más info en la documentación.
 
 
if(!isset($_pagi_nav_num_enlaces)){
    
// Si no se definió la variable $_pagi_nav_num_enlaces
    // Se asume que se mostrarán todos los números de página en los enlaces.
    
$_pagi_nav_desde 1;//Desde la primera
    
$_pagi_nav_hasta $_pagi_totalPags;//hasta la última
 
}else{
    
// Si se definió la variable $_pagi_nav_num_enlaces
    // Calculamos el intervalo para restar y sumar a partir de la página actual
    
$_pagi_nav_intervalo ceil($_pagi_nav_num_enlaces/2) - 1;
    
    
// Calculamos desde qué número de página se mostrará
    
$_pagi_nav_desde $_pagi_actual $_pagi_nav_intervalo;
    
// Calculamos hasta qué número de página se mostrará
    
$_pagi_nav_hasta $_pagi_actual $_pagi_nav_intervalo;
    
    
// Ajustamos los valores anteriores en caso sean resultados no válidos
    
    // Si $_pagi_nav_desde es un número negativo
    
if($_pagi_nav_desde 1){
        
// Le sumamos la cantidad sobrante al final para mantener el número de enlaces que se quiere mostrar. 
        
$_pagi_nav_hasta -= ($_pagi_nav_desde 1);
        
// Establecemos $_pagi_nav_desde como 1.
        
$_pagi_nav_desde 1;
    }
    
// Si $_pagi_nav_hasta es un número mayor que el total de páginas
    
if($_pagi_nav_hasta $_pagi_totalPags){
        
// Le restamos la cantidad excedida al comienzo para mantener el número de enlaces que se quiere mostrar.
        
$_pagi_nav_desde -= ($_pagi_nav_hasta $_pagi_totalPags);
        
// Establecemos $_pagi_nav_hasta como el total de páginas.
        
$_pagi_nav_hasta $_pagi_totalPags;
        
// Hacemos el último ajuste verificando que al cambiar $_pagi_nav_desde no haya quedado con un valor no válido.
        
if($_pagi_nav_desde 1){
            
$_pagi_nav_desde 1;
        }
    }
 }

 for (
$_pagi_i $_pagi_nav_desde$_pagi_i<=$_pagi_nav_hasta$_pagi_i++){//Desde página 1 hasta última página ($_pagi_totalPags)
    
if ($_pagi_i == $_pagi_actual) {
        
// Si el número de página es la actual ($_pagi_actual). Se escribe el número, pero sin enlace y en negrita.
        
$_pagi_navegacion_temporal[] = "<span ".$_pagi_nav_estilo_mod.">$_pagi_i</span>";
    }else{
        
// Si es cualquier otro. Se escibe el enlace a dicho número de página.
        
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_i."'>".$_pagi_i."</a>";
    }
 }

 if (
$_pagi_actual $_pagi_totalPags){
    
// Si no estamos en la última página. Ponemos el enlace "Siguiente"
    
$_pagi_url $_pagi_actual 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_siguiente</a>";

    
// Si no estamos en la última página. Ponemos el enlace "Última"
    
$_pagi_url $_pagi_totalPags//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_ultima</a>";
 }
 
$_pagi_navegacion implode($_pagi_separador$_pagi_navegacion_temporal);

//------------------------------------------------------------------------


/*
 * Obtención de los registros que se mostrarán en la página actual.
 *------------------------------------------------------------------------
 */
 // Calculamos desde qué registro se mostrará en esta página
 // Recordemos que el conteo empieza desde CERO.
 
$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;
 
 
// Consulta SQL. Devuelve $cantidad registros empezando desde $_pagi_inicial
 
$_pagi_sqlLim $_pagi_sql." LIMIT $_pagi_inicial,$_pagi_cuantos";
 
$_pagi_result mysql_query($_pagi_sqlLim);
 
// Si ocurrió error y mostrar errores está activado
 
if($_pagi_result == false && $_pagi_mostrar_errores == true){
     die (
"Error en la consulta limitada: $_pagi_sqlLim. Mysql dijo: <b>".mysql_error()."</b>");
 }

//------------------------------------------------------------------------


/*
 * Generación de la información sobre los registros mostrados.
 *------------------------------------------------------------------------
 */
 // Número del primer registro de la página actual
 
$_pagi_desde $_pagi_inicial 1;
 
 
// Número del último registro de la página actual
 
$_pagi_hasta $_pagi_inicial $_pagi_cuantos;
 if(
$_pagi_hasta $_pagi_totalReg){
     
// Si estamos en la última página
    // El ultimo registro de la página actual será igual al número de registros.
     
$_pagi_hasta $_pagi_totalReg;
 }
 
 
$_pagi_info "del <b>$_pagi_desde</b> al <b>$_pagi_hasta</b> de <b>$_pagi_totalReg</b>";

//------------------------------------------------------------------------


/**
 * Variables que quedan disponibles después de incluir el script vía include():
 * ------------------------------------------------------------------------
 
 * $_pagi_result        Identificador del resultado de la consulta a la BD para los registros de la página actual. 
                 Listo para ser "pasado" por una función como mysql_fetch_row(), mysql_fetch_array(), 
                mysql_fetch_assoc(), etc.
                            
 * $_pagi_navegacion        Cadena que contiene la barra de navegación con los enlaces a las diferentes páginas.
                 Ejemplo: "<<primera | <anterior | 1 | 2 | 3 | 4 | siguiente> | última>>".
                            
 * $_pagi_info            Cadena que contiene información sobre los registros de la página actual.
                 Ejemplo: "desde el 16 hasta el 30 de un total de 123";                

*/
?> 
jaronu está desconectado   Responder Citando
Antiguo 28-feb-2008, 08:07   #6 (permalink)
jaronu tiene algunos puntos positivos de karma
 
Avatar de jaronu
 
Fecha de Ingreso: febrero-2008
Ubicación: Barcelona España
Mensajes: 1.377
Aporte: Aplicacion de centro de descargas. parte 5 ultima

Y ahora el archivo que procesa la desgarga del archivo llamalo descargar.php

Código PHP:
<?php $ruta $_GET['ruta'];
$archivo_arr explode"/"$ruta );
$archivo $archivo_arr[count($archivo_arr) - 1];

if( !
file_exists$ruta ) ) {
         die( 
"No existe $ruta" );
}

header"Content-Disposition: attachment; filename=".$archivo."");
header"Content-type: application/octet-stream" ); 

@
readfile$ruta );  
?>
Y con esto creo que ya esta. Espero que os funcione a mi me va muy bien.
Un Saludo a todos.
Y visitar http://www.tuboolar-web.com

NOTA. Para subir archivos grandes has de cambiar algunos parámetros de tu php.ini
Si trabajas en local y si no habras de ponerte en contacto con tu hosting para que te lo cambien ellos.
Estos son los parámetros a cambiar:

file_uploads = On // en On

max_execution_time = 500 // los segundos que consideren

max_input_time = 500// los segundos que consideren

memory_limit = 50M // por lo regular el mismo tamaño del archivo a subir o quizas mas

upload_tmp_dir = /xyz // su directorio temporal con permisos de R/W

post_max_size = 50M // el tamaño maximo de su archivo a subir

upload_max_filesize = 50M // el tamaño maximo de su archivo a subir

Última edición por jaronu; 28-feb-2008 a las 09:41.
jaronu está desconectado   Responder Citando
Antiguo 23-mar-2008, 15:38   #7 (permalink)
pato12 está en el buen camino
 
Avatar de pato12
 
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 505
Re: Aporte: Aplicacion de c