Regresar   Foro de marcianitos.org > Marcianeando > Cajón de sastre

 
 
Old 03-ene-2007, 23:15   #1
Macarro
Administrador
 
Avatar de Macarro
Problema con PHP

Buenas, antes de nada quiero decir que no tengo NI IDEA DE PHP, por lo que igual lo que pregunto es lo más estúpido del mundo mundial. Bueno, al tema:

Resulta que estoy modificando la plantilla de la web para que muestre unas banderitas con la nacionalidad de cada uno; conseguido sólo en parte. El sistema que sigo es el siguiente:

1.- Creo un nuevo campo para los usuarios que es la nacionalidad elegida de un listado (España, Canadá, Argentina...)

2.- Ya sólo falta mostrar una imagen que se llame España.gif, Canadá.gif, etc...

Y ahí aparece el problema gordo, no puedo mostrar imágenes con Ñ, con tilde ni cosas raras...

Así que tras darle vueltas, la solución a la que llego es esta:

1.- Defino los campos como el código del país más su nombre:

.....ES - España
.....AR - Argentina
.....CA - Canadá

Y yo lo que quiero es separar los dos primeros caracteres de dichos strings para llamar a ES.gif, AR.gif, CA.gif, etc...

Pero como no tengo ni idea de php, pues no puedo hacer eso. Al parecer hay que usar la función substr() pero por alguna razón que desconozco, la plantilla no me pilla el php. Ahí va lo que pone:

Code:
<if condition="$post['field5']"><div><img src="images/flags/$post[field5].gif" align="absmiddle" alt="$post[field5]" title="$post[field5]"> 
<?php
echo "Hello world";
?>
 $post[field3]</div></if>
Como se ve, en el código no introduce el php con el < ?php clásico, sino que lo pone a capón. Y luego, cuando yo intento mostrar ese "Hello world", ni caso...

El string de país que hay que recortar es el $post[field5]. Y la parte de arriba funciona perféctamente, es decir que $post[field5].gif llama perféctamente a las imágenes.

Alguna ide de qué tengo que hacer???

Muchas gracias de antemano
   
Old 04-ene-2007, 01:42   #2
Bubu
Editor Marciano
Bueno, lo primero, yo tampoco tengo ni puta idea de PHP, pero cuando leo un código que ya existe me imagino fácilmente lo que hace, jiji.
Lo que veo raro es que primero usas $post['field5'], es decir, con el campo field5 entrecomillado, y luego usas $post[field5], es decir, con el campo field5 a pelo. Yo creo que es de esta segunda forma. Prueba a ver...
   
Old 04-ene-2007, 02:15   #3
Macarro
Administrador
 
Avatar de Macarro
Bueno, lo que dices es verdad, cagada mía, lleva comillas . Pero ese no es el problema porque ese código funciona, fíjate cómo yo ahora soy argentino. Y esto viene de que como he elegido Argentina como país, pues me abre Argentina.gif.

Pero el tema está en que el código php no me lo interpreta, si yo pongo:

Code:
echo "Hello World";
Debería mostrármelo y no hace nada. Y si lo dejo sin marcar como php, tampoco funciona porque cuando puse el comando subst (string,inicio,fin), no me reconoció el comando y diréctamente me escribió subst.
   
Old 04-ene-2007, 02:33   #4
Bubu
Editor Marciano
Pues rarro rarro rarro, porque la sintaxis PHP es correcta, a menos que :

- la página no tenga la extensión php
- no exista el servicio php corriendo en la ruta donde está alojada esa página
- las marcas <?php no estén insertadas en un entorno htm
- el php sea anterior a la versión 3

nu se me ocurren más poblemas...
   
Old 04-ene-2007, 02:59   #5
mike_myers
POKE Moderador,255
 
Avatar de mike_myers
La funcion para subcadenas es substr.
echo substr("Devuelve una subcadena de otra",9,3),"<br><br>";

en vez de <if>... </if> hazlo como si fuese C y metelo dentro de <?php .... ?>:
<?php
if (condition="$post['field5'))
{
<div>
<img src="images/flags/$post['field5'].gif" align="absmiddle" alt="$post['field5']" title="$post['field5']">
echo "Hello world";
$post['field3']
</div>
}
?>

Si no te deja incluir el substr en el path del fichero .gif prueba antes un
$temp=substr($post['field5'],1,2)
o un
$temp=substr($post['field5'],0,2)
-a ver cual te da los dos primeros caracteres-
y despues sera mas comodo continuar.
   
Old 04-ene-2007, 03:18   #6
Macarro
Administrador
 
Avatar de Macarro
Error en lo que me has puesto, mike, mira lo que devuelve el editor:

Code:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /web/htdocs/www.marcianitos.org/home../../../includes/adminfunctions_template.php(3596) : eval()'d code on line 51
   
Old 04-ene-2007, 11:14   #7
Bubu
Editor Marciano
Yo sigo diciendo que los campos field no van entrecomillados.
Además, prueba a poner $_post en lugar de $post (con guión bajo)
   
Old 04-ene-2007, 11:26   #8
Bubu
Editor Marciano
Edito: una cosita mais: ¿qué extensión tiene el fichero en cuestión?
   
Old 04-ene-2007, 13:53   #9
Macarro
Administrador
 
Avatar de Macarro
Lo de las comillas está arreglado, Bubu, lo he copiado tal y como está en otros lugares que vienen por defecto. El if lleva comillas y los otros no (ni idea). Funcionar, funciona porque yo tengo bandera Argentina y Mike tiene la de USA. Así que eso superado, ahora lo que hace falta es saber cómo usar php.

No estoy editando ningún archivo diréctamente sino desde el propio foro que da la opción. Añado un poco más de la plantilla a ver si sabéis algo:

Esta es la parte del avatar y demás.
Code:
<if condition="$show['avatar']">
				<div class="smallfont">
					&nbsp;<br /><a href="member.php?$session[sessionurl]u=$post[userid]"><img src="$post[avatarurl]" $post[avwidth] $post[avheight] alt="<phrase 1="$post[username]">$vbphrase[xs_avatar]</phrase>" border="0" /></a>
				</div>
			</if>
			
			<div class="smallfont">
				&nbsp;<br />
				<if condition="$post['field5']"><div><img src="images/flags/$post[field5].gif" align="absmiddle" alt="$post[field5]" title="$post[field5]"> $post[field3]</div></if>
				
<if condition="$post['age']"><div>$vbphrase[age]: $post[age]</div></if>
				<div>
					$vbphrase[posts]: $post[posts]
				</div>
				<if condition="$show['infraction']"><div>$vbphrase[infractions]: $post[warnings]/$post[infractions] ($post[ipoints])</div></if>
   
Old 04-ene-2007, 17:11   #10
Bubu
Editor Marciano
OK.

Prueba con esto:

Code:
<SCRIPT LANGUAGE="php"> echo ("Hello World"); </SCRIPT>