Foros
Modificación if
Autor Fecha: 15 de Septiembre del 2007 a las 11:12:40   Descripción: Ninguna
Sin avatar
Sexo: Masculino
Mensajes: 344
Hola, quiero hacer que cuando en un juego hayan puesto de votos de media un 9 o más, en vez de salir en letra, salga la imagen que yo quiero, igual que si le han puesto un 8 o un 7.

Alguien me ayuda?

Gracias.
Individual Perfil Privado
Autor Fecha: 15 de Septiembre del 2007 a las 12:04:05   Descripción: Ninguna
Sin avatar
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1278
Nada que ver el título con el post, ni siquiera se necesita la sentencia if. Un mejor título sería «sustituir numeros por imagenes».

Ahora al problema. Supongo que quieres que en lugar de que aparezcan numeros textuales, aparezcan imagenes representando dichos numeros. No se que tipo de imagenes sean, pero simplemente tendrías que enumerarlas y acceder a ellas mediante la puntuación.

Supongo que eso ya lo hiciste, pero tienes problemas cuando la puntuación tiene decimales, seria dificil representar todos los numeros enteros y todos los decimales.

Obviamente se podría hacer algo, para sustituir los numeros por imagenes, y que dichas imagenes creen cualquier combinación de numeros, sin importar si estos son enteros o no; ni tampoco el número de dígitos.

También se podría crear la imagen dinámicamente, usando la libreria GD.

Pero bueno, una solución mucho más sencilla, manejando números enteros, y con solo 10 imagenes (o menos), sería redondeando la cifra y eso se puede hacer mediante la función ceil().

Como no me diste ningún código, haré uno yo, a modo de ejemplo:

Código PHP
<?php
echo '<img src="modules/'.$module_name.'/imagenes/'.ceil($row['puntos']).'.gif" alt="" />';
?>

Como verás, solo tienes que modificar la parte donde se muestra la puntuación y ya.

Saludos Muy bien
Individual Perfil Privado Website
Autor Fecha: 15 de Septiembre del 2007 a las 14:13:38   Descripción: Ninguna
Sin avatar
Sexo: Masculino
Mensajes: 344
Hola luis, si, lo que quiero hacer es no tener que hacer para cada número decimal, una imagen, probé a hacer lo que dices, pero sea cual sea la votación, sale siempre 0.gif, este es el código:

Código
echo "<div style='text-align: justify;'><center><b><span style='text-decoration: underline;'>$Nomb</span><br></b>";
echo "<br><img src="$Img" alt="$nombre - $Nomb" border="$imbrd">";
echo "<align><br>$Descr<div>";
if ($Med == 0.00 ) { $Med = "Ninguna"; }
else { $Med2 = "Ninguno"; };
echo "<hr><a href="juegos-flash-jugar-juego-$id-$transfertitle.html" target="_blank"><img src="images/jugar.gif"></a><b><div style='text-align: right;'><img src='modules/animaciones/imagenes/".ceil($row['Med']).".gif'>Puntuacion:$Med</b></div>";
CloseTable();
}if ($tbls){echo $tbls;}CloseTable();
$res = sql_query("select * from ".$prefix."_juegos where Cat='$tipo'", $dbi);
$numstories = sql_num_rows($res, $dbi);
$numpages = ceil($numstories / $njuegos);

Y, también quería decirte, que en la tabla consta de un valor llamado Med, que hace la media de las puntuaciones, y otro llamado Vot, que muestra el número de votos que han sido realizados(sin hacer la media).

