Foros del Web » Programando para Internet » PHP »

No se muestra la imagen que guardé en la BD

Estas en el tema de No se muestra la imagen que guardé en la BD en el foro de PHP en Foros del Web. Hola amigos: Estoy enrrolladísima y no sé que hacer. La situación es esta: Tengo un form con el que el usuario guarda una foto en ...

  #1 (permalink)  
Antiguo 29/10/2008, 18:23
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Pregunta No se muestra la imagen que guardé en la BD

Hola amigos:

Estoy enrrolladísima y no sé que hacer. La situación es esta:

Tengo un form con el que el usuario guarda una foto en una carpeta y la ruta de la misma en la BD. Hasta aquí todo bien.

Luego cuando quiero llamar la foto en una parte del código no me la muestra. Este es el código:

ARCHIVO SHOW_CAT.PHP

<?
include ('book_sc_fns.php');
// El carrito de compra necesita sesiones, así que empezar una
session_start();
$name = get_category_name($catid);

do_html_header($name);

// obtener la información del book de la base de datos
$book_array = get_books($catid);

display_books($book_array);

?>

Las funciones a las que invoca son las siguientes:

function get_category_name($catid)
{
// Petición a la base de datos del nombre de una categoría id
$conexion = db_connect();
$query = "select catname, catid
from categorias
where catid = $catid";
$result = @mysql_query($query);
if (!$result)
return false;
$num_cats = @mysql_num_rows($result);
if ($num_cats ==0)
return false;
$result = mysql_result($result, 0, "catname");
return $result;
}

function display_$books($books _array)
{
//display all products in the array passed in
if (!is_array($book_array))
{
echo "<br>No $books currently available in this category<br>";
}
else
{
//create table
echo "<table width = \"100%\" border = 0>";

//create a table row for each $book
foreach ($book_array as $row)
{
$url = "show_$book.php?sku=".($row["sku"]);
echo "<tr><td>";
if (@file_exists("images/".$row["sku"].".jpg"))
{
$title = "<img src=\"images/".($row["sku"]).".jpg\" border=0>";
do_html_url($url, $title);
}
else
{
echo "&nbsp;";
}
echo "</td><td>";
$title = $row["title"]." by ".$row["author"] ;
do_html_url($url, $title);
echo "</td></tr>";
}
echo "</table>";
}
echo "<hr>";
}

Yo no se si será por las rutas las cuales son así:

la carpeta de images está en el mismo nivel del archivo show_cat.php, pero las funciones invocadas están en una carpeta fuera de esta.

Por favor pueden ayudarme pues ya no se que inventar para que esto funciones...

Gracias de antemano
  #2 (permalink)  
Antiguo 29/10/2008, 19:17
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: No se muestra la imagen que guardé en la BD

function display_$books($books _array)

porque tiene ese $ en books?

Que te muestra? algun error? que se ve en la imagen (url)?
  #3 (permalink)  
Antiguo 30/10/2008, 13:21
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No se muestra la imagen que guardé en la BD

Hola amigos:

Tengo 5 días con esto y estoy al borde la locura!!!

El punto es que al guardar la foto me la guarda asi: foto1.jpg, pero resulta que el código solo la reconoce si la guardo en la BD como foto1 (sin el .jpg).

En esta función es que debería mostrarla:

function display_books($books _array)
{
//display all books in the array passed in
if (!is_array($book_array))
{
echo "<br>No books currently available in this category<br>";
}
else
{
//create table
echo "<table width = \"100%\" border = 0>";

//create a table row for each $book
foreach ($book_array as $row)
{
$url = "show_book.php?sku=".($row["sku"]);
echo "<tr><td>";
if (@file_exists("images/".$row["sku"].".jpg"))
{
$title = "<img src=\"images/".($row["sku"]).".jpg\" border=0>";
do_html_url($url, $title);
}
else
{
echo "&nbsp;";
}
echo "</td><td>";
$title = $row["title"]." by ".$row["author"] ;
do_html_url($url, $title);
echo "</td></tr>";
}
echo "</table>";
}
echo "<hr>";
}

No se como grabarla en la bd sin el .jpg o .gif. Tampoco se como reformar el código para que me la muestre.

