Empfehlungen: Erweiterte Suche

Code aus DB interpretieren

Fragen zur Konzeptionierung und womit man am besten anfäng? Hier rein...

Code aus DB interpretieren

Beitragvon spearhead » So 4. Jul 2010, 22:07

Hallo,

habe folgendes Problem. Ich habe in einer Datenbank Tabelle (MySQL) HTML-Code gespeichert, welcher in einer Spalte CONTENT mit dem Datentyp TEXT hinterlegt ist. Dieser wird in einer VIEW dann via FOREACH ausgegeben. Das funktioniert auch alles wunderbar. Leider stehe ich jetzt vor dem Problem dass ich leider ein wenig PHP Code zwischen dem HTML benötige, dieser aber bei der Ausgabe nicht interpretiert wird und somit PHP Anweisungen als Text ausgegeben anstatt interpretiert werden.

Hat jemand eine Idee wie ich das Problem umgehen kann?
spearhead
 
Beiträge: 26
Registriert: Do 7. Jan 2010, 22:30
CakePHP-Version: 1.3
OS: OSX

Re: Code aus DB interpretieren

Beitragvon mbrod » So 4. Jul 2010, 22:33

Wo kommt denn der "benötigte PHP-Code" her? Aus der Datenbank?
mbrod
 
Beiträge: 193
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Code aus DB interpretieren

Beitragvon spearhead » So 4. Jul 2010, 22:45

ja genau...der wäre dann zwischen dem HTML ganz wie üblich
Code: Alles auswählen

<?php

?>

 

ausgewiesen. Und genau hier liegt das problem. Dieser Code wird leider nicht interpretiert
spearhead
 
Beiträge: 26
Registriert: Do 7. Jan 2010, 22:30
CakePHP-Version: 1.3
OS: OSX

Re: Code aus DB interpretieren

Beitragvon mbrod » Mo 5. Jul 2010, 06:17

Und genau hier liegt das problem. Dieser Code wird leider nicht interpretiert

...sondern der php-Code wird mit <?php ... ?> als Text wiedergegeben?

Vielleicht postest Du mal eine kritische Stelle aus der Datenbank, und wie der Quelltext der angezeigten Seite aussieht. Da muss es ja irgendeine Differenz geben.
mbrod
 
Beiträge: 193
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Code aus DB interpretieren

Beitragvon spearhead » Mo 5. Jul 2010, 09:05

mbrod hat geschrieben:...sondern der php-Code wird mit <?php ... ?> als Text wiedergegeben?



Korrekt!






Code: Alles auswählen


nachzudenken.<br />
<em>&amp;quot;Traumhaft... atemberaubend... <br />
<?php
echo("hallo bla");
?>              
blubb
wunderschön...&amp;quot; </em>

 


So steht das in der DB beispielsweise.

Dieser Controller holt die zu der gewählten Sprache gehörigen Datensätze raus:


Code: Alles auswählen
<?
class LanguagesController extends AppController
{
  var $name = 'Languages';
  var $scaffold;

 function getLanguage($langType)
 {
 
 $conditions = array("Language.id" => $langType);
 
 
$vars = ( $this->Language->find('first',array('conditions'=>$conditions )));
$this->set('vars',$vars);

 
 }
 
 

}
?>
 


dazu die passende View:
Code: Alles auswählen


     <div id="container">
      <div id="header">
      <!-- Logo -->
     
      <?php
 
        foreach ($vars ['Logo'] as $print) {
        echo('<h1 id="logo" style="background: transparent url('.$print['logo_saving_path'].') no-repeat scroll 0 0;"></h1>'); 
        }
     
        ?>
               
        <br class="cl" />
      </div>
      <!-- Slider Start -->
      <div id="content_wrapper">
        <div id="content">
          <div id="slider_container">
         
            <?php
           
            foreach ($vars ['Tab'] as $todo) {
           
                echo(' <h2 id="about" class="slider_toggle" style="background: url('.$todo['tb_saving_path'].') no-repeat top left;"></h2>');
                echo(' <div class="slider_content">');
                echo $todo ['tb_content'];
                echo('</div>');
            }
   
            ?>

            </div>
          </div><br class="cl" />
        </div>
      </div>



 
spearhead
 
Beiträge: 26
Registriert: Do 7. Jan 2010, 22:30
CakePHP-Version: 1.3
OS: OSX

Re: Code aus DB interpretieren

Beitragvon Flo » Di 6. Jul 2010, 08:44

php code hat in einer Datenbank auch nichts zu suchen ;-) (zumindest nach allem was ich gelernt habe *G*)

was du machen könntest wäre mit wildcards arbeiten...

beispielsweise links in denen die "language_id" vorhanden sein soll...
Code: Alles auswählen
<a href="/text_in_jeder_sprache/%language_id%_%language_name%">Hier gibts Text in jeder Sprache</a>

da könnte man dann halt ein paar variablen in einem array bereithalten, die public ausgegeben werden dürfen...
Code: Alles auswählen

<?php
$public_vars = array();
$public_vars['language_id'] = 1;
$public_vars['language_name'] = 'de';

$content = '<a href="/text_in_jeder_sprache/%language_id%_%language_name%">Hier gibts Text in jeder Sprache</a>';

preg_match_all('@%(.*?)%@',$content,$matches,PREG_PATTERN_ORDER);
foreach ($matches[1] as $key => $value) {
    if (array_key_exists($value,$public_vars)) {
        $content = preg_replace('@'.$matches[0][$key].'@i',$public_vars[$value],$content);
    }
}
?>

die Ausgabe in dem Beispiel wäre
Code: Alles auswählen
<a href="/text_in_jeder_sprache/1_de">Hier gibts Text in jeder Sprache</a>


sollte das nicht in die Richtung deiner Planung gehen, bitte etwas genauer beschreiben was du machen willst ;)
Flo
 
Beiträge: 85
Registriert: Mi 11. Jun 2008, 20:48
Wohnort: Bielefeld
CakePHP-Version: 1.3
OS: Mac OSX 10.6


Zurück zu Konzeption und Vorgehensweise

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron