Foros del Web » Programando para Internet » PHP »

problema con script de php + mysql

Estas en el tema de problema con script de php + mysql en el foro de PHP en Foros del Web. necesito meter un script para subir fotos a una base de datos para una pagina que estoy haciendo, he estado navegando por internet y e ...
  #1 (permalink)  
Antiguo 24/02/2010, 09:04
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 15 años
Puntos: 1
problema con script de php + mysql

necesito meter un script para subir fotos a una base de datos para una pagina que estoy haciendo, he estado navegando por internet y e probado varios scripts pero ninguno me funciona ahora con este que os voy a poner aqui tampoco me funciona me da varios errores.. pongo el codigo haber si me podeis ayudar:


base de datos:

-- Servidor: localhost
-- Tiempo de generación: 24-02-2010 a las 16:03:00
-- Versión del servidor: 5.1.33
-- Versión de PHP: 5.2.9-2

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de datos: `fotos`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `fotos.foto_foto`
--

CREATE TABLE IF NOT EXISTS `fotos.foto_foto` (
`idfoto` int(11) NOT NULL AUTO_INCREMENT,
`foto_grande` mediumblob NOT NULL,
`foto_pequena` mediumblob NOT NULL,
PRIMARY KEY (`idfoto`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

datos.php:

Código PHP:
<?php
    $servidor
="localhost";
    
$nombre="root";
    
$clave="contraseña";
    
?>

index.php:
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php

	echo '<font size="1">';
	echo '<center>';
	echo'<form enctype="multipart/form-data" action="guardar_archivos.php" method="post">';
	echo 'Foto<br><input type="file" name="foto">';
	echo '<br><br>';
	echo 'Thum.<br><input type="file" name="thumbail"><br><br>';
	echo '<input type=hidden name=max_file_size value=1000000>';
	echo '<input type="submit" value="Enviar archivo">';
	echo '</form>';
	echo '<br><br><a href=descargar_archivo2.php>Ver album</a>';



        ?>
    </body>
</html>
guardar_archivos.php:
Código PHP:
<?php

    
require ("datos.php");
    echo 
'<center><font size=1>';
    
$conexion=@mysql_connect($servidor,$nombre,$clave);
    
$res=mysql_select_db("fotos",$conexion);
    if ( 
$conexion )
    {

        
$archivo $_FILES["foto"]["tmp_name"];
         
$tamanio $_FILES["foto"]["size"];
         
$tipo    $_FILES["foto"]["type"];
         
$nombre  $_FILES["foto"]["name"];
         
$archivo_thumb $_FILES["thumbail"]["tmp_name"];
         
$tamanio_thumb $_FILES["thumbail"]["size"];
         
$tipo_thumb    $_FILES["thumbail"]["type"];
         
$nombre_thumb  $_FILES["thumbail"]["name"];
         if ( 
$archivo != "none" && $archivo_thumb!="none")
         {
             
$fp fopen($archivo"rb");
                
$contenido fread($fp,$tamanio);
                
$contenido addslashes($contenido);
                
fclose($fp);
               
$fp_thumb fopen($archivo_thumb,"rb");
                
$contenido_thumb fread($fp_thumb,$tamanio_thumb);
                
$contenido_thumb addslashes($contenido_thumb);
               
fclose($fp_thumb);
                
$query "INSERT INTO fotos.foto_foto VALUES(null,'".$contenido."','".$contenido_thumb."')";
                
mysql_query($query);
                if(
mysql_affected_rows($conexion) > 0)print "Se ha guardado el archivo en la base de datos.";
                else print 
"NO se ha podido guardar el archivo en la base de datos.";
         }
         else print 
"No se ha podido subir el archivo al servidor";
    }else{
        echo 
'No conectado';
    }
    
//echo "<HTML><SCRIPT>document.location='index.php';</SCRIPT></HTML>"; 
?>


foto_grande.php
Código PHP:
<?php
    
require("datos.php");
    
$conexion=@mysql_connect($servidor,$nombre,$clave);
    
$res=mysql_select_db("fotos",$conexion);
    
$qry "SELECT foto_grande FROM fotos.foto_foto where idfoto='".$_GET["idfoto"]."'";
    
$res2 mysql_query($qry);
    
$foto=basename(tempnam(getcwd(),'tmp'));
    
$foto.=".jpg";
    
$contenido2=mysql_result($res2,0,0);
    
$ft=fopen($foto,"w");
    
fwrite($ft,$contenido2);
    
fclose($ft);
    echo 
'<center><img src='.$foto.'>   <br><br>';
    echo 
'<font size=1><a href=descargar_archivo2.php>Volver al album</a>';
    
?>


descargar_archivo.php:

Código PHP:
<?php
    
require ("datos.php");
    
$conexion=@mysql_connect($servidor,$nombre,$clave);
    
$res=mysql_select_db("fotos",$conexion);

    
$qry "SELECT idfoto,foto_pequena FROM fotos.foto_foto";
    
$res2 mysql_query($qry);
    for (
$j=0;$j mysql_num_rows($res2);$j++)
    for (
$i=0;$i mysql_num_fields($res2);$i++)
    {
        
$foto=basename(tempnam(getcwd(),'tmp'));
        
$foto.=".jpg";
        if (
$i==1)
        {
            
$contenido2=mysql_result($res2,$j,$i);
            
$ft=fopen($foto,"w");
            
fwrite($ft,$contenido2);
            
fclose($ft);
            echo 
'<a href=fotogrande.php?idfoto='.mysql_result($res2,$j,0).'><img src='.$foto.'>   ';
            echo 
'';
        }
    }
    echo 
'<br><br><font size=1><center><a href=form.php>Insertar nuevas fotos</a>';
    
?>




El fallo es que no me consigue guardar las imagenes en la base de datos
  #2 (permalink)  
Antiguo 24/02/2010, 09:07
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con script de php + mysql

Eso de guardar las imágenes en la base de datos es un error gordísimo. Yo no le veo más utilidad que saturar la bd con información inútil.
Lo mejor es subir el fichero a un directorio del servidor y en la base de datos guardar su ruta. Además, el código son dos líneas y optimizas no sólo la bd sino el script.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #3 (permalink)  
Antiguo 24/02/2010, 09:10
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 15 años
Puntos: 1
Respuesta: problema con script de php + mysql

ok.. y como se hace lo que tu me recomiendas...es ke la web que estoy haciendo es sobre un estudio de tatuajes...en la que hay 3 galerias.

una tatuajes ,otra fotos del estudio y la 3º fotos de dibujos del tatuador.......como puedo hacer una galeria presentable (supongo que con javascript) y que sea facil de actualizar por mi amigo(ke no entiende nada de programacion ni de diseño web) (yo tampoco se mucho de programacion por ahora ;) )...
  #4 (permalink)  
Antiguo 24/02/2010, 09:21
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con script de php + mysql

Pues de la misma forma en que estás pensando, pero guardando una ruta y no la imagen entera.
Para subir una foto, el form debe ser algo aśi:
Código HTML:
Ver original
  1. <form action="subir.php" method="POST" enctype="multipart/form-data">
  2. <input type="file" name="campo">
  3. </form>
En subir.php detectas así:

Código PHP:
Ver original
  1. if(isset($_FILES['campo'])) {
  2.  
  3.    $fichero=$_FILES['campo']['name'];
  4.    $temporal=$_FILES['campo']['tmp_name'];
  5.    $tamano=$_FILES['campo']['size'];
  6.  
  7.  
  8. move_uploaded_file($temporal, $fichero) ;
  9. }

No es tal cual, es una idea. La función de mover el fichero a un directorio y las propiedades. Encontrarás más buscando por $_FILES
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #5 (permalink)  
Antiguo 24/02/2010, 16:18
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 15 años
Puntos: 1
Respuesta: problema con script de php + mysql

estoy usando estre script que he encontrado en la red pero no me funciona

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>

<form name="enviador" method="post" action="ftp_upload.php" enctype="multipart/form-data">
<input  name="name">
Archivo: <input type="file" name="archivo">
<input type="submit">
</form>

</body>
</html>

ftp_upload.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
Código PHP:
<?php
    
// Primero creamos un ID de conexión a nuestro servidor
    
$cid ftp_connect("www.tanato.site11.com");
    
// Luego creamos un login al mismo con nuestro usuario y contraseña
    
$resultado ftp_login($cid"usuario","contraseña");
    
// Comprobamos que se creo el Id de conexión y se pudo hacer el login
    
if ((!$cid) || (!$resultado)) {
        echo 
"Fallo en la conexión"; die;
    } else {
        echo 
"Conectado.";
    }
    
// Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al 
    //servidor que seremos nosotros quienes comenzaremos la transmisión de datos.
    
ftp_pasv ($cidtrue) ;
    echo 
"<br> Cambio a modo pasivo<br />";
    
// Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz
    // esta por demás decir que este paso no es necesario. En mi caso uso un directorio llamado boca
    
ftp_chdir($cid"public_html/imagenes");
    echo 
"Cambiado al directorio necesario";   
    
// Tomamos el nombre del archivo a transmitir, pero en lugar de usar $_POST, usamos $_FILES que le indica a PHP
    // Que estamos transmitiendo un archivo, esto es en realidad un matriz, el segundo argumento de la matriz, indica
    // el nombre del archivo
    
$local $_FILES["archivo"]["name"];
    
// Este es el nombre temporal del archivo mientras dura la transmisión
    
$remoto $_FILES["archivo"]["tmp_name"];
    
// El tamaño del archivo
    
$tama $_FILES["archivo"]["size"];
    echo 
"<br />$local<br />";
    echo 
"$remoto<br />";
    echo 
"subiendo el archivo...<br />";
    
// Juntamos la ruta del servidor con el nombre real del archivo
    
$ruta "www.tanato.site11.com/public_html/imagenes/" $local;
    
// Verificamos si no hemos excedido el tamaño del archivo
    
        // Verificamos si ya se subio el archivo temporal
        
if (is_uploaded_file($remoto)){
            
// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
            
copy($remoto$ruta);        
        }
        
// Sino se pudo subir el temporal
        
else {
            echo 
"no se pudo subir el archivo " $local;
        }

    echo 
"Ruta: " $ruta;
    
//cerramos la conexión FTP
    
ftp_close($cid);
?>
</body>
</html>

El error que me da es este:

Warning: copy(http://www.tanato.site11.com/public_...nes/marta1.jpg) [function.copy]: failed to open stream: No such file or directory in G:\wamp\www\tanatostattoo\ftp_upload.php on line 46
Ruta: http://www.tanato.site11.com/public_...nes/marta1.jpg


Y el codigo original esta aqui:

http://www.cristalab.com/tutoriales/...por-ftp-c112l/
  #6 (permalink)  
Antiguo 27/02/2010, 17:02
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con script de php + mysql

Porqué por ftp? No tienes permisos en tu servidor para subirlo de forma normal?
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Etiquetas: mysql
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 16:05.