EDITO:Ya lo funcioné, de otra manera pero lo hice, ahora me gustaría que con una llamada al valor Vot, si tuviese 0, no pusiese nada de puntuación(ahora mismo si me la pone, como si le hubiesen dado un '0, ya que se fija en el valor Med, no en el Vot, aunque insista en decirle que se fije en el Vot.

En otras palabras, lo que quiero hacer es, que las animaciones que no se les haya asignado puntuación, no aparezcan como puntuadas un 0.

Este es el código:

Código
$transfertitle = str_replace (" ", "-", $Nomb);
echo "<div style='text-align: justify;'><center><b><span style='text-decoration: underline;'>$Nomb</span><br></b>";
echo "<br><img src="$Img" alt="$nombre - $Nomb" border="$imbrd">";
echo "<align><br>$Descr<div>";
if ($Vot == 0 ) { $Med2 = "o"; }
$Med2 = ceil ($Med);
echo "<hr><a href="animaciones-flash-ver-animacion-$id-$transfertitle.html" target="_blank"><img src="images/jugar.gif"><div style='text-align: right;'></a><b><img src="images/$Med2.gif"></b></div>";
CloseTable();
Saludos.
Este mensaje fue editado por última vez el 15 de Septiembre del 2007 a las 16:03:02 por Dreagnout.
Individual Perfil Privado
Autor Fecha: 15 de Septiembre del 2007 a las 17:37:26   Descripción: Ninguna
Sin avatar
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1278
Tu primer problema es obvio... estuviste buscando la media en la variable $row['Med'], cuando estaba en $Med. Tu solución tiene lineas obsoletas, pero bueno:

Código PHP
<?php

if ($Vot == 0 ) { $Med2 = "o"; }
$Med2 = ceil ($Med);
echo
"<hr><a href="animaciones-flash-ver-animacion-$id-$transfertitle.html" target="_blank"><img src="images/jugar.gif"><div style='text-align: right;'></a><b><img src="images/$Med2.gif"></b></div>";

?>

Critica constructiva: Le das un valor a una variable, dependiendo de una condición y después la vuelves a definir, sin importar el valor previo. Por lo que la línea del condicional, esta de más. Después encierras entre negritas una imagen, es ilógico ya que la etiqueta bold fue hecha solo para darle formato al texto. Y hay mas errores, como justificar algo centrado (alineación sobre alineación). La programación no solo es conocimiento, también conlleva lógica; y esa falta de lógica, suele ocasionar problemas.

Ahora con respecto al segundo problema, supongo que quieres ocultar totalmente la imagen de la puntuación, cuando haya cero votos. El código sería el siguiente:

Código PHP
<?php

$transfertitle
= str_replace (" ", "-", $Nomb);

echo
"<div style='text-align: justify;'><center><b><span style='text-decoration: underline;'>$Nomb</span><br></b>";
echo
"<br><img src="$Img" alt="$nombre - $Nomb" border="$imbrd">";
echo
"<align><br>$Descr<div>";
echo
"<hr><a href="animaciones-flash-ver-animacion-$id-$transfertitle.html" target="_blank"><img src="images/jugar.gif"><div style='text-align: right;'></a>";

if (
$Vot > 0) {
    echo
"<img src="images/".ceil($Med).".gif"></div>";
}

CloseTable();

?>

Saludos Muy bien
Individual Perfil Privado Website
Autor Fecha: 15 de Septiembre del 2007 a las 17:56:23   Descripción: Ninguna
Sin avatar
Sexo: Masculino
Mensajes: 344
Ajá, oks, gracias Luis, ya me funciona, lo último que te quisiera pedir, es que ahora estoy modificando el bloque para añadirle lo que he aprendido, pero lo que pasa es, que la llamada de la bd no puede cojer todo lo que yo quiera, porque si no, salen los 10 últimas caricaturas pero sin el script, no se como explicarlo No entiendo.

Código
<?php
if (eregi("block-NSN_Topics_Title.php", $_SERVER['PHP_SELF'])) {
    Header("Location: ../index.php");
    die();}

global $font,$user, $galleryvar, $baseurl, $prefix, $adminpath, $dbi, $prefix, $db;

$blkh = 10; // LINEAS
$blkw = 20; // NUMERO DE LETRAS POR LINEA: 0 = TOTALIDAD DEL TITULO

$content = "<div id="slider3" class="contentslide" >";
   $result = $db->sql_query("select  gallid, gallname from ".$prefix."_gallery_categories order by gallid DESC limit 0,$blkh");
for($c = 1; list($gallid, $gallname) = $db->sql_fetchrow($result); $c++) {
$result = $db->sql_query("select img, pid, counter, date, name, rate, votes from ".$prefix."_gallery_pictures order by pid DESC limit 0,$blkh");
for($c = 1; list($img, $pid, $counter, $date, $name, $rate, $votes) = $db->sql_fetchrow($result); $c++) {
    $title2 = ereg_replace("_", " ", $name);
    $transfertitle = ereg_replace(" ", "-", $title2);
    $title = strtr($id, " ()", "_[]");
    if ($blkw > 0) { if (strlen($title2) > $blkw) { $title2 = substr($title2, 0, $blkw); } }
    
     ?>
    <script type="text/javascript">
<!--
function initImage(id) {
image = document.getElementById(id);
setOpacity(image, 0);
image.style.visibility = "visible";
fadeIn(id,0);
}
function fadeIn(objId,opacity) {
if (document.getElementById) {
obj = document.getElementById(objId);
if (opacity <= 100) {
setOpacity(obj, opacity);
opacity += 10;
window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100);
}
}
}
function setOpacity(obj, opacity) {
opacity = (opacity == 100)?99.999:opacity;
// IE/Win
obj.style.filter = "alpha(opacity:"+opacity+")";
// Safari<1.2, Konqueror
obj.style.KHTMLOpacity = opacity/100;
// Older Mozilla and Firefox
obj.style.MozOpacity = opacity/100;
// Safari 1.2, newer Firefox and Mozilla, CSS3
obj.style.opacity = opacity/100;
}

// -->
</script> <?php
   $content .= "<center><div class="contentdiv"><a href="caricaturas-caricatura-$pid-$transfertitle.html"><img id="slider3_$c" width='150' height='130' src='modules/My_eGallery/gallery/$gallname/$img' title="Fecha: $date" onLoad="initImage('slider3_$c');"><br><span style='text-decoration: underline;'>$name</span><br></a>Hits: $counter</div>";
}
}
      if ($votes == 0 ) { $Med2 = "o"; }
