Foros del Web » Programando para Internet » PHP »

No mostrar un link si no existe el archivo

Estas en el tema de No mostrar un link si no existe el archivo en el foro de PHP en Foros del Web. Muy buenas a tod@s, He conseguido hacer consultas en una base de datos y mostrarlas en la web de forma ordenada, por fin. Me falta ...
  #1 (permalink)  
Antiguo 23/02/2006, 06:15
 
Fecha de Ingreso: agosto-2005
Mensajes: 77
Antigüedad: 18 años, 8 meses
Puntos: 0
No mostrar un link si no existe el archivo

Muy buenas a tod@s,

He conseguido hacer consultas en una base de datos y mostrarlas en la web de forma ordenada, por fin. Me falta un último detalle que es que cuando no exista cierto archivo, no se muestre el enlace que apunta hacia él, para evitar el link roto que queda fatal. Me explico mejor: para el caso de las imágenes lo he solucionado con javascript:

Código PHP:
$imagen ="<img src='ruta.php?id=$id' onerror=this.src='ruta/nofoto.gif'>"
y para que lo muestre en pantalla:

Código PHP:
echo "<td>$imagen</td>"
Ahora necesito hacer lo mismo pero para un pdf. Pongo un link al pdf, pero no todos los productos tienen un pdf, así que en ciertas consultas sale el link, pero roto. No puedo hacerlo con el evento onerror porque el documento se carga al hacer click, no antes. ¿Sabeis cómo lo puedo hacer?

Una aclaración: los pdf no están en la base de datos, sino almacenados en una carpeta. La forma que tengo de mostrarlos es esta:

Código PHP:
$link_pdf="http://ruta/pdf/".$array['id'].".pdf"

Código PHP:
echo "<tr><th>$pdf</th></tr>"
y cada documento lleva por nombre el id en cuestión. Si le digo que si no existe esa url no muestre el enlace, no me hace caso. Sigue mostrando el enlace, como si la url existiera.
  #2 (permalink)  
Antiguo 23/02/2006, 06:32
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
Bueno... vamos a ver si te puedo ayudar...
yo para listar los documentos de un directorio utilizo el siguiente script (creado por mí)
Código PHP:
<table border="1" bordercolor="000000" cellspacing=0 align="center" width="100%">
<tr><th>Visor de Documentos</th></tr>
<?php 
$host 
$_SERVER['HTTP_HOST']; 
$dirr=opendir('.');
$carpetas = array("1","2");
$i 0;
while (
$file=readdir($dirr)) {
    if (
$file != '..' && $file != '.' && $file != 'index.php' && $file != 'LISTADO INTERNOS.pdf'){
        if (
is_dir($file)) {
            
$carpetas[$i] = $file;
            
$i++;
        }
    }
}

closedir($dirr);
$j=0;
while(
$j $i){
        
$dirr=opendir($carpetas[$j]);
    
//0037B4
        
echo "<tr><td bgcolor='#CCCCCC'><font color='#000000' size='3'><B>".$carpetas[$j]."</B></font></td></tr>";
        while(
false !== ($file readdir($dirr))){
            if (
$file != '..' && $file != '.' && $file != 'index.php' && $file != 'LISTADO INTERNOS CPTCC 20051220.pdf'){
                if (!
is_dir($file)) {
                    echo 
"<tr><td><a href='".$carpetas[$j]."/$file' target='_BLANK'>$file</a></td></tr>";
                }
            }
        }
        
closedir($dirr);
        
$j++;
}
  
function 
size_archivo($file) { 
           
$size filesize($file); 
            
$sizes = Array('Bytes''Kb''Mb''Gb''Tb''Pb''Eb'); 
            
$ext $sizes[0]; 
            for (
$i=1; (($i count($sizes)) && ($size >= 1024)); $i++) { 
              
$size $size 1024
              
$ext  $sizes[$i]; 
           } 
           return 
round($size2)." ".$ext

?> 
</table>
Este script lee el directorio y almacena el nombre de los subdirectorios en un array, para despues recorrerlo, leer y listar el contenido de los mismos...

se me ocurre que podria solamente usar el que te lee el contenido ... osea los archivos ...los guardas en un array .. y despues a la hora de mostrar los link... preguntas si existe el archivo con el nombre id.pdf ( donde ID estaria relacionado con el registro ....) si no existe no mostras ... y si existiera ... lo mostras ...

quizas que en unos minutos llegue CLUSTER y te proponga a tu scritp una funcion que simplemente compruebe el link .. ya que esa seria la forma correcta, este es mi modo. Este script que te muestro yo lo hize para listar el contenido de una carpeta ... en una palabra lo podrias reutilizar. Espero que te ayude ...


hasta luego !!!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #3 (permalink)  
Antiguo 23/02/2006, 07:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. la función para ver si un archivo existe sería:

file_exists()
http://www.php.net/manual/en/function.file-exists.php

La ruta a indicar sería absoluta (no un http:// .. sino /donde/este/archvo.tal). Si necesitas verificar un URL .. puedes ver en la documentación de PHP sobre esa función en los comentarios de los usuarios opciones para verificar un URL (por http:// ....)


Un saludo,
  #4 (permalink)  
Antiguo 23/02/2006, 08:26
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
:( jajajaj bien cluster ... pasa que a veces desconosco las funciones que existen ...

aca el link en español

http://ar2.php.net/manual/es/function.file-exists.php

saludos
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #5 (permalink)  
Antiguo 25/02/2006, 05:51
 
Fecha de Ingreso: agosto-2005
Mensajes: 77
Antigüedad: 18 años, 8 meses
Puntos: 0
Ahora sí. Muchísimas gracias a los dos.
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 12:31.