mostrar imagen segun datos encontrados en la base de datos dependiendo del valor

Hola a todos hago la siguiente consulta a ver si me podria ayudar.

Supongamos que tengo una tabla en la base de datos con el nombre de id_sexo el cual es un dato que se envia desde un select option donde al persona elije el sexo, por ejemplo Indefinido, Mujer o Hombre y este dato se guarda en la base de datos, pero ya luego de guardado en el archivo donde puedo ver los registros gardados quiero mostrarlo como se hace en los foros con una imagen que identifique el sexo y ya teniendo los codigos para mostrar los demas valores solo quisiera traer la imagen que corresponda a cada sexo guardado en el servidor por ejemplo en al ruta asi

/imagenes/indefinido.gif
/imagenes/Mujer.gif
/imagenes/iHombre.gif

<img src="aqui iria la ruta para traer la imagen segun el nombre guardado en la base de datos" >Como debo hacerlo?
Prueba así:

$generodb = mysql_query("SELECT id_sexo FROM `[COLOR="red"]tubasededatos[/COLOR]`.`[COLOR="red"]tabla[/COLOR]` WHERE [COLOR="red"]nick='$nick'[/COLOR]");

$genero = imagenes/indefinido.gif;

if ($generodb==Indefinido) {
$genero = /imagenes/indefinido.gif;
}

if ($generodb==Mujer) {
$genero = /imagenes/Mujer.gif;
}

if ($generodb==Hombre) {
$genero = /imagenes/Hombre.gif;
}

Y donde quieras mostrar el sexo de la persona, pones esto:
<img src="$genero" />

Recuerda primero que tienes que conectar a la base de datos y sustituir el primer código, el de $generodb, lo que está en rojo
Doodleo escribió:Prueba así:

$generodb = mysql_query("SELECT id_sexo FROM `[COLOR="red"]tubasededatos[/COLOR]`.`[COLOR="red"]tabla[/COLOR]` WHERE [COLOR="red"]nick='$nick'[/COLOR]");

$genero = imagenes/indefinido.gif;

if ($generodb==Indefinido) {
$genero = /imagenes/indefinido.gif;
}

if ($generodb==Mujer) {
$genero = /imagenes/Mujer.gif;
}

if ($generodb==Hombre) {
$genero = /imagenes/Hombre.gif;
}

Y donde quieras mostrar el sexo de la persona, pones esto:
<img src="$genero" />

Recuerda primero que tienes que conectar a la base de datos y sustituir el primer código, el de $generodb, lo que está en rojo


Ok he hecho lo siguiente ya que tengo creado algunos codigos.

<?php