$Med2 = ceil ($rate);
$content .= "</div><b><div style='text-align: center;'><img src="images/$Med2.gif"></div><div style='text-align: right;'><a href="caricaturas.html"><img src='modules/animaciones/images/icon_add.gif'>Todas...</a></b></div>n";
$content .= "</div>n";
$content .= "<div class="pagination" id="paginate-slider3"></div>n";
$content .= "<script type="text/javascript">n";
$content .= "//ContentSlider("slider_ID" , opt_miliseconds_rotate)n";
$content .= "ContentSlider("slider3") //or ContentSlider("slider3", 3000) to auto rotate every 3 secondsn";
$content .= "</script>n";
?>

En este caso, los valores de votos son rate, y votes, los he añadido para que funcionen lo que pasa, es, que tengo que mover las " }
}", por debajo de
Código
if ($votes == 0 ) { $Med2 = "o"; }
$Med2 = ceil ($rate);
$content .= "</div><b><div style='text-align: center;'><img src="images/$Med2.gif"></div><div style='text-align: right;'><a href="caricaturas.html"><img src='modules/animaciones/images/icon_add.gif'>Todas...</a></b></div>n";
, para que a , le afecte la llamada, pero claro, cuando intento realizarlo, vale, si le afecta, pero el bloque se queda así:

http://img443.imageshack.us/img443/5751/imagen1uf5.png

en vez de con la forma habitual que tiene(la de 1,2,3,y ->).

Saludos!

PD:La próxima vez prometo fijarme en los errores tontos de alineación, me lío un poco con ellos Sonriente.

EDITONo entiendoe me olvidó decir que esto pasa con todos los bloques que son del mismo tipo(los de corredera de script, por llamarlo de alguna manera), y sigo creyendo que el problema, es, que al cojer la llamada un campo que notiene que cojer, pues se lia la que te puse en la imagen.

EDITO2:He descubierto que si lo pongo así no se repite, pero claro, en cuanto lo quiero cambiar de posición(div align, o cerrar algun div, pues pasa lo de la imagen(se que es por lo del consejo de cerrar alineaciones que me diste Muy Feliz, tienes razón, al final acabas teniendo problemas:
Código
if ($rate == 0 ) { $rate = "o"; }
$rate2 = ceil ($rate);
   $content .= "<center><div class="contentdiv"><a href="caricaturas-caricatura-$pid-$transfertitle.html"><img id="slider3_$c" width='150' height='130' src='modules/My_eGallery/gallery/$gallname/$img' title="Fecha: $date" onLoad="initImage('slider3_$c');"><br><span style='text-decoration: underline;'>$name</span><br></a>Hits: $counter<br><img id="slider3_$c" src='images/$rate2.gif'></div>";
   }
   }

Saludos.
Este mensaje fue editado por última vez el 15 de Septiembre del 2007 a las 18:58:22 por Dreagnout.
Individual Perfil Privado
Autor Fecha: 16 de Septiembre del 2007 a las 16:45:58   Descripción: Ninguna
Sin avatar
Sexo: Masculino
Mensajes: 344
Hola luis, ya lo resolví, ahora solo me falta resolver el otro post del código de seguridad Lengua.

Muchas gracias.
Individual Perfil Privado