Foros del Web » Programando para Internet » PHP »

Problemas con mostrar email y web

Estas en el tema de Problemas con mostrar email y web en el foro de PHP en Foros del Web. Bueno tengo un formulario de un guestbook Tiene varios campos en los cuales esta nombre email url Bueno pido esos 3 datos pero lo principal ...
  #1 (permalink)  
Antiguo 21/11/2003, 17:26
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Pregunta Problemas con templates

Bueno tengo un formulario de un guestbook

Tiene varios campos en los cuales
esta
nombre
email
url

Bueno pido esos 3 datos pero lo principal es el nombre, si saltan el email y el url, no hay problema.

Mi problema es que al mostrar los datos lo tengo en una tabla.

Y lo que quiero hacer es que al mostrar email no aparezca asi :

mailto:

y en en el caso de la url

http://

Que solo muestre esos campos en caso esten llenos, mas no vacios.

Código PHP:
$nombre $dato[1];
    
$email $dato[2];
    
$url $dato[3];
    
$mensaje $dato[4];
    
$fecha $dato[5];

    
Template("tpl/tpl_mensajes.html");

    } 
el template es :
Código PHP:
<a href="mailto:{Email}">E-mail</a> | <a href="{URL}">Página Web</a> | Fecha : {Fecha

Que me recomiendan. Lo quiero es mostrar una imagen cuando este lleno el campo del email y una imagen de explorador cuando haya url.

Espero me puedan ayudar!
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 26/11/2003 a las 19:02
  #2 (permalink)  
Antiguo 21/11/2003, 22:39
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 14 años, 3 meses
Puntos: 0
no te enojes pero podrias explicarte mejor
  #3 (permalink)  
Antiguo 21/11/2003, 23:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé que sistema de templates usas .. pero sus métodos tendrá para definir {variables} en la template ... ademas que seguro que gestiona "bloques" de alguna forma.

El caso es que deberías definir un par de bloques en tu código PHP con los métodos que tenga tu motor de templates que uses para que bajo tu condicional tipo:

if (!empty($dato)){
// cargas/defines el bloque y parseas tus {variables} que use
} else {
// No haces nada o muestras el estado "no hay dato".
}

(en otros sistemas de templates .. tipo Smarty hasta se puede hacer ese tipo de "condiconales" en la própia template grácias a su psudo-lenguaje de programación que incorpora).

Si usas el motor de templates que viene con cierta aplicación prefabricada tipo phpBB o similares .. avisalo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 22/11/2003, 22:27
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Si uso templates

Este es parte del archivo funciones donde estan los templates

Código PHP:
function Template($fichero) {
        global 
$nombre$email$url$mensaje$fecha$nfirmas;
        
$template fopen($fichero"r");
        while(!
feof($template)) {
        
$buffer fgets($template4096);
        
$buffer str_replace("{Nombre}"$nombre$buffer);
        
$buffer str_replace("{Email}"$email$buffer);
        
$buffer str_replace("{URL}"$url$buffer);
        
$buffer str_replace("{Mensaje}"$mensaje$buffer);
        
$buffer str_replace("{Fecha}"$fecha$buffer);
        
$buffer str_replace("{Numero_Firmas}"$nfirmas$buffer);
        echo 
$buffer;
        }
        
fclose($template);
    return;
    } 
y este es el codigo donde me manda al template
Código PHP:
switch($accion) {

    case 
firmar:
    
Template("tpl/tpl_formulario.html");
    break;

    case 
publicar:

    
$fecha date("d-m-y H:i a");

    
$nombre trim($nombre);
    
$email trim($email);
    
$mensaje trim($mensaje);

    if(empty(
$nombre)) {
          
$error[] = $alerta[0];
    }
    if(
$email != "") {
         if (!
ereg("^[^@][email protected]([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,}$"$email)) {
            
$error[] = $alerta[1];
        }
    }
    if(empty(
$mensaje)) {
        
$error[] = $alerta[2];
    }

    
    if(
$FiltroGroserias == "SI") {
    for(
$i 0$i sizeof($palabrotas); $i++) {
    if(
ereg($palabrotas[$i], $nombre) OR ereg($palabrotas[$i], $email) OR ereg($palabrotas[$i], $mensaje)) {        
        
$error[] = $alerta[3];
    }
    }
    }

    if(
$error) {

    include(
"tpl/tpl_error.html");

    } else {

    
HTML();
    
Remplazar();
    
$mensaje ereg_replace("\r\n","<br>"$mensaje);

    
$fp fopen($FicheroId,"r");
    
$id fread($fpfilesize($FicheroId));
    
$id ++;
    
fclose($fp);

    
$fp fopen($FicheroId"w");
    
fwrite($fp$id);
    
fclose($fp);

    
$firma "$id|@|$nombre|@|$email|@|$url|@|$mensaje|@|$fecha|@|\n";
    
$fp fopen($FicheroBase"a");
    
fwrite($fp$firma);
    
fclose($fp);

    
Template("tpl/tpl_correcto.html");

    } 
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #5 (permalink)  
Antiguo 23/11/2003, 15:11
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
josemi, cluster amigos phperos, una manito :(
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #6 (permalink)  
Antiguo 24/11/2003, 07:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Gerald ..

Comprede que si usas un motor de templates .. tu código está fuera de contexto .. Si no vemos la classe completa/funciones que usa ese motor de templates como para ponerse a estudiarlo y ver que métodos definen bloques y en general como trabaja ese motor de templates .. es dificil aventurarse a dar un "código" que funcione...

A simple vista .. parece un "motor" de templates muyyy básico .. tanto que no disponde de definición de bloques en la plantilla .. Así que te va a tocar (si quieres seguir usandolo) asginar todo tu HTML que corresponda a un caso del IF .. o al otro caso (else) en

Código PHP:
if (isset($email)){
   
$buffer str_replace("{Email}"$email$buffer);
} else {
   
$buffer str_replace("{Email}""no tiene e-mail"$buffer);

pero, .. ese $email del $buffer debe de contener todo el HTML del mailto: o el href del link y sacar ese HTML de tu template para dejar sólo algo tipo {contacto} (y asignas o el URL o el e-mail ..) o no se si puedes mostrar ambos ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 24/11/2003 a las 07:32
  #7 (permalink)  
Antiguo 24/11/2003, 15:43
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
este es funciones.php

Código PHP:
<?
    
    
function HTML() {
        global 
$mensaje$nombre$email$url$tema$sms;
        
$mensaje str_replace("<","&lt",$mensaje);
        
$mensaje str_replace(">","&gt",$mensaje);
                        
$mensaje =  wordwrap($mensaje$sms ,"<br>",1); 
        
        
$nombre str_replace("<","&lt",$nombre);
        
$nombre str_replace(">","&gt",$nombre);
        
$email str_replace("<","&lt",$email);
        
$email str_replace(">","&gt",$email);
        
$url str_replace("<","&lt",$url);
        
$url str_replace(">","&gt",$url);
    return;
    }

        function 
Remplazar() {
        global 
$mensaje;
        
$mensaje str_replace("[:)]","<img src=\"img/sonrisa.gif\">"$mensaje);
        
$mensaje str_replace("[:(]","<img src=\"img/triste.gif\">"$mensaje);
        
$mensaje str_replace("[;)]","<img src=\"img/ginando.gif\">"$mensaje);
        
$mensaje str_replace("[8)]","<img src=\"img/ojotes.gif\">"$mensaje);
        
$mensaje str_replace("[:P]","<img src=\"img/lengua.gif\">"$mensaje);
        
$mensaje str_replace("[:D]","<img src=\"img/risa.gif\">"$mensaje);
        
$mensaje str_replace("[cool]","<img src=\"img/cool.gif\">"$mensaje);
        
$mensaje str_replace("[llorar]","<img src=\"img/llorando.gif\">"$mensaje);
        
$mensaje str_replace("[enojo]","<img src=\"img/enojado.gif\">"$mensaje);
        
$mensaje str_replace("[duda]","<img src=\"img/duda.gif\">"$mensaje);
        
$mensaje str_replace("[bien]","<img src=\"img/bien.gif\">"$mensaje);
        
$mensaje str_replace("[mal]","<img src=\"img/mal.gif\">"$mensaje);
    return;
    }

    
    function 
FatalError() {
        global 
$error;
        for(
$i 0$i sizeof($error); $i++) {
          echo 
"- $error[$i]<br>";
        }
    return;
    }

    
    function 
Template($fichero) {
        global 
$nombre$email$url$mensaje$fecha$nfirmas;
        
$template fopen($fichero"r");
        while(!
feof($template)) {
        
$buffer fgets($template4096);
        
$buffer str_replace("{Nombre}"$nombre$buffer);
        
$buffer str_replace("{Email}"$email$buffer);
        
$buffer str_replace("{URL}"$url$buffer);
        
$buffer str_replace("{Mensaje}"$mensaje$buffer);
        
$buffer str_replace("{Fecha}"$fecha$buffer);
        
$buffer str_replace("{Numero_Firmas}"$nfirmas$buffer);
        echo 
$buffer;
        }
        
fclose($template);
    return;
    }

    
$nfirmas count(file($FicheroBase));

        function 
Paginacion() {
        global 
$LimiteMensajes$Base;
        if(
$LimiteMensajes count($Base)) {
        
$Paginas count($Base) / $LimiteMensajes;
        echo 
"<b>Páginas : </b>";
        for(
$i 0$i $Paginas$i++) {
        echo 
"<a href=index.php?paginado=".$i $LimiteMensajes.">".( $i )."</a> ";
        }
        }
    return;
    }
?>

<script language="JavaScript">
<!--
function Smile(texto){
document.form.mensaje.value = document.form.mensaje.value + texto;
}
// -->
</script>
este es el index.php
Código PHP:
<?

    
include("config.php");
    include(
"funciones.php");

    
Template("tpl/tpl_arriba.html");

    switch(
$accion) {

    case 
firmar:
    
Template("tpl/tpl_formulario.html");
    break;

    case 
publicar:

    
$fecha date("d-m-y H:i a");

    
$nombre trim($nombre);
    
$email trim($email);
    
$mensaje trim($mensaje);

    if(empty(
$nombre)) {
          
$error[] = $alerta[0];
    }
    if(
$email != "") {
         if (!
ereg("^[^@][email protected]([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,}$"$email)) {
            
$error[] = $alerta[1];
        }
    }
    if(empty(
$mensaje)) {
        
$error[] = $alerta[2];
    }

    
    if(
$FiltroGroserias == "SI") {
    for(
$i 0$i sizeof($palabrotas); $i++) {
    if(
ereg($palabrotas[$i], $nombre) OR ereg($palabrotas[$i], $email) OR ereg($palabrotas[$i], $mensaje)) {        
        
$error[] = $alerta[3];
    }
    }
    }

    if(
$error) {

    include(
"tpl/tpl_error.html");

    } else {

    
HTML();
    
Remplazar();
    
$mensaje ereg_replace("\r\n","<br>"$mensaje);

    
$fp fopen($FicheroId,"r");
    
$id fread($fpfilesize($FicheroId));
    
$id ++;
    
fclose($fp);

    
$fp fopen($FicheroId"w");
    
fwrite($fp$id);
    
fclose($fp);

    
$firma "$id|@|$nombre|@|$email|@|$url|@|$mensaje|@|$fecha|@|\n";
    
$fp fopen($FicheroBase"a");
    
fwrite($fp$firma);
    
fclose($fp);

    
Template("tpl/tpl_correcto.html");

    }
    break;
    default:

    
$Base file($FicheroBase);
    
$Orden array_reverse($Base);

    if(empty(
$paginado)) {
        
$paginado 0;
    }

    
$Mostrar $paginado $LimiteMensajes;

    for (
$i $paginado$i count($Orden) AND $i $Mostrar$i++) {
        
$dato explode("|@|"$Orden[$i]);

    
$nombre $dato[1];
    
$email $dato[2];
    
$url $dato[3];
    
$mensaje $dato[4];
    
$fecha $dato[5];
                 
    
Template("tpl/tpl_mensajes.html");

    }

    echo 
"<table cellpadding='4' cellspacing='1' width='450' align='center' class='normal'>";
                     echo 
"<tr><td width='50%'>";
    
Paginacion();
    echo 
"</td><td width='50%' align='right'>";
    echo 
"<b><a href='index.php?accion=firmar'>Firmar libro</a></b>";
    echo 
"</td></tr></table>";

    }

    
Template("tpl/tpl_abajo.html");
?>
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #8 (permalink)  
Antiguo 24/11/2003, 15:45
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Como hacer lo que me dices cluster

y este es tpl_mensajes.html

Espero, pueda lograr lo que dije alla arriba.
En realidad si que soy terco

Código PHP:
<table cellpadding="4" cellspacing="1" align="center" class="tabla">
<
tr>
<
td class="filatitulo">{Nombre}</td>
</
tr>
<
tr>
<
td class="filacentro">{Mensaje}</td>
</
tr>
<
tr>
<
td class="filaabajo">
<
a href="mailto:{Email}">E-mail</a> | <a href="{URL}">Página Web</a> | Fecha : {Fecha}</td>
</
tr>
</
table>
<
br
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 24/11/2003 a las 15:48
  #9 (permalink)  
Antiguo 25/11/2003, 12:42
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
De acuerdo Mostre el codigo

Cluster, jose, mostre el codigo, y no me responden :( jajajajajja espero una manito amigos phperos, bueno todo el foro echeme una mano !!
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #10 (permalink)  
Antiguo 25/11/2003, 14:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Gerald .. ok .. mostrastes el código .. pero por mi parte te hice alguna sugerencia .. "lo probastes"? .. que entendistes de lo que intenté explicarte referente a que en tu {variable} vas a tener que usar todo el HTML que necesites y quitar esa referencia de tu template?...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 25/11/2003, 16:52
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Código PHP:
    $nombre $dato[1];
    
$email $dato[2];
    
$url $dato[3];
    
$mensaje $dato[4];
    
$fecha $dato[5];


if (isset(
$email)){
   
$buffer str_replace("{Email}"$email$buffer);
   
Template("tpl/tpl_mensajes.html");
} else {
   
$buffer str_replace("{Email}""no tiene e-mail"$buffer);
   
Template("tpl/tpl_sinEMAIL.html");


esto es lo que se me ha ocurrido :( espero no me haya equivocado
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #12 (permalink)  
Antiguo 26/11/2003, 19:00
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
me sale error , no esta bien, estoy a punto de dejar los templates y dejarlo asi :(
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #13 (permalink)  
Antiguo 27/11/2003, 06:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Gerald ... El problema no es que dejes los "templates" .. lo que deberías es cambiar de motor de templates. Para lo que quieres hacer ya se te ha quedado pequeño el motor de templates que usas. Buscate otro que puedas crear Bloques .. como por ejemplo NokTemplate, Smarty, PathTemplate .. etc ... (NokTemplate está en castellano).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 27/11/2003, 16:56
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
De acuerdo Vere como le hago

gracias cluster, tienes toda la razon este template basico se quedo corto para lo que quiero hacer,
voy a chequear el nok y luegos les cuento saludos y gracias a todos.
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
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 17:47.