Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/02/2006, 06:01
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, es cierto que tienes una buena "ensalada", pero de uso de variables externas de PHP.

Por un lado usas variables asumidas como globales .. como cuando haces:

if($boton) {

Debería ser:

if (isset($_POST['boton'])){

También usas $PHP_SELF cuando deberías usar $_SERVER['PHP_SELF'] o en general los "arrays supergobales" para todo ..

Por otro lado usas $HTTP_POST_FILES cuando deberías usar $_FILES .. y para "rematar la ensalada" usas funciones que genera "Dreamweaver" como GetSQLValueString() para procesar esas variables externas .. En fin ... creo que primero deberías "standarizar" tu uso de variables, aclararte y luego ver otro tipo de problemas, por qué .. el uso indiscrimiado de todo tipo de acceso a tus variables te podría estar dando estos problemas que tienes (dependiendo de la configuración de PHP: register_globals ..).

En las primeras FAQ's de este foro de PHP tienes un par relacionadas con este tema, te invito a leerlas.

Sobre el código que prestentas .. en general está todo erroneo.

Tu usas un campo llamado "archivo_" y de tipo "file" que es donde TU seleccionas tu archivo a subir al tu servidor. Ese es el nombre del campo que contiene tu archivo bajo el array $_FILES (o $HTTP_POST_FILES) y a su vez en ese array tienes propiedades del archivo que subistes como: su nombre original (NO RUTA del cliente .. es decir de donde estaba en el PC que lo subió), el nombre "temporal" que PHP le dá a todo archivo al subirlo vía PHP, su tamaño ("size") .. o el formato MIME del archivo ("type") ...

No sé por qué estás usando por ahí un campo de texto que llamas "archivo" (sin ese _) y es el que pretendes accederlo en $HTTP_POST_FILES['archivo'] cuando ahí NO vas a tener NADA de archivos!.

También usas copy() para el proceso de mover ese archivo temporal de donde PHP lo sube hacia su destino definitivo. Debes usar move_uploaded_file() NO copy() (te dará problemas de otro ambito en algunos casos).

Por otro lado tienes algunos errores de concepto:

Cita:
1er problema: Cuando quiero grabar la ruta del campo donde pongo el boton examinar no tengo forma de que lo tome, por ende, me da null.
Así funciona el campo "file" .. cara a PHP NO se entrega esa información de la ruta, sólo el nombre original del archivo. Nunca la ruta original que tenía en el PC que subió el archivo. Ahora .. vía javascript puedes tomar ese valor del campo file, añadirlo en otro campo de tu formulario (en un campo hidden) y que suba ambos datos al servidor en tu formulario HTML hacia tu script PHP .. Pero, realmente no le veo sentido a tomar esa ruta original .. Piensa que estás trabajando en arquitectura "cliente-servidor" .. NO que ese mismo "PC" que ahora usas como "servidor" también hace de "cliente".

Cita:
2do error: como hago para que guarde la ruta relativa al sitio. Por ejemplo, si en el campo de upload despues del examinar se ve c:\fotos\pepe.jpg, yo quiero que grabe en la db, ../fotolog/pepe.jp
En $_FILES['archivo_']['name'] vas a obtener "pepe.jpg" y sólo eso .. tu veras si quieres añadir (concatenar) a esa variable una "constante" tuya que sea "../fotolog/" .. tipo:

$nombre_archivo_ruta="../fotolog/".$_FILES['archivo_']['name'];

y eso quede como parte de tu INSERT para tu BD en el campo que corresponda o destines para guardar esa ruta. Pero . .realmente, NUNCA deberías guardar una RUTA como parte de tus datos .. ¿que pasaría si un día te dá por cambiar de ruta tus archivos? .. Lo ideal es que esa ruta (como "constante") la uses -sólo- cuando accedas a tus imagenes concatenandola en tu tipico:

echo "<img scr=\"../fotolog/".$row['archivo']."\">";

O como hagas para presentar tus imagenes.

Si tu organizas tus imagenes en "directorios" .. ahí tendrías que guardar mejor o definir un campo extra en tu BD que defina la "categoría" y si lo deseas ahí relacionar "categoria" -> "ruta absoluta/relativa" que corresponda. Pero .. realmente gestionando archivos en una BD donde todo archivo que se mueve por ella es gestionado por tus scripts PHP (que controlan lo que sube .. lo que borras .. lo que mueves .. etc) no tiene en principio ningún sentido organizar en "directorios" esos archivos pues ... teóricamente NUNCA deberías acceder a esos archivos a "manipularlos" (subir, borrar, etc ...) por donde están físicamente (tal vez por FTP . .etc) sino siempre por tus scripts PHP. Así que perfectamente bajo este critério tus archivos los tendrías en un sólo directorio y ya será tu "modelo de datos" el que se encargue de clasificar tus archivos por ese campo "categoria" que definas.

Cita:
Por otro lado, en la galeria de imagenes se listarian de la siguiente forma. Tengo dos iframes(lista y cuerpo), en uno, el listado de todas las categorias, donde con clickear, te carga la categoria en el iframe cuerpo, mostrando la foto y el comentario.

1er error: Hay algun script que genere automaticamente las thumbnails? Por que sino las veo todas desproporcionadas?
En las FAQ's de este foro de PHP tienes ejemplos y más si buscas por el término. Ahora .. eso de que "tus thumbnails" se hagan automáticamente deberías especificar que deseas hacer. Tienes un par de opciones:

1) cuando tu archivo sube al servidor .. en ese instante generas tu thumnail (como archivo).
2) Cada vez que pidas tu thumnail de tu imagen original .. la generas.

Ambos métodos tienen sus pró's y contras. El primero optimiza proceso del servidor (pues el thumbnail se genera una sóla vez .. o cuando cambies esa imagen ..) el segundo optimiza "espacio" en tu servidor .. pues el thumbnail lo generas "al vuelo" (no un archivo) y es entregado directamente al cliente (navegegador).

Sobre los problemas con el "upload" del archivo en sí .. te recomiendo ver la documentación oficial de PHP al respecto:

http://www.php.net/manual/es/features.file-upload.php

Y FAQ's del foro PHP pues tienes más ejemplos.

Sobre generar thumbnails .. en las FAQ's tienes ejemplos .. pero también puedes ir viendo la documentación oficial sobre tratamiento de imagenes sobre PHP:

www.php.net/gd

Un saludo,