Comunidad de diseño web y desarrollo en internet online

mostrar imagen almacenada en una base de datos

Citar            
MensajeEscrito el 02 Dic 2010 03:30 am
hola a todos, tengo una BD con con cmpos (nombre, sexo, carrera y foto) al ahcer al hacer la consulta para que me muestre los datos en una tabla, me muestra todo menos la imagen, en el campo foto tengo almacenada la ruta de la foto pero no logro que me muestre la foto, agradecería cualquier ayuda, código:

Código PHP :

<?php
include ('conectar.php');
$resultado = mysql_query("SELECT nombre, sexo, carrera, foto FROM datossemi", $con);
?>
<table style="border: 1px solid #0033CC">
    <tr>
        <td width="200px" height="40px" align="center" style="border: 1px solid #0033CC" bgcolor="#0033FF">NOMBRE</td>
        <td width="100px" height="40px" align="center" style="border: 1px solid #0033CC" bgcolor="#0033FF">SEXO</td>
        <td width="150px" height="40px" align="center" style="border: 1px solid #0033CC" bgcolor="#0033FF">CARRERA</td>
        <td width="100px" height="40px" align="center" style="border: 1px solid #0033CC" bgcolor="#0033FF">FOTO</td>
    </tr>
<?php

while ($fila=mysql_fetch_assoc($resultado))
{
  echo "<tr>";
  echo   '<td style="border: 1px solid #0033CC" align="center" bgcolor="#CCFFFF">'.$fila[nombre].'</td>';
  echo   '<td style="border: 1px solid #0033CC" align="center" bgcolor="#CCFFFF">'.$fila[sexo]."</td>";
  echo  '<td style="border: 1px solid #0033CC" align="center" bgcolor="#CCFFFF">'.$fila[carrera]."</td>";
  echo  '<td align="center">'.'<img href="$fila[foto]""align="center">'.'</td>';
  echo   "</tr>";
}
?>
</table>
<?php


mysql_close($con);

?>

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

opera
Citar            
MensajeEscrito el 02 Dic 2010 12:43 pm
El tag <img> no tiene atributo "href", en todo caso has querido decir "src".
Por otro lado lo que está dentro del ciclo while sería mejor, por claridad y comodidad que lo pusieras así:

Código PHP :

 } ?>
<tr>
  <td style="border: 1px solid #0033CC" align="center" bgcolor="#CCFFFF"><?php echo $fila[nombre]; ?></td> 
  <td style="border: 1px solid #0033CC" align="center" bgcolor="#CCFFFF"><?php echo $fila[sexo]; ?></td>
  <td style="border: 1px solid #0033CC" align="center" bgcolor="#CCFFFF"><?php echo $fila[carrera]; ?></td>
  <td align="center"><img src="<?php echo $fila[foto]; ?>" alt="foto"></td>
</tr>
<?php } 

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Dic 2010 05:31 pm
Yo difiero con DriverOp.

Sin afan de realizar controversia, o desacreditar lo que el dice. Es cuestion de enfoques.

Ami en lo personal si se esta programando en PHP, me molesta ver una infinidad de etiquetas <?php ?> en un documento "HTML" (entre comillas) por que al final de cuentas termina siendo un archivo PHP, en lenguaje PHP.

En realidad para mi mas que ser claro, genera una cantidad de ruido visual el hacer eso.

Desde mi perspectiva es mucho mas claro y ordenado, ingresar el codigo en un var:string y despues hacer 1 solo echo, o inclusive hacer el puro echo de lo que se quiere. Aunque tampoco considero que meter un monton de echos sea lo mas corercto.

Desde mi perspectiva, (No tiene que ser la correcta) yo les expongo la metodología que yo utilizo.


Código PHP :

<?php 
 
while ($fila=mysql_fetch_assoc($resultado)) 
{ 
  echo "<tr> 
         <td style='border: 1px solid #0033CC' align='center' bgcolor='#CCFFFF'>
           {$fila['nombre']}
         </td> 
         <td style='border: 1px solid #0033CC' align='center' bgcolor='#CCFFFF'>
           {$fila[sexo']}
         </td> 
         <td style='border: 1px solid #0033CC' align='center' bgcolor='#CCFFFF'>
           {$fila[carrera']}
         </td>
         <td align='center'>
           <img src='{$fila['foto']}' align='center'>
         </td> 
       </tr>"; 
} 
?>


Si se fijan.

Yo no estoy abriendo y cerrando miles de echo ' '; ni siquiera un '. .' entre cada variable ni un monton de <?php ?>

Desde mi perspectiva es mucho mas claro, ademas funciona ya que como bien sabemos cuando un string esta entre comillas dobles, podemos ingresar las variables directamente y funciona, en este caso como es un array habra que ponerlo entre corchetes para que PHP lo pueda leer.

Es solo otra forma de hacerlo.

Otra cosa en el codigo original veo que estas uniendo strings como por ejemplo echo 'string'.'/'.'otro string'; , eso no tiene sentido tu string deberia formarse echo 'string / otro string';

En fin es mi humilde opinion.

Saludos

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 02 Dic 2010 06:07 pm
Otra cosa.

Lo siguiente es incorrecto:

Código PHP :

$var[nombre] 


Lo correcto es:

Código :

Código PHP :

$var['nombre'] 


para poderlo poner sin comillas tendria que ser un INT o Const.

Si lo dejan sin comillas, si funciona pero primero busca por la constante nombre, y genera un error E_NOTICE, y si llegases a trabajar con constantes podrías meterte en un buen problema

creo que ambos lo pasaron por alto

Saludos ;)

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 02 Dic 2010 07:21 pm
Como bien decis es una cuestión de persepectiva si usar o no la sintaxis alternativa de php

Código PHP :

<ul>
<?php foreach($todo as $item): ?>
<li><?=$item?></li>
<?php endforeach; ?>
</ul>

Desde mi óptica, si usas un IDE o un editor que diferencie con colores cada lenguaje, es mas facil de depurar el código si se usa la sintaxis alternativa.
Por otro lado lei (no se si será cierto) que poniendo todo en un String hace que el servidor trabaje más leyendo todo (incluido el html que no tendria que tocarlo ya que lo interpreta el navegador)

Saludos

Por GustavoV

Claber

136 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 02 Dic 2010 07:44 pm
Si eso dependerá tambien del IDE, por que al depurar el codigo, lo que te debe estar fallando es alguna variable, no el codigo HTML en si.

Si asi fuece, podría ser simple identificar el error con solo ejecutar el sitio y ver a partír de donde se ve mal el HTML, por algun tag mal escrito.

Pero en el caso que tuvieces una variable mal por ejemplo, en NetBeans te resalta en otro color las variables dentro de un string con doble comilla.

Estoy muy de acuerdo que si tienes problemas con html y no puedes identificar el error sin que el IDE te lo resalte con otro color, lo mejor será poner todo enter <?php y ?> aunque una alternativa a esto, es usar el plug in firebug de firefox, pero eso ya es otro tema.

Lo que mensionas de que al servidor le tarda mas tiempo interpretar el string, yo también lo leí y es algo en lo que estoy de acuerdo, pero por ejemplo habrá situaciones en la que tengas una página en la que la mayoria de tu codigo sea HTML, hablando de rendimiento quiza lo mejor sería combinar etiquetas.

Pero cuando realizas Applicaciones donde mayormente arrojas datos y procesos y el codigo HTML es menor, considero que no hay problemas de rendimiento.

Esto también dependera de si por ejemplo estas manejando clases, y tu clase no debá imprimir codigo al navegador, si no retornar datos no puedes utilizar

Código PHP :

class foo
  {
  function render()
    {
    return  ?> <html> </html><?php ;
    }
  }



Si por ejemplo intentas incluir xajax a tu codigo, estarías rompiendo con el medio de xajax y tu codigo tronaría como palomitas, ya que debes olvidarte de los echos y <?php ?> y es en donde yo me refiero que estamos programando en php


que sería algo como esto:

Código PHP :

class foo
  {
  function render()
    {
    $output = new xajaxResponse();
 
    $html = "<html></html>";

    $output->assign("div","innerHTML",$html);

    return  $output;
    }
  }


Te verías imposibilitado a utilizar <?php ?>

En fín

Les reitero que no estoy diciendo que como lo hacen este mal, si asi fuera... simplemente no funcionaria

Lo que yo digo es que cuando en realidad le entras de lleno a programar en PHP utilizar <?php ?> para salirte y utilizar sintaxis alterna puede ser visualmente erratico, puede romper tu codigo, etc etc etc..

Todo dependerá claro de las necesidades de cada quien.

Saludos ;)

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 02 Dic 2010 08:23 pm
muchos dan opiniones e incluso soluciones (pues el problema en si ya esta resuelto) ¿pero nadie se ha percatado de un pequeño detalle?

¡NO USA TEMPLATE! ¬¬ hace bastante tiempo hice este tutorial para hacer plantillas

O_O pone el estilo en el html eso es un asco ¡¡¡¡¡
etiquetas sin finalizar, etc....


bien, esto se haría del siguiente modo:
función controladora:

Código PHP :

$resultado = mysql_query("SELECT nombre, sexo, carrera, foto FROM datossemi", $con); 
include('./aplicasion/views/plantilla.php');
mysql_close($con); 

plantilla.php

Código HTML :

<table> 
   <tr> 
         <td class='t200'>NOMBRE</td> 
         <td class='t100'>SEXO</td> 
         <td class='t150'>CARRERA</td> 
         <td class='t100'>FOTO</td> 
   </tr> 
     <?php while ($fila=mysql_fetch_assoc($resultado)):  ?>
      <tr>
                  <td><?php echo $fila['nombre'] ?></td>
                  <td><?php echo $fila['sexo'] ?></td>
                  <td><?php echo $fila['carrera'] ?></td>
                  <td><img src="<?php echo $fila['foto'] ?>" /></td>
      </tr>
     <?php endwhile; ?>
</table> 


estilo.css

Código :

table{
      border: 1px solid #0033CC ;
}
td {
      border: 1px solid #0033CC ;
      text-align: center;
      background-color :  #CCFFFF;
}
th{
      height:40px;
      border: 1px solid #0033CC;
      background-color : #0033FF;
}
.t100{
      width: 100px;
}
.t150{
      width: 150px;
}
.t200{
      width: 200px;
}



en el caso de escribir sentencias de control (if, else, for, foreach, while, etc...) en un php mixto con html, como en el caso de las plantilla uso preferentemente la sintaxis de "sentencia: endsentencia" pues es mas facil visualizar el cierre de la etiqueta, en cambio cuando no hay html involucrado uso la normal "sentencia {}"

esto ultimo es cosa de gusto el resto aprendanlo ;)

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 02 Dic 2010 09:08 pm

jOina escribió:

Yo difiero con DriverOp.

Excelente! :)

