Avatar billede gedekid Nybegynder
04. august 2011 - 15:29 Der er 8 kommentarer

Marker array indeholder data, men bliver ikke udskrevet

Hej eksperter,

jeg har stirret mig blind på et lille problem med en marker der indeholder data til et html template, men jeg kan ikke få data'ne ud, så jeg vil høre om der er en der kan se hvad jeg overser?

Jeg har i class.walls.php der extender class.main.php dette stykke kode:

$markers = array();
       
$theTxt = ($_GET["wall"] != "blank" || !isset($_GET["wall"])) ? "Vælg ny farve" : "Vælg farve";
           
$markers["###COLORS###"] = '<a href="#" onclick="return showCBox();" class="boxOpener">'. $theTxt .'</a>';

$markers["###COLORS###"] .= '<div class="colorBox">';

$markers["###COLORS###"] .= '<ul class="colorItems">';
           
while($row = mysql_fetch_array($sql)) {
           
$markers["###COLORS###"] .= '<li>';

$markers["###COLORS###"] .= '<p><a href="index.php?page=sw&room='. $_GET["room"] .'&floor='. $_GET["floor"] .'&wall='.$row["color"].'"><img src="images/walls/'. $row["color"] .'.jpg" width="100" height="50" /></a></p>';

$markers["###COLORS###"] .= '<p><a href="index.php?page=sw&room='. $_GET["room"] .'&floor='. $_GET["floor"] .'&wall='.$row["color"].'">'. $row["descr"] .'</a></p>';

$markers["###COLORS###"] .= '</li>';
}
           
$markers["###COLORS###"] .= '</ul>';
$markers["###COLORS###"] .= '</div>';
           
$this->GetMarkers($markers);

hvor jeg i class.main.php har GetMarkers funktionen:

function GetMarkers($markers = array()) {
       
foreach($markers as $key => $value) {
$this->markers[strtoupper($key)] = $value;
}
                       
return $this->markers;
}

der så skal smide array i et html template med denne:

function TemplateGenerator($template) {
               
/* Get content from the html template */   
$data = file_get_contents($template);
       
if(isset($this->markers)) {   
                   
/**************************************************
* Match each key in $this->markers array
* and replace with the correct value
***************************************************/
foreach($this->markers as $key => $value) {
                               
if(preg_match("/". preg_quote($key) ."/", $data, $matches)) {
$data = str_replace($key, $value, $data);
} else {
$data = $data;
}
}
           
Main::TxtOutput($data);
           
} else {
if(!empty($data)) {
echo $data;   
} else {
die("Der er sket en fejl med genereringen af siden");
}
}
}

Men $markers["###COLORS###"] bliver ikke udskrevet i min main.html selvom jeg har sat ###COLORS### i den som er det der skal replaces med min marker.

I min index.php har jeg sat $mark["###SITETITLE###"] = "Sidetitel"; som fint bliver udskrevet via

$main->GetMarkers($mark);
Avatar billede gedekid Nybegynder
04. august 2011 - 15:32 #1
Jeg skal lige tilføje at hvis jeg i function GetMarkers($markers = array()) laver en print_r($markers) så udskriver den alt hvad der er i $markers["###COLORS###"]
Avatar billede olebole Juniormester
04. august 2011 - 21:26 #2
<ole>

Begynd med at rykke din kode ind, så den bliver læselig

/mvh
</bole>
Avatar billede gedekid Nybegynder
05. august 2011 - 09:34 #3
Sorry.. Jeg prøver lige igen!

### KODE ###
$markers = array();
       
$theTxt = ($_GET["wall"] != "blank" || !isset($_GET["wall"])) ? "Vælg ny farve" : "Vælg farve";
           
$markers["###COLORS###"] = '<a href="#" onclick="return showCBox();" class="boxOpener">'. $theTxt .'</a>';

$markers["###COLORS###"] .= '<div class="colorBox">';

    $markers["###COLORS###"] .= '<ul class="colorItems">';
           
    while($row = mysql_fetch_array($sql)) {
                   
        $markers["###COLORS###"] .= '<li>';
       
        $markers["###COLORS###"] .= '<p><a href="index.php?page=sw&room='. $_GET["room"] .'&floor='. $_GET["floor"] .'&wall='.$row["color"].'"><img src="images/walls/'. $row["color"] .'.jpg" width="100" height="50" /></a></p>';
       
        $markers["###COLORS###"] .= '<p><a href="index.php?page=sw&room='. $_GET["room"] .'&floor='. $_GET["floor"] .'&wall='.$row["color"].'">'. $row["descr"] .'</a></p>';
       
        $markers["###COLORS###"] .= '</li>';
    }
           
    $markers["###COLORS###"] .= '</ul>';

$markers["###COLORS###"] .= '</div>';
           
$this->GetMarkers($markers);


### KODE SLUT ###


hvor jeg i class.main.php har GetMarkers funktionen:


### KODE ###

function GetMarkers($markers = array()) {
       
    foreach($markers as $key => $value) {
   
        $this->markers[strtoupper($key)] = $value;
    }
                       
    return $this->markers;
}


der så skal smide array i et html template med denne:


### KODE ###
function TemplateGenerator($template) {
               
    /* Get content from the html template */   
    $data = file_get_contents($template);
       
    if(isset($this->markers)) {   
                   
        /**************************************************
        * Match each key in $this->markers array
        * and replace with the correct value
        ***************************************************/
            foreach($this->markers as $key => $value) {
                                   
            if(preg_match("/". preg_quote($key) ."/", $data, $matches)) {
                  $data = str_replace($key, $value, $data);
            } else {
                $data = $data;
              }
        }
           
        Main::TxtOutput($data);
           
        } else {
            if(!empty($data)) {
            echo $data;   
        } else {
            die("Der er sket en fejl med genereringen af siden");
        }
    }
}

### KODE SLUT ###
Avatar billede gedekid Nybegynder
05. august 2011 - 10:29 #4
Jeg er kommet frem til at jeg tilsyneladende ikke var data fra class.main.php med i TemplateGenerator()

når jeg laver en

print_r($this->markers)


så har jeg kun mine manuelt satte markers som SITETILTE

Er der her omkring jeg laver ged?
Avatar billede olebole Juniormester
05. august 2011 - 10:54 #5
Du kan ikke bruge $this i if(isset($this->markers)) {   
. I stedet for $this skal du bruge instans-navnet, men jeg kan ikke udfra din kode se, hvad du præcist skal skrive
Avatar billede gedekid Nybegynder
05. august 2011 - 11:53 #6
Kan du give et eksempel hvis jeg må spørge dumt? :)
Avatar billede olebole Juniormester
05. august 2011 - 12:17 #7
$blabla = new DinKlasse();
$blabla->markers;
Avatar billede gedekid Nybegynder
05. august 2011 - 13:19 #8
Jeg fik det løst ved at at bruge self::$markers i stedet for this!

Men vil du lige smide et svar, så får du point for ulejligheden!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester