Foros del Web » Programando para Internet » PHP »

S.o.s!!

Estas en el tema de S.o.s!! en el foro de PHP en Foros del Web. hola foreros tengo un gran problema estoy haciendo una web para un estudio de fotografia, y el cliente quiere dar el servicio de que sus ...
  #1 (permalink)  
Antiguo 19/05/2006, 03:44
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
S.o.s!!

hola foreros
tengo un gran problema
estoy haciendo una web para un estudio de fotografia, y el cliente quiere dar el servicio de que sus clientes vean las fotos online. entonces el problema es que quiere poder subir 300 o 400 fotos de golpe y que el usuario solo pueda ver las suyas mediante un simple login.
lo entendi mal y empecé a hacerlo por medio de una base de datos pensando que no era esa cantidad de fotos las que pensaba subir (una locura).
soy nuevo en esto, de hecho esta página es el proyecto integrado de mi estudios...
ayer puse un post que no sirve porque como he dicho entendi mal lo que queria hacer... y no se como borrarlo
espero que me puedan ayudar... porque no se ni por donde empezar
gracias de ante mano
  #2 (permalink)  
Antiguo 19/05/2006, 04:15
 
Fecha de Ingreso: diciembre-2005
Mensajes: 88
Antigüedad: 12 años
Puntos: 0
Pues, es bastante sencillo lo que quieres hacer.

Ya quiera subir, 1 o 300 fotos, es igual de simple, te explico como lo haria yo (voy a obviar un poco lo básico, si necesitas que te lo explique me lo dices).

Lo primero es crear en la BS una tabla llamada usuarios con los campos login y password. La añadiria uno que fuera privilegios para que el fotografo se pueda identificar por el mismo formulario, pero dependiendo del contenido de este campo redireccione a un area o a otra. Esto se consigue mediante una consulta select muy sencilla.
$login=$_POST['login'];//sacamos el nombre de usuario del formulario
$sql = "select * from usuarios where login=\"".$login."\"";
$result = mysql_query($sql,$link) or die(mysql_error());//$link es una variable de la pagina del enlace con la BD que se incluye con include ("nombre.php");
compruebas si es correcto tanto el login y el password y miras los privilegios que tenga y redireccionas en funcion de ello.
Yo meteria el id_usuario en una variable de sesion para tenerlo todo el tiempo disponible.

Crearia tambien una tabla llamada imagenes con la siguiente estructura
id_imagen (pk)
id_usuario
imagen

PARA EL FOTOGRAFO
Tendrias que hacer un upload multiple (aqui me pierdo un poco, si te fijas estoy pidiendo ayuda para lo mismo).

PARA LOS CLIENTES
Es tan sencillo hacer una select filtrando los registros por el id_usuario
$sql = "select imagen from imagenes where id_usuario=\"".$id_usuario."\"";

y asi sacaria en un array todas las fotos de ese usuario. Luego solo tienes que mostrarlas mediante un bucle o como mejor quieras.
  #3 (permalink)  
Antiguo 19/05/2006, 04:15
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
hola!
q Base de Datos usas?
q lenguaje de programacion tienes intencion de usar?
q nivel tienes?
podrias concretar mas tu problema?

lo q se puede hacer en tu BD, es crear una tabla para las imagenes y otra para los clientes.
En la tabla de imagenes tendrias q guardarte la ruta donde tienes las imagenes, una fecha, y el id del cliente y kizas algun campo mas.
En la del cliente tendria q haber el id del cliente y su nombre y su password y si kieres algun campo mas.
Luego crearte una pagina de login y segun el id del usuario mostrarle las fotos q pertenecen a ese cliente.

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 19/05/2006, 04:26
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
hola de nuevo y gracias por la rapida respuesta.
os pongo aqui tanto la cracion de las tablas como la forma que tengo de guardarlas en la bd y d extraerlas...

creacion de las tablas:
Código PHP:
<? 
$base
="rafaelfoto";
if(
$c=mysql_connect ("localhost","root",""))
    { 
  
mysql_query("CREATE DATABASE $base");
    
mysql_select_db ($base$c);
              
  
$tabla "clientes";
  
$crear="CREATE TABLE IF NOT EXISTS ";
  
$crear .="$tabla";
  
$crear .="( ";
  
$crear .="cliente CHAR(20) PRIMARY KEY, ";
  
$crear .="password CHAR (15) NOT NULL ";
  
$crear .=")";
  
mysql_query ($crear ,$c);
  
  
$tabla "administradores";
  
$crear="CREATE TABLE IF NOT EXISTS ";
  
$crear .="$tabla";
  
$crear .="( ";
  
$crear .="admin CHAR(20) PRIMARY KEY, ";
  
$crear .="password CHAR (15) NOT NULL ";
  
$crear .=")";
  
mysql_query ($crear ,$c);
  
  
$tabla "album";
  
$crear="CREATE TABLE IF NOT EXISTS ";
  
$crear .="$tabla";
  
$crear .="( ";
  
$crear .="`cliente` varchar(20) NOT NULL, ";
  
$crear .="`foto` mediumblob NOT NULL, ";
  
$crear .="`tipo_foto` varchar (10) NOT NULL, "
  
$crear .="`titulo` varchar(20) NOT NULL, ";
  
$crear .="`comentario` varchar(255), ";
  
$crear .="PRIMARY KEY (cliente, titulo)";
  
$crear .=")";
  
mysql_query ($crear ,$c); 

  
  
mysql_close($c);
  }
