Foro oficial de PHP

Quiero darle las gracias a DarkFulgoreII por la ayuda. Ya mande K+ ;)

Ahora me gustaría que me ayudaran con algo que creo que es sencillo pero ni idea.

Quiero crear una tabla en MYSQL que contenga los datos de un producto y además de eso me cargue una imagen para mostrar. Entonces como sería el mejor procedimiento:

Se carga la imagen en una carpeta en el servidor y luego se llama la imagen con la ruta? Si es así como sé que imágenes hay en esa carpeta para escogerlas?

Muchas gracias
 
Quiero darle las gracias a DarkFulgoreII por la ayuda. Ya mande K+ ;)

Ahora me gustaría que me ayudaran con algo que creo que es sencillo pero ni idea.

Quiero crear una tabla en MYSQL que contenga los datos de un producto y además de eso me cargue una imagen para mostrar. Entonces como sería el mejor procedimiento:

Se carga la imagen en una carpeta en el servidor y luego se llama la imagen con la ruta? Si es así como sé que imágenes hay en esa carpeta para escogerlas?

Muchas gracias

Compañero, la mejor formá y más optima es que tengas una columna donde para ese registro le tengas el nombre de la foto

P1 -> joto1.jpg
P2 -> joto2.jpg

Y cuando traigas tus datos entonces sabrás que uno de los resultados tiene el nombre de la foto, de esa manera lo único que tienes que poner estático es la ruta y agregarle al final el nombre de la foto y listo ;)

Porque si almacenas fotos en la DB, esta se vuelve pesada, lenta y además tienes que enfrentarte a campos tipo bin me parece y hacer unas conversiones para imagenes y bla bla bla ;)

Salu2
 
Compañero, la mejor formá y más optima es que tengas una columna donde para ese registro le tengas el nombre de la foto

P1 -> joto1.jpg
P2 -> joto2.jpg

Y cuando traigas tus datos entonces sabrás que uno de los resultados tiene el nombre de la foto, de esa manera lo único que tienes que poner estático es la ruta y agregarle al final el nombre de la foto y listo ;)

Porque si almacenas fotos en la DB, esta se vuelve pesada, lenta y además tienes que enfrentarte a campos tipo bin me parece y hacer unas conversiones para imagenes y bla bla bla ;)

Salu2

A ver te explico bien lo que quiero hacer:

Quiero crear una tabla llamado productos en la que me almacen el id (autonumerico), el nombre, la descripción, el valor y la imagen de cada producto.

O sea que subo la imagen al servidor y en la tabla productos el campo imagen sería un texto en donde pongo la ruta de la imagen subida? No hay forma que me muestre en el campo imagen una lista de nombres de las imágenes que hay almacenadas en la carpeta del servidor para no dar la oportunidad al usuario de equivocarse escribiendo mal el nombre de la imagen?

Muchas gracias.
 
A ver te explico bien lo que quiero hacer:

Quiero crear una tabla llamado productos en la que me almacen el id (autonumerico), el nombre, la descripción, el valor y la imagen de cada producto.

O sea que subo la imagen al servidor y en la tabla productos el campo imagen sería un texto en donde pongo la ruta de la imagen subida? No hay forma que me muestre en el campo imagen una lista de nombres de las imágenes que hay almacenadas en la carpeta del servidor para no dar la oportunidad al usuario de equivocarse escribiendo mal el nombre de la imagen?

Muchas gracias.

Claro, pues puedes mostrar un select con imagenes para que escoja cual quiere par el producto.
Aquí hay un ejemplo de un select con imagenes con lo cual te puedes dar a una idea.

http://www.a2sistemas.com/blog/2009/01/26/select-con-imagenes-de-fondo-para-internet-explorer/

Pero igual lo que se guarda en la DB es la ruta de esa imágen =)
 
A ver te explico bien lo que quiero hacer:

Quiero crear una tabla llamado productos en la que me almacen el id (autonumerico), el nombre, la descripción, el valor y la imagen de cada producto.

O sea que subo la imagen al servidor y en la tabla productos el campo imagen sería un texto en donde pongo la ruta de la imagen subida? No hay forma que me muestre en el campo imagen una lista de nombres de las imágenes que hay almacenadas en la carpeta del servidor para no dar la oportunidad al usuario de equivocarse escribiendo mal el nombre de la imagen?

Muchas gracias.

Al ser el ID único,por qué no lo utiliza para referenciar unívocamente el archivo de imágen? El usuario puede subir la foto con el nombre original que quiera, pero en el servidor queda almacenada con su ID correspondiente y listo... aunque sería bueno saber de dónde proceden las imágenes: son cargadas por usuarios o por el admin de la aplicación?
 
Claro, pues puedes mostrar un select con imagenes para que escoja cual quiere par el producto.
Aquí hay un ejemplo de un select con imagenes con lo cual te puedes dar a una idea.

http://www.a2sistemas.com/blog/2009/01/26/select-con-imagenes-de-fondo-para-internet-explorer/

Pero igual lo que se guarda en la DB es la ruta de esa imágen =)

Mira que esa página no me carga en ningun navegador... :(

EDIT: Si me carga es que aca hubo un bajon de nergia y me reinicio el router ;) Voy a mirar como funciona. Gracias.
 
Quiero darle las gracias a DarkFulgoreII por la ayuda. Ya mande K+ ;)

Ahora me gustaría que me ayudaran con algo que creo que es sencillo pero ni idea.

Quiero crear una tabla en MYSQL que contenga los datos de un producto y además de eso me cargue una imagen para mostrar. Entonces como sería el mejor procedimiento:

Se carga la imagen en una carpeta en el servidor y luego se llama la imagen con la ruta? Si es así como sé que imágenes hay en esa carpeta para escogerlas?

Muchas gracias

lo que normalmente se hace es generar un path y guardar el nombre de archivo en la base de datos. El path podria deducirse del id del producto y otras cosas que lo caractericen y sean unicas. por ejemplo en una aplicacion con estudiantes yo guardaria
un path
<semestre_id>/<curso_id>/<estudiante_id>.jpg


Vale la pena decir que tambien se puede guardar el archivo binario directamente en la base de datos, pero eso no me parece tan chevere.
 
lo que normalmente se hace es generar un path y guardar el nombre de archivo en la base de datos. El path podria deducirse del id del producto y otras cosas que lo caractericen y sean unicas. por ejemplo en una aplicacion con estudiantes yo guardaria
un path
<semestre_id>/<curso_id>/<estudiante_id>.jpg


Vale la pena decir que tambien se puede guardar el archivo binario directamente en la base de datos, pero eso no me parece tan chevere.

Yo prefiero irme por la segunda opción, con la primera vas a tener muchas limitantes como la estructura jerarquica/nomenclatura que definas con los directorios y los permisos sobre las carpetas (asociados y limitados al OS).

Con la BD necesitan tener claro un par de cosas al momento de programar y definir los atributos asociados a la base de datos. Luego de ahí en adelante tenes todas las ventajas de un modelo relacional sobre cada imagen.

Inclusive podes tener la tabla exclusiva de imágenes asociadas con el respectivo producto o la tabla de relación a un respectivo/s productos por aparte según sea el caso.
 
Yo prefiero irme por la segunda opción, con la primera vas a tener muchas limitantes como la estructura jerarquica/nomenclatura que definas con los directorios y los permisos sobre las carpetas (asociados y limitados al OS).

Con la BD necesitan tener claro un par de cosas al momento de programar y definir los atributos asociados a la base de datos. Luego de ahí en adelante tenes todas las ventajas de un modelo relacional sobre cada imagen.

Inclusive podes tener la tabla exclusiva de imágenes asociadas con el respectivo producto o la tabla de relación a un respectivo/s productos por aparte según sea el caso.

Me gusta la segunda opcion porque podría asociar una imagen a cada producto, pero lo que no se es como hago esto. Que tipo de campo agrego en la tabla productos para almacenar una imagen o la referencia a una imagen subida al servidor? Y luego como hago para llamarla y mostrarla en pantalla?

Hace tiempo modifiqué un módulo de noticias en el que se subía la imagen a una carpeta del servidor y cuando iba a publicar una noticia me mostraba en un select los nombres de las imágenes almacenadas para escoger la que iba en cada noticia, pero se me perdió este módulo. Esta opción que tal les parece?
 
Guardar la imagen en la BD no lo recomendaría... Se debe tener un super servidor para esto... Sobrecargaría demasiado al Motor de Bases de Datos y MySQL no funciona bien bajo estrés...

Lo más funcional y lo que se ve en ambientes de producción es guardar la ruta/path a la imagen y listo...
 
Guardar la imagen en la BD no lo recomendaría... Se debe tener un super servidor para esto... Sobrecargaría demasiado al Motor de Bases de Datos y MySQL no funciona bien bajo estrés...

Lo más funcional y lo que se ve en ambientes de producción es guardar la ruta/path a la imagen y listo...

Voy a probar de las dos maneras, pero tengo aún una duda con la primera opción:

Si yo subo los archivos al servidor a una carpeta específica, en el módulo de agregar productos quisiera poner un select que me muestre los nombres de las imágenes que he subido a dicha carpeta para agregarla al producto correspondiente.

Por ejemplo yo subo 3 imágenes: gaseosa.jpg, chiclet.jpg y detergente.jpg y las guartdo en la carpeta prod-imgs

Luego hago un formulario en el que voy a ingresar los datos a la tabla productos:

nombre
descripcion
valor
imagen

Como haría para que en el campo imagen me genere un select o yo pueda escoger la imagen correspondiente y ligarla a ese producto, para que cuando haga una consulta me muestre en pantalla uno a uno la información de cada prodcuto con imagen y todo?

Gracias
 
Hay dos formas:

1) La más chévere :p es hacer un formulario para subir las imágenes. Dicho formulario hará dos cosas, subir la imagen a un directorio y la otra poblar una tabla con las características de la imagen (nombre de la imagen, ruta a la imagen, tipo de imagen [GIF, JPG, PNG], dimensiones de la imagen [pixeles x pixeles], descripción de la imagen [propiedad ALT HTML]). Dicha Tabla Imagen tendrá un ID autoincremental y listo. Entonces cuando vaya a asociar la imagen al producto le hace un SELECT * a la Tabla Imagen y listo... =)

2) Trabajar con funciones de lectura y escritura de archivos / directorios, para leer el contenido y listarlo y cargarlo en un campo del formulario tipo SELECT.
 
La forma no tan ortodoxa pero efectiva sería teniendo una variable JavaScript para el límite y dándole el valor con PHP obteniendo el valor que llega por URL y en JavaScript hacer el window.open con un for usando la variable del límite, pero lo maluco es que se abrirían n popups, no es muy molesto para el usuario?
 
La forma no tan ortodoxa pero efectiva sería teniendo una variable JavaScript para el límite y dándole el valor con PHP obteniendo el valor que llega por URL y en JavaScript hacer el window.open con un for usando la variable del límite, pero lo maluco es que se abrirían n popups, no es muy molesto para el usuario?

y bueno de ser asi como seria? gracias..

y si es posible como php tambien como lo harias
muchas gracias...
 
Digamos que en la URL nos llega el parámetro que nos dice hasta donde descargar los archivos (partiendo de 1), o bueno, podrían llegar ambos parámetros, pero trabajemos con el límite superior.

La URL del script sería algo como

http://myserver.com/app/download.php?limiteSup=999

PHP:
<script language="JavaScript">
//Función para abrir los popups para descargar los archivos
function abrirPopups(){
     var limiteSup=<?php echo $_REQUEST['limiteSup'] ?>;
     var URL='http://www.907th.com/file.php?id=';
     
     for(var i=0; i<=limiteSup; i++;){            
            window.open (URL+i,'Descarga archivo '+i);
     }
}
</script>
Y esa función se llamaría en el onLoad del body o al darle click a un botón o algo. Otra opción es hacer todo por JavaScript y con una expresión regular obtener el parámetro y usarlo en el for [1], por facilidad este machetazo con PHP hace el trabajo.

Info para window.open en [2]

[1] http://www.webintenta.com/recoger-parametros-url-con-javascript.html
[2] http://www.javascript-coder.com/window-popup/javascript-window-open.phtml
 
Facil!....

Para mostrar un link a otra pagina, en vez de imprimir nombre y valor, imprimes un link y creas la otra pagina.....
Código:
  while($row = mysql_fetch_array($_pagi_result)) 
  {
    echo "<a href=verProducto.php?id=".$row[id]." >".$row['nm_prod']."</a>";
  }
como puedes ver, esto crea un link a la pagina verProducto.php y le pasa por parametro un id. row[id] supone que tu tabla tiene un identificador numerico (si no lo tiene, deberias ponerlo)

La pagina que recibe este llamado, deberia hacer algo asi
Código:
$valorParametroId = $_REQUEST["id"];
$link=Conectar();
$result = mysql_query("SELECT * FROM productos WHERE id=".$valorParametroId.", $link);
// y de aqui en adelante tu miras como mostrar los detalles del producto

Algunas cosas como conclusion:
- Puedes pasar parametros por POST ( como hiciste con el formulario de busqueda ) o por GET como hice yo con el link
- Puedes recolectar datos de la sesion con $_REQUEST, $_GET y $_POST . El primero incluye los otros dos
- El tag A permite generar links
- Una url permite envio de parametros mediante la cadena que va despues del nombre de la pagina, asi la pagina index.php podria recibir parametros por GET si se invoca con index.php?parametro1=valor1&parametro2=valor2

Espero te sirva

Muchas gracias por la ayuda, ya pude probarlo y funcionó a la perfección. En cuanto a la duda sobre subir imágenes al servidor con o sin BD para mostrarlas con PHP mejor me fui por el camino de subir las imágenes a una carpeta y con PHP poner el link para mostrarlas.

Ahora lo que ando buscando es como hacer que un campo tipo texto me muestre siempre un determinado numero de caracteres, por ejemplo si el texto contiene 300 caracteres me muestre solamente 100... Gracias.
 

Los últimos temas