Por favor les agradezco su ayuda, estoy exahusta.

Thank you
  #4 (permalink)  
Antiguo 30/10/2008, 13:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: No se muestra la imagen que guardé en la BD

Mmm pues si no quieres poner la extensión solo es cuestión de modificar esta línea: $title = "<img src=\"images/".($row["sku"]).".jpg\" border=0>"; ahi le estas especificando que siempre sea .jpg.

Saludos
  #5 (permalink)  
Antiguo 30/10/2008, 15:01
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No se muestra la imagen que guardé en la BD

Gracias GatorV, pero al modificar el código me da error:

Parse error: parse error, unexpected '/' in c:\appserv\www\phpmyadmin\catalogo\fns.php on line 274

aqui modifiqué:
foreach ($book_array as $row)
{
$url = "show_book.php?sku=".($row["sku"]);
echo "<tr><td>";
if (@file_exists("images/".$row["sku"]))
{
$title = "<img src=\"images/".($row["sku"])>";
do_html_url($url, $title);
}
else
{
echo "&nbsp;";
}

ESTA ES LA LINEA DEL ERROR
echo "</td><td>"; LINEA 274

AQUI SIGUE LA FUNCION
$title = $row["title"]." by ".$row["author"] ;
do_html_url($url, $title);
echo "</td></tr>";
}
echo "</table>";
}
echo "<hr>";
}

Y modifiqué la otra función:

function display_book_details($book)
{
// display all details about this book
if (is_array($book))
{
echo "<table><tr>";
//display the picture if there is one
if (@file_exists("images/".($book["sku"])))
{
$size = GetImageSize("images/".$book["sku"]);
if($size[0]>0 && $size[1]>0)
echo "<td><img src=\"images/".$book["sku"]. border=0 ".$size[3]."></td>";
}
echo "<td><ul>";
echo "<li><b>Autor:</b> ";
echo $product["author"];
echo "<li><b>Sku:</b> ";
echo $product["sku"];
echo "<li><b>Precio:</b> ";
echo number_format($book["price"], 2);
echo "<li><b>Descripción:</b> ";
echo $product["description"];
echo "</ul></td></tr></table>";
}
else
echo "Los detalles de este libro no pueden ser mostrados en este momento.";
echo "<hr>";
}

No se como salir de este atolladero....
  #6 (permalink)  
Antiguo 30/10/2008, 15:39
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: No se muestra la imagen que guardé en la BD

hola

cual es esta linea

Parse error: parse error, unexpected '/' in c:\appserv\www\phpmyadmin\catalogo\fns.php on line 274

porque en esta linea


