[ kukipei @ 02.08.2008. 11:34 ] @
Pozdrav svima.

Koristim sledeci kod:
Code:
header('Content-type: text/plain');
$doc = new DOMDocument();        
        
        if (!$doc->loadHTML("gfd"))
        {
            echo "ERROR LOADING HTML STRING";
            exit();
        }
        $output = $doc->saveHTML();
        echo $output;


i kao rezultat dobijem sledeci tekst:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>gfd</p></body></html>


E sad. Da li je moguce da za rezultat dobijem samo
Code:
gfd

bez ovih dodatnih tekstova <!DOCTYPE html PUBLIC...

Nadam se da ste me razumeli.
Pozdrav
[ Nemanja Avramović @ 02.08.2008. 11:59 ] @
Ajde prvo reci šta pokušavaš da uradiš i koja je to klasa DOMDocument (za šta služi)?

Ako hoćeš samo gfd, odradi echo "gfd";
[ Nikola Poša @ 02.08.2008. 12:06 ] @
Probaj ovako:
Code:

<?php
$doc = new DOMDocument();
$doc->loadHTML("<html><body><p>nekiTekst</p></body></html>");
echo $doc->saveHTML();
?>

Ja mislim da toj funkciji morash da prosledish neki html kod...

btw proveri dal' si taj tvoj kod stavio izmedju <?php i ?>...
[ kukipei @ 02.08.2008. 12:18 ] @
Hvala momci za pomoc

Citat:
Nemanja Avramović: Ajde prvo reci šta pokušavaš da uradiš i koja je to klasa DOMDocument (za šta služi)?
http://www.php.net/manual/en/class.domdocument.php

Citat:
raynor: Probaj ovako:
Code:

<?php
$doc = new DOMDocument();
$doc->loadHTML("<html><body><p>nekiTekst</p></body></html>");
echo $doc->saveHTML();
?>

Ja mislim da toj funkciji morash da prosledish neki html kod...

btw proveri dal' si taj tvoj kod stavio izmedju <?php i ?>...


dobio sam kao rezultat:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>nekiTekst</p></body></html>


e meni treba da mi izbaci u ovom slucaju samo
Code:
<html><body><p>nekiTekst</p></body></html>

znaci samo ono sto se nalazu kao argument u funkciji $doc->loadHTML(argument);
bez
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">


cini mi sa da sama funkcija generise taj dodatak:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
[ Nikola Poša @ 02.08.2008. 12:23 ] @
Problem je bio u funkciji header, treba da umesto plain napishesh html, ovako:
Code:
header('Content-type: text/html');

Onda ce da radi...
[ kukipei @ 02.08.2008. 12:34 ] @
Onda ce u browseru lepo da ispise tekst. Ali kada vidim source te strane on ce biti isti kao gore. Znaci sa onim
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>nekiTekst</p></body></html>

Hvala u svakom slucaju.
[ Nikola Poša @ 02.08.2008. 12:46 ] @
Citat:
kukipei:Ali kada vidim source te strane on ce biti isti kao gore.

Pa takav i treba da bude source, jer verovatno se po default-u generishu tagovi za pasus (<p></p>), pored onih html i body tagova...
[ kukipei @ 02.08.2008. 12:55 ] @
Verovatno se sami generisu. Problem mi sto ja sad hocu da tu stranicu (string) koju sam dobio pomocu javascripta i innerHTML funkcije ubacim u vec postojecu stranicu. Ispada da cu ja sad imati 2 zaglavlja na jednoj stranici. Originalni i drugi onaj generisan uz pomoc domdocument funkcija.
[ dakipro @ 02.08.2008. 13:04 ] @
Cutah do sad jer ne znam o cemu se radi ali mi radoznalost ne da mira.
Cemu to uopste sluze sto usput i ne radi?
Mislim, mora li na taj nacin da se kreiraju html tagovi ili sta vec, moze li to nekako drugacije da se izvede?
Iskreno, nisam se do sada susretao sa koriscenjem ove klase (a sumnjam i da cu ikada namerno) pa me zanima konkretan primer kako se koristi, tj cemu sluzi.
[ kukipei @ 02.08.2008. 13:24 ] @
evo saljem sve kodove pa ko voli nek izvoli:

parser.class.php
Code:
<?php
    //Make sure no one tries to access this file directly
    if(!defined("ROOT"))
        exit();

class parser {
    var $params;
    var $path = "templates/";

