• twitter image
  • facebook image
  • youtube image
  • linkedin image
Language: CMS Made Simple Czech CMS Made Simple France CMS Made Simple Hungary CMS Made Simple Russia CMS Made Simple Netherlands

All times are UTC




Post new topic This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 
Author Message
 Post subject: [gelöst] Datenbankzugriff über Smarty
PostPosted: Tue Jun 29, 2010 7:20 am 
Nach 2 Tagen Im-Internet-Stöbern und Foren/Handbücher-Durchforsten bitte ich hier um Hilfe.
???
Mein Grundanliegen ist eine mehrsprachige Seite zu entwickeln. Genau genommen möchte ich eine fertige deutschsprachige Seite um weitere Sprachen erweitern.

Mein Lösungsansatz:
1. Es wird eine Tabelle in MySQL-DB angelegt und mit Textblöcken gefüllt (Die Spalten heißen: Block_id,de,en,ru,usw.) Das ist schon gelöst.
2. Im Content werden anstatt eines deutschen Textes UDT's platziert. Die UDT's sollen entsprechend der Sprachenauswahl aus der Datenbank einen entsprechenden Textblock rausholen und darstellen.
Abgesehen davon, dass noch Cookies und Sessions in Spiel kommen, kann ich bisher noch nicht meine Textbausteine aus DB in Content bringen.
Das ist die Klasse, über die ich mein Anliegen realisieren wollte:
Code:
<?php
class TextBausteine
{
  function Baustein($my_lang,$b_id)
  {
    $db =& $this->GetDB();
    $q = "SELECT ".$my_lang." FROM ".cms_db_prefix()."multilanguage WHERE block_id=".$b_id;
    $dbresult = $db->Execute( $q );
   $assign=$my_lang.$b_id;

    global $gCms;
    $smarty =& $gCms->GetSmarty();
    $smarty->assign($assign,$dbresult);
  }
}
   $test = new TextBausteine;
?>

Und das schrieb ich in meine UDT:
Code:
{$test->Baustein('de','185')}{$de185|sprintf}

Meine bisherige Versuche endeten mit einer Fehlermeldung:"Call to a member function Baustein() on a non-object"
Was mache ich falsch?


Last edited by LightFighter on Thu Jul 01, 2010 6:44 am, edited 1 time in total.

Top
   
 
Share On:
Share on Facebook Share on Twitter Share on Google+
 Post subject: Re: Datenbankzugriff über Smarty
PostPosted: Tue Jun 29, 2010 8:23 am 
Offline
Power Poster
Power Poster

Joined: Fri Sep 12, 2008 2:34 pm
Posts: 752
Location: Schweiz / Switzerland
Wenn ich deinen PHP Code richtig interpretiere, machst du beim Aufruf von $test->Baustein kein neues Objekt. Ich nehme mal an, dass er das Objekt $test nicht zur Verfügung hat. Du müsstest dieses so wie du es angedacht hast im $gCms ablegen, damit ist später zur Verfügung steht.

Hast du dir mal folgenden Thread angesehen:
http://forum.cmsmadesimple.org/index.php?topic=45131

Die Mehrsprachigkeit könnte sich recht einfach mit dem AdvancedContent Modul lösen lassen. Sicher einfacher als du es bisher angedacht hast, denke ich.

_________________
[this message is written with 100% recycled bits]


Top
  Profile  
 
Share On:
Share on Facebook Share on Twitter Share on Google+
 Post subject: Re: Datenbankzugriff über Smarty
PostPosted: Tue Jun 29, 2010 9:15 am 
Danke für die schnelle Antwort!

Entschuldige die doove Frage des Anfängers... Wie genau lege ich irgendwas in $gCms ab?

Die Variante mit AdvancedContent oder Babel muss ich genauer unter die Lupe nehmen. Scheint verlockend zu sein. Vielen Dank für den Hinweis.


Top
   
 
Share On:
Share on Facebook Share on Twitter Share on Google+
 Post subject: Re: Datenbankzugriff über Smarty
PostPosted: Tue Jun 29, 2010 10:56 am 
Offline
Power Poster
Power Poster

Joined: Fri Sep 12, 2008 2:34 pm
Posts: 752
Location: Schweiz / Switzerland
Du kannst im Objekt $gCms z.B. so eine Variable definieren:

Code:
$gCms->Agenda[entry] .= $entry;


Entsprechend für ein neues Objekt:

Code:
$gCms->bausteine = new TextBausteine;

_________________
[this message is written with 100% recycled bits]


Top
  Profile  
 
Share On:
Share on Facebook Share on Twitter Share on Google+
 Post subject: Re: Datenbankzugriff über Smarty
PostPosted: Thu Jul 01, 2010 6:35 am 
Halleluja! Ich bin erlöst!
Die Lösung war genauso simpel wie genial. Mein Gedankengebäude war viel zu kompliziert. Ich wollte doch ursprünglich eine Klasse erstellen, dann aus UDT auf die Methode dieser Klasse zugreifen und ihr gleich zwei Parameter übergeben, und erst dann, wenn die Methode eine Smarty-Variable initialisiert hat, wollte ich diese Variable im Content einsetzen. So ein Schwachsinn! Das geht doch viel einfacher: Den Datenbankzugriff, Verarbeitung der Ergebnisse und eine echo-Ausgabe in UDT direkt packen und Parameterübergabe definieren. Fertig. Ungefähr so:
Code:
$my_lang = $params['my_lang'];
$b_id = $params['b_id'];
$db = mysql_connect('localhost','User_name','password') or die("Verbindungsversuch fehlgeschlagen");
$dbank = mysql_select_db("db_name", $db) or die("Konnte die Datenbank nicht wählen.");
$dbresult = mysql_query("SELECT * FROM multilanguage WHERE block_id='".$b_id."'") or die("Anfrage nicht erfolgreich");

   while ($ausgabe = mysql_fetch_array($dbresult))
   {
   echo $ausgabe[$my_lang];
   }


Dann im Content einfach den Aufruf starten. In etwa so:
Code:
{baustein my_lang="en" b_id="322"}<br />
{baustein my_lang="en" b_id="321"}


Funktioniert. Jetzt muss ich noch irgendwie hinkriegen, dass Benutzer die Sprache selbst wählen kann. Vielen Dank für die Unterstützung, nockenfell!!!


Top
   
 
Share On:
Share on Facebook Share on Twitter Share on Google+
 Post subject: Re: Datenbankzugriff über Smarty
PostPosted: Thu Jul 01, 2010 7:46 am 
Offline
Power Poster
Power Poster

Joined: Fri Sep 12, 2008 2:34 pm
Posts: 752
Location: Schweiz / Switzerland
LightFighter wrote:
Funktioniert. Jetzt muss ich noch irgendwie hinkriegen, dass Benutzer die Sprache selbst wählen kann. Vielen Dank für die Unterstützung, nockenfell!!!


Das solltest du auch über ein UDT lösen können. Meine Überlegung dazu:

Das UDT fügst du im Menütemplate ein. Es generiert ein Text im Sinne von "?lang=de". Die Sprache des Nutzers kannst du auslesen und mal als Standard setzen. Die Sprache wird entweder in einer Session oder in einem Cookie gespeichert.

Wenn nun der Nutzer auf den Link "www.seite.de/seite.htm?lang=en" klickt (z.B. hinter der Flagge hinterlegt), wertest du das über ein $_GET['lang'] aus und passt die Werte in der Session an.

Im Template liest du nun die Session aus und generierst entsprechend den richtigen Content.

_________________
[this message is written with 100% recycled bits]


Top
  Profile  
 
Share On:
Share on Facebook Share on Twitter Share on Google+
Display posts from previous:  Sort by  
Post new topic This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
A2 Hosting