?>
guardar en la bd las imagenes:
Código PHP:
<?
$foto_name
$_FILES['foto']['name'];
$foto_size$_FILES['foto']['size'];
$foto_type=  $_FILES['foto']['type'];
$foto_temporal$_FILES['foto']['tmp_name'];
$cliente$_POST['cliente'];
$titulo$_POST['titulo'];
/* limitamos los formatos de imagen admitidos a:
    - png  que segun del navegador que ulicemos puede ser en IE image/x-png y en Firefox y Mozilla image/png
    - jpg que puede tener como tipo en IE image/pjpeg  en Firefox y Mozilla image/jpeg
    - gif que tiene como tipo image/gif en todos los navegadores
*/
if ($foto_type=="image/x-png" OR $foto_type=="image/png"){
 
$extension="image/png";
 }
if (
$foto_type=="image/pjpeg" OR $foto_type=="image/jpeg"){
 
$extension="image/jpeg";
 }
if (
$foto_type=="image/gif" OR $foto_type=="image/gif"){
 
$extension="image/gif";
 }
//condicionamos la inserción a que la foto tenga nombre, tamaño distinto de cero, extensión no nula y titulo
if ($foto_name != "" AND $foto_size != AND $cliente !='' AND $extension !='' AND $titulo != ""){
//reconversion de la imagen para meter en la tabla:    abrimos el fichero temporal en modo lectura "r" binaria"b"
$f1fopen($foto_temporal,"rb");
//leemos el fichero completo limitando la lectura al tamaño de fichero        
$foto_reconvertida fread($f1$foto_size);
//con addslashes anteponemos \ a las comillas que pudiera contener el fichero para evitar que sean interpretadas como final de cadena    
$foto_reconvertida=addslashes($foto_reconvertida);
//abrimos la base de datos y escribimos las intrucciones de inserción en el campo BLOB insertaremos la foto_reconvertida
$base="rafaelfoto";
$tabla="album";
$c=mysql_connect ("localhost","root","");
mysql_select_db ($base$c);
$meter="INSERT INTO ".$tabla;
$meter .=" (cliente, foto, tipo_foto, titulo) ";
$meter .=" VALUES('$cliente','$foto_reconvertida','$extension','$titulo')";
    if (@
mysql_query($meter,$c)){
        print 
"Foto guardada en la tabla";
        }else{
        print 
"Ha habido un error al guardar la foto";
    }
}else{
    echo 
"<h2>No ha podido transferirse el fichero</h2>";
 }
 
mysql_close();
?>
y para extraerlas:
Código PHP:
<?
session_start
();
$base="rafaelfoto";
$tabla="album";
$c=mysql_connect("localhost","root","");
mysql_select_db($base,$c);
    
$log $_SESSION['login'];    
    if (
$log == "")
    {
        echo 
'<body background="images/fondodenegado.jpg">';
    }
    else
    {
        echo 
'<body background="images/fondoframes.jpg">';
        echo 
"<table align='center'>";
        
$sacar "SELECT * FROM ".$tabla." where cliente like '".$log."'";
        
$resultado mysql_query($sacar,$c);
        
$valor mysql_num_rows($resultado);
        if (
$valor!=0)
        {
            while (
$registro mysql_fetch_array($resultado))
            {
            echo 
"<center>";
            echo 
'<table background="images/fondoframes.jpg" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" align="center" width="640" height="440">';
                echo 
"<tr><td colspan='2'><center>".$registro['titulo']."</td></tr>";
                echo 
"<tr><td colspan='2'><center><img src='ver_foto.php?n=".$registro['cliente']."' width=300></center></td></tr>";
                
?>
                <form action="agregarcoment.php" method="post">
                    <tr><td colspan='2' align="center"><textarea name="comentario" cols="50" rows="5"></textarea></td></tr>
                    <tr><td align="right"><input type="submit" value="Enviar"></td>
                    <td align="left"><input type="reset" value="Borrar"></td></tr>
                </form>
                <?    
            
echo '</table></center>';
            }

        }
        else
        {
            echo 
'<table align="center"><tr><td class="title2">';
            echo 
$_SESSION['login'];
            echo 
", actualmente no tienes fotos en el album";
        }
    }