$id=$_GET["id"];
$connect = mysql_connect("rererere","arererer","rerere");
mysql_select_db("rererreree",$connect);
$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'");
$genero = files/unknown.gif;
if ($generodb==Desconocido) {
$genero = files/unknown.gif;
}
if ($generodb==Mujer) {
$genero = files/female.gif;
}
if ($generodb==Hombre) {
$genero = files/male.gif;
}
while($row=mysql_fetch_array($result))
{?>

Asi obtengo los resultados para los otros campos:

nombre: <?php echo $row['nombres'];?>
Apellidos: <?php echo $row['apellidos'];?>
Sexo: <img src="$genero" style="margin-bottom: 5px;"> aqui puse el codigo de buscar la imagen.


ahora veo un error que dice lo siguiente:


Warning: Division by zero in /home/erererere/public_html/sitioweb/contacto.php on line 152

que es esta: $genero = files/unknown.gif;
El problema es que al poner la barra diagonal, piensa que estás diviendo la palabra files entre unknown (Lo mismo pasará con el de Mujer y Hombre) y eso no da valor (No se puede dividir una palabra xD)

Prueba a dejar el código así:
<?php 

$id=$_GET["id"]; 
$connect = mysql_connect("rererere","arererer","rerere"); 
mysql_select_db("rererreree",$connect); 
$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'");
$genero = files\"/\"unknown.gif;
if ($generodb==Desconocido) {
$genero = files\"/\"unknown.gif;
}
if ($generodb==Mujer) {
$genero = files\"/\"female.gif;
}
if ($generodb==Hombre) {
$genero = files\"/\"male.gif;
}
while($row=mysql_fetch_array($result)) 
{?>

En fin, el error es ese, pero la solución no creo que funcione, pero por probar...
Da el siguiente error:

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/------------- linea 152

Parse error: syntax error, unexpected '"' in /home/------------- linea 152

$genero = files\"/\"unknown.gif;
Lo que suponía jeje

Y si pruebas poniendo las imágenes en el mismo directorio del archivo, y pones esto de código?
<?php 

$id=$_GET["id"]; 
$connect = mysql_connect("rererere","arererer","rerere"); 
mysql_select_db("rererreree",$connect); 
$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'");
$genero = unknown.gif;
if ($generodb==Desconocido) {
$genero = unknown.gif;
}
if ($generodb==Mujer) {
$genero = female.gif;
}
if ($generodb==Hombre) {
$genero = male.gif;
}
while($row=mysql_fetch_array($result)) 
{?>

Y donde quieras ponerlo, pones: <img src="$genero" />
Entonces, donde tienes que poner el link, ponlo así, todo este código:

<?php

$connect = mysql_connect("rererere","arererer","rerere"); 
mysql_select_db("rererreree",$connect); 
$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'");
$genero = unknown.gif;
if ($generodb==Desconocido) {
$genero = unknown.gif;
}
if ($generodb==Mujer) {
$genero = female.gif;
}
if ($generodb==Hombre) {
$genero = male.gif;
}

echo "<img src='$genero' />";

?>
He hecho una prueba a modo de ver si funciona, en las propiedades de la imagen se muestra algo asi unknowngif si el punto y veo que aunque cambie el sexo se queda igual.

Por otra parte tengo una duda respecto a esta parte

id_sexo FROM contactos where id='$id'"); aqui que es lo que debe ir por si acaso esta parte este mal
Hola:

Lo que pasa es que estan comparando valores erróneos. Los archivos deben estar entre comillas simples o dobles:

<?php

$connect = mysql_connect("rererere","arererer","rerere"); 
mysql_select_db("rererreree",$connect); 
$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'");  // Aquí estas preguntando a la base de datos: "selecciona la columna id_sexo de la tabla contactos donde la columna id sea idéntico al contenido de la variable $id. Si las columnas existen en la tabla, entonces esta bien.
$genero = "unknown.gif";
if ($generodb == "desconocido") {
$genero = "unknown.gif";
}
if ($generodb == "mujer") {
$genero = "female.gif";
}
if ($generodb == "hombre") {
$genero = "male.gif";
}

// Si es hombre (male), entonces, en el código fuente de la página, se mostrará <img src="male.gif" />
echo "<img src='$genero' />";

?>

Debes tener en cuenta que, en este caso, las imágenes tendrán que estar en la raíz del sitio, o sea, la url sería http://www.misitio.com/male.gif. La mejor forma de especificar la ruta es hacer lo siguiente:

<?php

$connect = mysql_connect("rererere","arererer","rerere"); 
mysql_select_db("rererreree",$connect); 
$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'");  /* Aquí estas preguntando a la base de datos: "selecciona la columna id_sexo de la tabla contactos donde la columna id sea idéntico al contenido de la variable $id. Si las columnas existen en la tabla, entonces esta bien. */

/* Si no quieres que las imagenes esten en la raíz del sitio, sino en una carpeta, entonces tienes que añadir la ruta: $genero = base_url() . "carpeta_uno/sub_carpeta/sub_carpeta/carpeta_imagenes"; */
$genero = base_url();
if ($generodb == "mujer") {
 $genero .= "unknown.gif";
}
else if ($generodb == "hombre") {
	$genero .= "male.gif";
}
else {
  $genero .= "unknown.gif";
}

// Ahora en lugar de mostrar solo el nombre de la imágen, se mostrará toda la ruta: http://www.misitio.com/male.gif.
echo "<img src='$genero' />";

/**
   *  Esta función devuelve una cadena de texto que contiene la url base del sitio web, de forma 
   *  http://dominio:puerto/
   */
function base_url() {
  $url = "http";

  if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
      $url .= 's';

    $url .= '://';
    $url .= $_SERVER['SERVER_NAME']. ':' .$_SERVER['SERVER_PORT'];

    return $url . "/";
}

?>

Saludos.
Viniendo de skaparate seguro que funciona, pero bueno, voy mejorando mi PHP jajaja

Saludos!
bueno voy a probar porque ya con tanto codigo estoy con la cabeza mal que no se como hacer tantas cosas jajas
probe con el primer caso propuesto pero la imagen no cambia, se muestra bien la de desconocido pero aunque cambie el valor sigue igual la imagen.
Las opciones del género en la base de datos, cómo están escritas? Tienen la primera letra mayúscula?

En esta parte:
if ($generodb == "[COLOR="red"][B]desconocido[/B][/COLOR]") {
$genero = "unknown.gif";
}
if ($generodb == "[COLOR="red"][B]mujer[/B][/COLOR]") {
$genero = "female.gif";
}
if ($generodb == "[COLOR="red"][B]hombre[/B][/COLOR]") {
$genero = "male.gif";
}

Fíjate que lo que está en rojo y negrita está tal cual está en la base de datos
Doodleo escribió:Las opciones del género en la base de datos, cómo están escritas? Tienen la primera letra mayúscula?

En esta parte:
if ($generodb == "[COLOR="red"][B]desconocido[/B][/COLOR]") {
$genero = "unknown.gif";
}
if ($generodb == "[COLOR="red"][B]mujer[/B][/COLOR]") {
$genero = "female.gif";
}
if ($generodb == "[COLOR="red"][B]hombre[/B][/COLOR]") {
$genero = "male.gif";
}

Fíjate que lo que está en rojo y negrita está tal cual está en la base de datos

si estan en Mayuscula Inicial pero eso lo note y lo arregle, las imagenes no cambian y creo que se debe a que aqui dice:
$genero = "unknown.gif";

por lo tanto aunque haya un if creo que siempre sera la misma imagen del primer caso.
Prueba con este:
<?php

$id = $_GET[id];

$connect = mysql_connect("rererere","arererer","rerere"); 
mysql_select_db("rererreree",$connect); 
$result=mysql_query("select * from contactos where id=$id",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id=$id");

if (mysql_num_rows($generodb)) {

   while ($qry = mysql_fetch_array($generodb)) {

$genero = "unknown.gif";
if ($generodb == "Desconocido") {
$genero = "unknown.gif";
}
if ($generodb == "Mujer") {
$genero = "female.gif";
}
if ($generodb == "Hombre") {
$genero = "male.gif";
}


// Si es hombre (male), entonces, en el código fuente de la página, se mostrará <img src="male.gif" />
echo "<img src='$genero' />";

?>
Comparto nuevamente el codigo completo como lo estoy poniendo donde marcare algo que no quiero que se quede y por eso debe estar dando ademas error.

<?php

$id=$_GET["id"];
$connect = mysql_connect("mysql5.000webhost.com","a4228696_sistema","sistema1");
mysql_select_db("a4228696_sistema",$connect);
$result=mysql_query("select * from contactosaseguradora where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id=$id");
if (mysql_num_rows($generodb)) {
while ($qry = mysql_fetch_array($generodb)) {
$genero = "unknown.gif";
if ($generodb == "Desconocido") {
$genero = "unknown.gif";
}
if ($generodb == "Mujer") {
$genero = "female.gif";
}
if ($generodb == "Hombre") {
$genero = "male.gif";
}
// Si es hombre (male), entonces, en el código fuente de la página, se mostrará <img src="male.gif" />
echo "<img src='$genero' />";
?>
while($row=mysql_fetch_array($result))
{
?>


recuerda que tengo que mostrar otros datos y lo que he estado mostrando en realidad con el echo lo he estado haciendo en un lugar donde en realidad no va colocado el de mostrar imagen sino que debe quedar en otro lugar debajo de while($row=mysql_fetch_array($result))
{
?>
que es donde tengo todos los demas codigos (ver archivo enviado)
Parse error: syntax error, unexpected $end in /home/

on line 262

la linea 262 es por otro codigo que tengo ya al final de todo el codigo que esta asi:


<?php
}
mysql_free_result($result);
mysql_close($connect);
?>

aqui marca pero aqui no hay nada.

</body></html>
No me había dado cuenta, pero estas cometiendo el mismo error que cometió Doodleo en otro post :P. Al ejecutar la consulta, tu estas extrayendo todos las columnas de la base de datos, por lo que la variable $generodb no contiene un único valor, sino un arreglo de varios valores, entonces, para que funcione (teóricamente XD), tienes que escribir en cada if lo siguiente:

if ($generodb['columna'] == "Desconocido") {
$genero = "unknown.gif";
}
if ($generodb['columna'] == "Mujer") {
$genero = "female.gif";
}
if ($generodb['columna'] == "Hombre") {
$genero = "male.gif";
}

donde columna es el nombre de la columna que contiene el valor Desconocido, Hombre o Mujer en la base de datos (imagino que en la base de datos se llama genero o sexo).
skaparate escribió:No me había dado cuenta, pero estas cometiendo el mismo error que cometió Doodleo en otro post :P. Al ejecutar la consulta, tu estas extrayendo todos las columnas de la base de datos, por lo que la variable $generodb no contiene un único valor, sino un arreglo de varios valores, entonces, para que funcione (teóricamente XD), tienes que escribir en cada if lo siguiente:

if ($generodb['columna'] == "Desconocido") {
$genero = "unknown.gif";
}
if ($generodb['columna'] == "Mujer") {
$genero = "female.gif";
}
if ($generodb['columna'] == "Hombre") {
$genero = "male.gif";
}

donde columna es el nombre de la columna que contiene el valor Desconocido, Hombre o Mujer en la base de datos (imagino que en la base de datos se llama genero o sexo).

Ok entonces como pongo el codigo nuevamente como habias propuesto? asi?

$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'"); // Aquí estas preguntando a la base de datos: "selecciona la columna id_sexo de la tabla contactos donde la columna id sea idéntico al contenido de la variable $id. Si las columnas existen en la tabla, entonces esta bien.
if ($generodb['columna'] == "Desconocido") {
$genero = "unknown.gif";
}
if ($generodb['columna'] == "Mujer") {
$genero = "female.gif";
}
if ($generodb['columna'] == "Hombre") {
$genero = "male.gif";
}

// Si es hombre (male), entonces, en el código fuente de la página, se mostrará <img src="male.gif" />
echo "<img src='$genero' />";
Así mismo, solo que cambiando 'columna' por el nombre que tiene en la base de datos.
skaparate escribió:Así mismo, solo que cambiando 'columna' por el nombre que tiene en la base de datos.

y que pasaria si quiero colocar esto en otro lugar que no sea ahi?

// Si es hombre (male), entonces, en el código fuente de la página, se mostrará <img src="male.gif" />
echo "<img src='$genero' />";

ya que tengo debajo un codigo mas para poder mostrar los otros resultados tal como expuse en un principio.

while($row=mysql_fetch_array($result))
{
?>
Simplemente cortalo y pégalo donde quieres que aparezca. El único problema que se puede presentar es si tienes una variable con el mismo nombre ($genero) dentro del otro while()....

<?php

$id=$_GET["id"];
$connect = mysql_connect("rererere","rererere","rerere");
mysql_select_db("a4228696_sistema",$connect);
$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'"); // Aquí estas preguntando a la base de datos: "selecciona la columna id_sexo de la tabla contactos donde la columna id sea idéntico al contenido de la variable $id. Si las columnas existen en la tabla, entonces esta bien.
if ($generodb['id_sexo'] == "Desconocido") {
$genero = "unknown.gif";
}
if ($generodb['id_sexo'] == "Mujer") {
$genero = "female.gif";
}
if ($generodb['id_sexo'] == "Hombre") {
$genero = "male.gif";
}
// Si es hombre (male), entonces, en el código fuente de la página, se mostrará <img src="male.gif" />
//aqui no puedo ponerla solo la ponia para ver si se muestra pero no se muestra
while($row=mysql_fetch_array($result))
{
?>


b>Puesto:</b> <?php echo $row['id_puesto'];?><br>
<b>Ciudad:</b> <?php echo $row['id_ciudad'];?><br>
<b>ID:</b> 00000<?php echo $row['pid'];?><br>
<b>Usuario:</b> <?php echo $row['id_usuario'];?><br>
<b>Fecha de registro:</b> <?php echo $row['fecha'];?><br>

<b>Sexo:</b><?php echo "<img src='$genero' />"; ?><br>
<?php
}
mysql_free_result($result);
mysql_close($connect);
?>
Hare lo siguiente para evitar la confusion posteo el codigo que tengo

<?php

$id=$_GET["id"];
$connect = mysql_connect("rererere","rererere","rerere");
mysql_select_db("a4228696_sistema",$connect);
$result=mysql_query("select * from contactos where id='$id'",$connect);
$generodb = mysql_query("SELECT id_sexo FROM contactos where id='$id'"); // Aquí estas preguntando a la base de datos: "selecciona la columna id_sexo de la tabla contactos donde la columna id sea idéntico al contenido de la variable $id. Si las columnas existen en la tabla, entonces esta bien.
if ($generodb['id_sexo'] == "Desconocido") {
$genero = "unknown.gif";
}
if ($generodb['id_sexo'] == "Mujer") {
$genero = "female.gif";
}
if ($generodb['id_sexo'] == "Hombre") {
$genero = "male.gif";
}
// Si es hombre (male), entonces, en el código fuente de la página, se mostrará <img src="male.gif" />
echo "<img src='$genero' />"; //aqui no puedo ponerla solo la ponia para ver si se muestra pero no se muestra
while($row=mysql_fetch_array($result))
{
?>


b>Puesto:</b> <?php echo $row['id_puesto'];?><br>
<b>Ciudad:</b> <?php echo $row['id_ciudad'];?><br>
<b>ID:</b> 00000<?php echo $row['pid'];?><br>
<b>Usuario:</b> <?php echo $row['id_usuario'];?><br>
<b>Fecha de registro:</b> <?php echo $row['fecha'];?><br>

<b>Sexo:</b> aqui es donde quiero que se vea la imagen<br>
//aqui ya cierro la consulta sin esto me daria un error.

<?php
}
mysql_free_result($result);
mysql_close($connect);
?>

no muestra nada y con chrome solo me sale que es el id de la web pero no ninguna imagen.
¿Tienes el sitio en un servidor en el que se pueda ver el sitio? Envíame el código para revisarlo.