Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/01/2012, 08:11
Avatar de dario_sanz
dario_sanz
 
Fecha de Ingreso: marzo-2010
Mensajes: 94
Antigüedad: 14 años, 1 mes
Puntos: 3
Pregunta Problema con str_replace() - aplicación php -

Hola colegas, les comento, estoy desarrollando una aplicación en php y necesito solucionar un problemita que ya me esta sacando canas verdes, hace un tiempo largo que estoy con esto y nada....
Resulta que mi aplicación esta distribuida en MODELO, VISTA y CONTROLADOR.... en el controlador están todas las librerías y hay un controlador que es quien comanda todas las lineas de códigos a ejecutar, incluyendo las librerías correspondientes....
En la vista no existe ningún tipo de código php, solo es html y txt.... para ello el controlador es quien muestra los datos de la base de datos en el html remplazando los txt que le coloco, por ejemplo...en el html coloco <div id="usuario">{USUARIO}</div> y en php controlador coloco un método que contenga str_replace() y que contenga los datos a remplazar ( str_replace($datosHTML,$datosController,$Cadena) )........ mi problema esta en que los datos extraídos desde la base de datos los muestra en el html, pero fuera del div, como que no entendiera que tiene que ir ubicado dentro del div que contiene {USUARIO}... habrá otra forma extraer datos desde la base de datos y remplazarlos en html, y que cumplan un perfecto orden dentro del div?


p/d =cabe aclarar que ese problema lo tengo cuando llamo los datos desde la base de datos y no cuando coloco una cadena simple "Hola mundo".


Para mas ayuda, colocare mis metodos:

PHP:

Código:
public function getTemplate($cadena, $code, $fill) {

        $archivo = "View/default/" . $fill . ".php";
        
         

         $remplazo = file_get_contents($archivo);

         $remplazo = str_replace($cadena, $code, $remplazo);

        
       $fp = fopen($archivo, "r");
$write = fputs($fp, $remplazo);
fclose($fp);
//esto es metodo de la libreria singleton

Controlador :

Código:
public function index() {


        $this->callLibrary("Singleton");
        $this->callLibrary("Template");

         $this->callMetod(new Template())->callView("header");

        $this->callMetod(Singleton::getInstacia())->getTemplate(
                array(
                    "{fecha}", //dato a remplazar en el html
                    "{titulo}",
                    "{detalle}"
                ),
                array(
                    $this->date(),
                    $this->post("titulo"), //dato remplazador
                    $this->post("detalle")),
                "content");//   archivo


        
        //siempre instanciando su clase podemos llamar al metodo
        // $this->callMetod(new Template())->callView("content");
        $this->callMetod(new Template())->callView("footer");
    }

HTML Contenido

Código:
<div id="main">

    <div id="content">
        <div id="title">{titulo}</div>
        <div id="fecha">{fecha}</div>
        <div id="detalle">{detalle}</div>

    </div>



</div>

Bueno gente espero que me puedan ayudar y muchas gracias por leer mi pregunta...saludos

Última edición por dario_sanz; 21/01/2012 a las 08:34