mysql_close();
?>
ver_foto.php:
Código PHP:
<?
$client
=$_REQUEST['n'];
$base="rafaelfoto";
$tabla="album";
$c=mysql_connect ("localhost","root","");
mysql_select_db ($base$c);
    
$sacar "SELECT * FROM ".$tabla." WHERE (cliente like '".$client."')" ;
    
$resultado mysql_query($sacar,$c);
    while (
$registro mysql_fetch_array($resultado)){
        
$tipo_foto=$registro['formato'];
        
header("Content-type: $tipo_foto");
        echo 
$registro['foto'];
}
mysql_close();
?>
aqui esta todo el codigo espero que asi sea mas facil que me ayudeis
  #5 (permalink)  
Antiguo 19/05/2006, 04:29
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
lo que os comentaba es que como puedo hacer para que pueda seleccionar 300 o 400 fotos de golpe para subirlas...

con el codigo ese me da un fallo al extraerlas que me muestra la misma imagen siempre, pero si hay 20 registros me la muestra 20 veces
  #6 (permalink)  
Antiguo 19/05/2006, 06:16
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 1
Yo lo que te recomiendo es que en la BD no guardes la foto sino la ruta en donde esta la foto, es mucho mejor, la BD pesa menos y te dara menos problemas
  #7 (permalink)  
Antiguo 19/05/2006, 06:24
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
ok zekenet pero eso como seria?? es q estoy un poco verde en esto :S
  #8 (permalink)  
Antiguo 19/05/2006, 06:28
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 1
guarda todas las imagenes en una carpeta, ejm /imagenes/nombre.jpg.
en la BBDD almacena en el campo foto la ruta "/imagenes/nombre.jpg" y para ver la imagen pones una etiqueta img y en src pones lo devuelto de la BBDD
  #9 (permalink)  
Antiguo 19/05/2006, 06:33
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
ok muchas gracias voy a ver si ay algun post que lo expliquen detalladamente a ver si consigo verlo mejor, ya por lo menos se cual es la idea muchas gracias.

si alguien tiene alguna sugerencia mas tambien me gustaria saberla

saludos
  #10 (permalink)  
Antiguo 19/05/2006, 06:36
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
zekenet, una pregunta, entonces el campo de la tabla para la foto ya no seria blob si no un varchar x ej no?
  #11 (permalink)  
Antiguo 19/05/2006, 06:42
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 10 meses
Puntos: 10
si, solo tendrias un varchar para guardar la ruta de la imagen almacenada en la carpeta!
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #12 (permalink)  
Antiguo 19/05/2006, 06:45
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
ok, pero la ruta k tendria k ir metiendola a mano o como sería? no se si m explico
  #13 (permalink)  
Antiguo 19/05/2006, 06:56
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 1
Imagino que para que los usuarios suban las imagenes tienen un <input type='file'> cuando almacenes la imagen en la carpeta donde tiene que estar grabas en la base de datos la ruta en donde se ha almacenado
  #14 (permalink)  
Antiguo 23/05/2006, 04:28
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
Ya no doy pa mas!!!

hola de nuevo!!
he estado un poco relajado y ahora ay que volver a la web

mi pregunta anterior creo k no la entendiste bien, aber si consigo explicarme un poco mejor.

el cliente me ha pedido ofrecer a sus clientes una vista online d las fotografias que le ha hecho, por lo tanto solo va a subir imagenes el. entonces me ha dicho que si por ejemplo de una boda kiere subir 400 fotos que si tiene que subirlas una por una, y claro yo pense crear una carpeta y k las pegara directamente, xo como puedo acer para saber a quien corresponden esas fotos, ya que el cliente que se ha logeado solo puede ver las suyas.

espero que me hayan entendido y me ayuden x favor...

salu2 y gracias!!

< JcG86 >
  #15 (permalink)  
Antiguo 23/05/2006, 05:10
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola,

a parte de las opciones que te dan los compañeros del foro (que sería la recomendable) puedes hacer una cosa 'rápida'.

Imagina que le dices a tu cliente (el fotógrafo) que para subir las fotos debe hacerlo mediante FTP y las ha de colocar siguiendo un criterio que tú elijas:

- todas en la misma carpeta separando las de cada usuarios por un prefijo
- las fotos de cada uno de sus clientes en carpetas con nombres diferentes para cada uno (esta opción es la mejor de las dos)