    function parser($parameters) {
        $this->params = $parameters;
    }

    function setParams($params) {
        $this->params = $params;
    }
    
    function parsePage($fileName) {
        $return='';
        $file = fopen($this->path.$fileName,"r");
        if (!$file) {
            error_log("File not found $fileName");
            return "";
        }
        while (! feof($file)) {
            $line = fgets($file,2048);
            /*if (preg_match('/\[%([\w\-]+?)%\]/e', $line))
            {
                foreach ($this->params as $key => $value)
                {
                    
                }
            }*/
    
            $return .= preg_replace('/\[%([\w\-]+?)%\]/e',"isset (\$this->params['\\1']) ? \$this->params['\\1'] : \"\"",$line);
        }
        return $return;
    }
    
    /**
     * Function for parsing a table.
     *
     * @param string $tableLabel name of table
     * @param 2D array $arr_data data to be added
     * @param string $strToParse string for parsing
     */

    function parseTable($tableLabel, $arr_data, $strToParse)
    {
        $doc = new DOMDocument();        
        
        if (!$doc->loadHTML($strToParse))
        {
            echo "ERROR LOADING HTML STRING";
            exit();
        }
        $xpath = new DOMXPath($doc);
        
        $hrefs = $xpath->evaluate("/html/body//table");
        foreach ($hrefs as $value)
        {
            $attribute = $value->getAttribute("name");
            if ($attribute != $tableLabel)
                continue;
            
            $tr = $value->getElementsByTagName("tr");
            $trLength = $tr->length;
            $arr_dataLength = count($arr_data);
            
            $indexTr = 0;
            while($trLength < $arr_dataLength )
            {
                $node = $tr->item($indexTr++)->cloneNode(true);
                $value->appendChild($node);
                $trLength++;
            }
            
            while($trLength > $arr_dataLength )
            {
                $node = $tr->item($trLength-1);
                $value->removeChild($node);
                $trLength--;
            }

            $indexTr = 0;
            
            foreach ($arr_data as $dataValues)
            {
                $trChildNodes = $tr->item($indexTr)->childNodes;
                $dataValues = array_values($dataValues);
                for ($indexTrChildNodes = 0;($indexTrChildNodes < $trChildNodes->length) && 
($trChildNodes->item($indexTrChildNodes)->nodeName != "#text"); $indexTrChildNodes++)
                {
                    $trChildNodes->item($indexTrChildNodes)->nodeValue = $dataValues[$indexTrChildNodes];
                }
                                
                $indexTr++;
            }
        }
        $output = $doc->saveHTML();
        echo $output;
    }
}
?>


search.php
Code:
<?php
//header('Content-type: text/plain');
require_once("../cfg.inc/include.php");
//print_r($_GET);
//exit();
extract($_GET);
$db_handler = new db_handler();
$smarty = new Smarty();
if ($check_bean_info == "false" && $check_roast_info == "false" && $check_blend_info == "false" && $check_taste_info == "false")
{
    exit("-1");
}