else
echo "Los detalles de este libro no pueden ser mostrados en este momento.";
echo "<hr>";
}
te falta un corchete { despues del else

los if y else funcionan basicamente asi

if (condicion){

codigo

}else{

codigo

}

Última edición por jaronu; 30/10/2008 a las 15:46
  #7 (permalink)  
Antiguo 30/10/2008, 16:11
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No se muestra la imagen que guardé en la BD

El problema está cuando modifico esto:

$url = "show_book.php?sku=".($row["sku"]);
echo "<tr><td>";
if (@file_exists("images/".$row["sku"].".jpg"))
{
$title = "<img src=\"images/".($row["sku"]).".jpg\" border=0>";

por esto:
$url = "show_book.php?sku=".($row["sku"]);
echo "<tr><td>";
if (@file_exists("images/".$row["sku"]))
{
$title = "<img src=\"images/".($row["sku"])>";

Parece que al quitar el \ del ".jpg\" me diera el error: Parse error: parse error, unexpected '/' in c:\appserv\www\phpmyadmin\catalogo\fns.php on line 274

Creo que todo el asunto está allí pero no se como ponerlo. Me puedes sugerir algo porfa.

Gracias.
  #8 (permalink)  
Antiguo 30/10/2008, 16:17
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: No se muestra la imagen que guardé en la BD

esa barra invertida en

$title = "<img src=\"http://www.forosdelweb.com/images/".($row["sku"]).".jpg\" border=0>";

esta muy bien puesta, cual es el error que te sale y la linea donde te sale? pero escribe la linea del error

Un saludo
  #9 (permalink)  
Antiguo 30/10/2008, 16:21
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No se muestra la imagen que guardé en la BD

parece tonto e incoherente pero

ESTA ES LA LINEA DEL ERROR
echo "</td><td>"; ESTA ES LA LINEA 274

no me da cuando tengo esto:

$title = "<img src=\"images/".($row["sku"]).".jpg\" border=0>";

me da cuando tengo esto:

$title = "<img src=\"images/".($row["sku"])>";
  #10 (permalink)  
Antiguo 30/10/2008, 16:24
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: No se muestra la imagen que guardé en la BD

esta linea

$title = "<img src=\"http://www.forosdelweb.com/images/".($row["sku"])>";

seria asi

Código PHP:
$title "<img src=\"http://www.forosdelweb.com/images/".$row["sku"]."\">"
Un saludo
  #11 (permalink)  
Antiguo 30/10/2008, 16:41
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No se muestra la imagen que guardé en la BD

si me quita el error pero no me muestra la foto y esto es lo que tengo días tratando de resolver. No sé porque, ya lo he probado de mil forma y la única que funciona es cuando le cambio al nombre a la foto directamente en el archivo donde la guardé para que no salga con el .jpg que es como la guarda. Así la estoy guardando:

$conexion = db_connect();
if (!$conexion)
return 0;
$archivo = $_FILES['foto']['name'];

//Insercion de los datos, ojo la imagen se graba con su nombre original en la tabla (es un campo varchar)
$sql_ins = "INSERT INTO foto (id, sku) " .
"VALUES '$nombre','$archivo')";
$res = mysql_query($sql_ins) or die ( "Error MySQL dice: " . mysql_error() );
?>

cuando se guarda queda así en la bd: Audio.jpg y de esta manera la función no muestra la foto solo si queda con Audio sin .jpg

Qué más hago?
  #12 (permalink)  
Antiguo 30/10/2008, 16:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: No se muestra la imagen que guardé en la BD

cual es la longitus de caracteres de tu campo varchar, a ver si es mas corto que los caracteres de la imagenes.

por que

$archivo = $_FILES['foto']['name'];

almacena el nombre completo de la imagen, con la extension completa.
  #13 (permalink)  
Antiguo 30/10/2008, 16:49
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No se muestra la imagen que guardé en la BD

tiene super de mas, 255. lo bueno sería encontrar una forma de guardarla solo con su nombre sin la extensión
  #14 (permalink)  
Antiguo 30/10/2008, 16:54
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: No se muestra la imagen que guardé en la BD

entonces cambia esta funcion

Código PHP:

function display_book_details($book)
{
// display all details about this book
if (is_array($book))
{
echo 
"<table><tr>";
//display the picture if there is one
if (@file_exists("http://www.forosdelweb.com/images/".($book["sku"])))
{
$size GetImageSize("http://www.forosdelweb.com/images/".$book["sku"]);
if(
$size[0]>&& $size[1]>0)
$book $book['sku'].".jpg";
echo 
"<td><img src=\"http://www.forosdelweb.com/images/$book\" border=0 ".$size[3]."></td>";

  #15 (permalink)  
Antiguo 30/10/2008, 17:04
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No se muestra la imagen que guardé en la BD

Me da este error:

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in c:\appserv\www\phpmyadmin\catalogo\fns.php on line 295

es decir esta linea:
echo "<td><img src=\"fotos/".$product["sku"]. "".jpg"\" border=0 ".$size[3]."></td>";
  #16 (permalink)  
Antiguo 30/10/2008, 17:07
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: No se muestra la imagen que guardé en la BD

y cual es la linea justo antes de

echo "<td><img src=\"fotos/".$product["sku"]. "".jpg"\" border=0 ".$size[3]."></td>";

por que esta linea segun veo ahora deberias de dejarla asi

echo "<td><img src=\"fotos/".$product["sku"]. "".jpg"\" border=\"0\" ".$size[3]."></td>";
  #17 (permalink)  
Antiguo 01/11/2008, 09:22
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

Hola amigos:

No se como colocar esto:

echo "<td><img src=\"fotos/".$product["sku"]></td>";

pues me da el siguiente error:

Parse error: parse error, unexpected '<' in c:\appserv\www\phpmyadmin\catalogo\fns.php on line 296

Por favor me pueden decir como manejo aqui el uso de las comillas o algo pues ya no se que ponerle para que funcione

Gracias
  #18 (permalink)  
Antiguo 01/11/2008, 09:37
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

El tema de las comillas es puntiagudo, hay muchas formas de hacerlo...

echo '<td><img src="fotos/'.$product['sku'].'"></td>';
  #19 (permalink)  
Antiguo 01/11/2008, 09:39
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

Colocandolo así ahora me sale este error:

Parse error: parse error, unexpected $end in c:\appserv\www\phpmyadmin\catalogo\fns.php on line 692
  #20 (permalink)  
Antiguo 01/11/2008, 09:43
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

Eso ya creo que es otro error, comprueba que todas las llaves del script estén bien cerradas...
  #21 (permalink)  
Antiguo 01/11/2008, 09:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

http://www.forosdelweb.com/f18/como-...s-bien-588701/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #22 (permalink)  
Antiguo 01/11/2008, 10:15
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

Corregi y si me faltaba una llave. Pero ahora con esta en otra función:

$titulo = "<img src=\"fotos/".($row["sku"])>";

me da este error:

Parse error: parse error, unexpected '<' in c:\appserv\www\phpmyadmin\catalogo\fns.php on line 268
  #23 (permalink)  
Antiguo 01/11/2008, 10:25
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

Pueden ayudarme please, estoy perdida
  #24 (permalink)  
Antiguo 01/11/2008, 10:30
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

$titulo = '<img src="fotos/'.$row['sku'].'">';
  #25 (permalink)  
Antiguo 01/11/2008, 10:35
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

Muchas Gracias Keysher ya no me muestra el error.
  #26 (permalink)  
Antiguo 01/11/2008, 10:41
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

Me alegro. De todas maneras echale un ojo al enlace que te dejó pateketrueke.
  #27 (permalink)  
Antiguo 01/11/2008, 10:46
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No me funciona echo "<td><img src=\"images/".$book["sku"]></td>";

Si lo estuve leyendo, gracias a ti también pateketrueke. Son muy panas!!!
  #28 (permalink)  
Antiguo 01/11/2008, 11:48
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Guardar en BD sin el .jpg o .gif

Hola amigos otra vez yo...

Tengo días resolviendo errores de mi web y después de marearme el cerebro buscando soluciones llegué a la conclusión de que necesito guardar la foto sin .jpg o .gif para que mi función la muestre.

Lo que necesito hacer es guardar la foto sin .jpg o .gif. Este es el código que estoy usando:

$conexion = db_connect();
if (!$conexion)
return 0;

$archivo = stripslashes($_FILES['imagen']['name']);

//Insercion de los datos, ojo la imagen se graba con su nombre original en la tabla (es un campo varchar)

$sql_ins = "INSERT INTO foto (fecha, nombre, id, sku) " .
"VALUES ('$fecha', '$nombre_usuario', '$nombre','$archivo')";
$res = mysql_query($sql_ins) or die ( "Error MySQL dice: " . mysql_error() );

$nuevo_nombre = $_FILES['imagen']['name'];
move_uploaded_file($_FILES['imagen']['tmp_name'], "../catalogo/imagen/$nuevo_nombre");
?>

QUE HAGO PARA QUE NO GUARDE EL .JPG O .GIF

GRACIAS
  #29 (permalink)  
Antiguo 01/11/2008, 12:23
Avatar de eZakto  
Fecha de Ingreso: julio-2008
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Guardar en BD sin el .jpg o .gif

Qué tal algo como reemplazar esto:
Código php:
Ver original
  1. $archivo = stripslashes($_FILES['imagen']['name']);
por:
Código php:
Ver original
  1. $archivo = explode('.', stripslashes($_FILES['imagen']['name'])); // Lo separo por cada punto
  2. unset($archivo[count($archivo)-1]); // Elimino el último pedazo (que sería la extensión)
  3. $archivo = implode('.', $archivo); // Uno todo lo que queda
Creo que funcionará.

Saludos.
  #30 (permalink)  
Antiguo 01/11/2008, 12:41
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar en BD sin el .jpg o .gif

Guao que buen código, lo hace perfecto. Gracias eZakto
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:10.