De este modo, tu cliente sube las fotos de un modo rápido y sencillo para él (que es lo que muchos clientes quieren). Lo que tendría que hacer después, el fotógrafo, es asignar a cada cliente esa carpeta donde ha guardado las fotos o, dependiendo del método que escojas, el prefijo asignado a sus fotos (esto lo guardarías en la base de datos con, por ejemplo, un campo en la tabla de clientes que guardara ese nombre de carpeta).

Cuando un cliente llegase a la web, y se identificase, podrías mostrarle el listado de carpetas al que tiene acceso permitiendole entrar sólo en las que le pertecencen (para esto último debieras idear un método para controlar que si te escriben la ruta a una carpeta de otro cliente no pueden ver el contenido -> el uso de las sesiones te puede ayudar).

Recuerda que este planteamiento es para hacer algo rápido y eficaz. Si tienes tiempo para realizar el proyecto, mejor estudia la opción de almacenar todo en la base de datos.
__________________
http://www.nosoynadie.net/
  #16 (permalink)  
Antiguo 23/05/2006, 12:26
 
Fecha de Ingreso: junio-2004
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 0
Hola JcG86:
Ya que tienes una tabla de clientes, porque no le pones un identificador a cada uno de ellos y en tabla de las fotos grabas tambien el identificador, de esta manera cuando un cliente se conecte, solo mostrará las fotos que correspondan al mismo.
Las fotos las puedes guardar todas en la misma carpeta, simplemente añades al nombre antes de grabar la base de datos el identificador del cliente. De esta manera las grabas donde tu quieras y despues las buscas todas en el mismo sitio.
En la base de datos de las fotos solo grabas el nombre de la imagen, no te hace falta grabar la ruta, ya que las vas a leer de donde tu decidas.

Lo de grabar el identificador del cliente antes del nombre de la foto, es una cosa que yo ya he tenido que hacer, porque me subian todas las fotos como
1.jpg, 2.jpg, ... etc y en la siguiente sesión volvían ha hacer lo mismo, 1.jpg, 2.jpg, ... y machacaban las anteriores.

Saludos

j. sendra
  #17 (permalink)  
Antiguo 23/05/2006, 13:42
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
muchas gracias a los dos!!! es lo k kiero hacer, en la tabla d las fotos tengo almacenado el campo cliente x el cual identifico cada foto pero no se porque al extraerlas con esta consulta:
SELECT * FROM fotos WHERE cliente like $login
me muestra las que pertenecen a ese cliente, pero tengo un error que no se cual es que me muestra todas las fotos q tiene pero la misma repetida, me explico mejor, si ese cliente tiene 20 fotos, me muestra 20 fotos, pero siempre la misma, x ej 2.jpg aunq el titulo y el comentario,... sean distintos no se si m entendeis.

la solucion que me ha dado nosoynadie es la q kiero implementar, pero no se como...

de todas formas gracias a los dos y espero algun dia poder yo ayudaros a vosotros.

si m puedes ayudar con el codigo que necesito para hacer lo del ftp te lo agradeceria muchisimo.

salu2

JcG86
  #18 (permalink)  
Antiguo 24/05/2006, 03:07
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola,

para implementar esta solución debes definir, lo primero, cómo va a subir el fotógrafo las fotos. ¿lo hará con un cliente de ftp (cuteFTP, flashFXP, Filezilla, etc) o le tienes que preparar tú un documento que se encargue de ellos? Lo más sencillo para tí, y para él, es que lo haga con un cliente ftp.

En cuanto me puedas responder a esta pregunta, analizamos cómo sería tu aplicación
__________________
http://www.nosoynadie.net/
  #19 (permalink)  
Antiguo 24/05/2006, 03:08
 
Fecha de Ingreso: junio-2004
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 0
Muestra el código de la consulta a ver que podemos hacer.
Si te cambia los comentarios, debes tener algún error a la hora de asignar la imagen leída.

Salu2
  #20 (permalink)  
Antiguo 24/05/2006, 03:14
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
hola
nosoynadie el fotografo tiene ya su ftp para comunicar el estudio con la tienda asi q sobre eso no hay problema.

yo le e comentado q se cree una carpeta dentro de su ftp q se llame web y dentro d esa pues ya q cree una carpeta para cada cliente suyo.

y si como es logico el se comunica con su ftp por medio de un cliente ftp el fetch
  #21 (permalink)  
Antiguo 24/05/2006, 03:23
 
Fecha de Ingreso: mayo-2006
Mensajes: 26
Antigüedad: 11 años, 6 meses
Puntos: 0
hola sjmrc2k el codigo esta puesto mas arriba tanto a la hora de guardar como de extraer como la declaracion de la tabla esta todo lo k creo necesario si necesitas algo mas pidemelo
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 11:24.