//bean info
if ($check_bean_info == "true")
{
    $sql_where = "";
    foreach ($_GET as $key=>$value)
    {
        $pos = strpos($key, "1_");
        if ($pos === false)
            continue;
        $table_column_name = str_replace("1_", "", $key);
        if ($value != "") $sql_where .= $table_column_name . " like '%" . $value . "%' and ";    
    }
    $sql_where = trim($sql_where, " and ");
    $sql_query = sprintf("select id, bean_name, archival, share, notes, wholesaler, crop_year, purchase_year, 
supplier, product_weight, shipping_weight, sale_price, bean_country, the_lot, member_id, ins_time 
    from 
    w2c_beans where %s", $sql_where);
    $result = $db_handler->get_result_db($sql_query);
    while($rs = mysql_fetch_assoc($result))
    {
        $items[] = $rs;
    }
}
//creating output
$template = "search_results_roast.tpl";
$param = array();
$parser = new parser($param);
$parser->path = "../templates/";
$strToParse = $parser->parsePage($template);
$parser->parseTable("search_results_1", $items, $strToParse);
//echo $strToParse;
?>


search_results_roast.tpl
Code:
<form name="search_frm" id="search_frm" method="get" action="modules/search.php" onsubmit=" submit_search_frm(); return false;">
<table align="center" width="1000px;"  bgcolor="#5E3718" bordercolor="#F19D3D" border="0">
<tr>
<td  align="center" style="font: bold 12px Verdana; padding-top:1em;"> 
SEARCH DATABASE FOR PARTICULAR BEAN-ROAST-BLEND combination</td>
</tr>
<tr>
        <td>
        <table border=1 name="search_results_1">
<tr>
<td bgcolor=silver class='medium'>id</td>
<td bgcolor=silver class='medium'>bean_name</td>
<td bgcolor=silver class='medium'>archival</td>
<td bgcolor=silver class='medium'>share</td>
<td bgcolor=silver class='medium'>notes</td>
<td bgcolor=silver class='medium'>wholesaler</td>
<td bgcolor=silver class='medium'>crop_year</td>
<td bgcolor=silver class='medium'>purchase_year</td>
<td bgcolor=silver class='medium'>supplier</td>
<td bgcolor=silver class='medium'>product_weight</td>
<td bgcolor=silver class='medium'>shipping_weight</td>
<td bgcolor=silver class='medium'>sale_price</td>
<td bgcolor=silver class='medium'>bean_country</td>
<td bgcolor=silver class='medium'>the_lot</td>
<td bgcolor=silver class='medium'>member_id</td>
<td bgcolor=silver class='medium'>ins_time</td></tr>
<tr>
<td class='normal' valign='top'>311</td>
<td class='normal' valign='top'>test_serch_bean_wert_23</td>
<td class='normal' valign='top'>0</td>
<td class='normal' valign='top'>1</td>
<td class='normal' valign='top'>&nbsp;</td>
<td class='normal' valign='top'>test</td>
<td class='normal' valign='top'>2008</td>
<td class='normal' valign='top'>2008</td>
<td class='normal' valign='top'>test</td>
<td class='normal' valign='top'>200kg</td>
<td class='normal' valign='top'>200kg</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>Brasil</td>
<td class='normal' valign='top'>(NULL)</td>
<td class='normal' valign='top'>8</td>
<td class='normal' valign='top'>2008-05-14 05:50:12</td>
</tr>
</table></td>
    </tr>
</table></form>



Ja stranicu search.php pozivam preko ajax.
Ta stranica nalazi rezultate u bazi i na osnovu rezultata i search_results_roast.tpl generise html tabelu.
Parsira search_results_roast.tpl uzimajuci obe vrste iz tabele na toj stranici i generise novu tabelu samo sa rezultatima iz search-a
(ako je potrebno dadaje nove vrste ili brise visak).
Tu tabelu (ajax odgovor) stavljam na bilo koje mesto na stranici koja je generisala ajax poziv.
Sve to lepo radi.
Medjutim nervira me to sto generise one elemente odozgo. Tako da ja sada na stranici imam dva html i body taga.
[ beep @ 02.08.2008. 16:22 ] @
Ako sam te dobro razumeo (prvi post)

Code:
echo preg_replace("/(.*<body><p>)|(<\/p><\/body>.*)/s","",$output);
[ kukipei @ 02.08.2008. 19:28 ] @
probao sam i to. Medjutim ostaje ono:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
[ beep @ 02.08.2008. 19:47 ] @
Evo, ja probo jos jednom i ostane samo 'gfd' , i kad se pogleda source pise 'gfd' ... To sto ti ostane je zato sto nije naveden modifikator 's' na kraju regexp-a ...Kod mene radi a nek proveri jos neko
[ kiklop74 @ 03.08.2008. 01:34 ] @
Mene zanima koji je to mentalni proces koji te je naveo da koristis DomDocument klasu za taj zadatak?

DomDocument je klasa namenjena manipulisanju/generisanju kompletnih XML ili HTML strana a ne HTML/XML isecaka. Zato se i generise header jer klasa dodaje automatski ono sto fali normalnom HTML dokumentu.

Ako hoces da dodas tag u dokument ili tekst onda je dovoljno da ga ispises sa komandom print ili echo i tacka.

PHP nije Javascript i stvari se ne rade na isti nacin.
[ kukipei @ 03.08.2008. 07:30 ] @
Citat:
beep: Evo, ja probo jos jednom i ostane samo 'gfd' , i kad se pogleda source pise 'gfd' ... To sto ti ostane je zato sto nije naveden modifikator 's' na kraju regexp-a ...Kod mene radi a nek proveri jos neko


U pravu si. Sad radi i kod mene. Ja sam probao bez "s". Bravo i hvala.
Pozdrav