jOina escribió:

Desde mi perspectiva es mucho mas claro y ordenado...

Desde la mía no xD.

Como han dicho antes, si usas un editor de código es más fácil ver dónde está lo estrictamente PHP de la forma que lo he hecho yo y es por eso que lo recomiendo.

Inyaka ha mencionado la solución ideal (desde mi perspectiva, ejem...): usar plantillas. Pero para alguien que comienza meterlo de lleno en ese berenjenal me parece demasiado. Al menos ahora sabe de la existencia de ellas...

Hay una tercera forma de hacer esto que nadie ha mencionado hasta ahora, usar sprintf().

Código PHP :

echo sprintf("<td>%s</td>",$dato['nombre']);

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Dic 2010 09:22 pm
lo ideal mi estimado DriverOp seria que usara algún framework y que programara OOP, pero eso sera para un próximo capitulo XD


además no solo se lo decía a rabulu, también a quien lo leyese ;)

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 02 Dic 2010 10:32 pm
Concuerdo compeltamente con inyaka respecto a poner el CSS dentro del td.

Por otro lado, para cualquier persona que le interese tener un codigo bien ordenado, estoy en pro de su comentario respecto a usar algun framework y programe OOP, en cuyo caso el uso de una plantilla puede ser muy eficiente.

Pero en el caso que alguien quiera por ejemplo expandir CodeIgniter con xajax, por fuerza habría que retornar codigo dentro de un string en cuyo caso, sería conveniente que tal persona tome en cuenta el beneficio de retornar cadenas enter doble comilla sin necesidad de estar abriendo cerrando, sin que esto les truene su codigo.

Y de esta manera prometo no volverme a desviar tanto del tema

:lol:

Happy coding :D

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 02 Dic 2010 10:56 pm
uso codeigniter mucho, de echo ahora estoy trabajando con el, y cuando uso ajax, las salidas también son con parte de la vista, es muy raro el caso en que se justifique poner html dentro de un string en php

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 02 Dic 2010 11:00 pm
dije xajax :lol: el cual siempre retornas en un string

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 02 Dic 2010 11:02 pm

Código PHP :


class foo 
  { 
  function render() 
    { 
    $output = new xajaxResponse(); 
  
    $html = "Algun codigo aqui"; 
 
    $output->assign("div_id","innerHTML",$html); 
 
    return  $output; 
    } 
  } 





Otra cosa, alguien podria decirme por que no puedo editar mis post? la verdad que se me olvida poner cosas y no me gusta estar poniendo mas de 1 :)

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 02 Dic 2010 11:18 pm

jOina escribió:


Otra cosa, alguien podria decirme por que no puedo editar mis post? la verdad que se me olvida poner cosas y no me gusta estar poniendo mas de 1 :)


¬¬ por que Freddie es un cabrón


XD también me molesta eso

lo que hago es citarme en otra pestala (boton central del mouse) y luegoborrar mi comentario, tambien edito el quote del bbcode

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 02 Dic 2010 11:37 pm
Chale habrá que aplicar ese truco por que si esta jodido no poder editar el post, para que no se arrepientan de lo que dicen :evil:


Bueno saquen otro tema para discutir pues :lol: en mi trabajo no me quieren poner a programar :cry:


:lol:

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 03 Dic 2010 12:02 pm

Inyaka escribió:

lo ideal mi estimado DriverOp seria que usara algún framework y que programara OOP, pero eso sera para un próximo capitulo XD

Será tema de discusión para otro momento.

Inyaka escribió:

además no solo se lo decía a rabulu, también a quien lo leyese ;)

Jaja!, por supuesto, por supuesto...

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.