Page 1 of 1

Benutzerdefiniertes Tag - Umlaut problem

Posted: Fri Jun 15, 2007 2:19 pm
by renke
Hallo ich versuche mit folgenden Code eine Art Telefonliste einzufügen.
Der Code funktioniert wenn er als iframe eingebunden wird. 
Warum funktioniert er als benutzerdefiniertes Tag nicht?  ???

Ich hab die Vermutung, dass es an Smarty liegt!
Kann mir da jemand weiterhelfen?

CMSMS v. 1.0.7

$myServer = "++++++++";
$myUser = "++++++";
$myPass = "++++++";
$myDB = "+++++++";

$s = @mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");

$d = @mssql_select_db($myDB, $s)
or die("Couldn't open database $myDB");

$query = "SELECT N_Name, N_Vorname, F_Txt, An_Hausruf, R_txt, G_txt, B_Txt, B_Langtext, D_Txt, An_Fernruf ";
$query .= "FROM AI_A_Orgplan ";
$query .= "WHERE B_Txt LIKE 'K%' ";
$query .= "ORDER BY D_Sort, D_Txt, B_Sort, B_Txt, F_Sort, F_Txt, N_Name, N_Vorname";

$result = mssql_query($query);
$numRows = mssql_num_rows($result);

echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";

function convertUmlaute($text){
   //DIE UMLAUTE WERDEN KONVERTIERT  /////
   $pattern1="/ä/";
   $replace1="ä";
   $text=preg_replace($pattern1,$replace1, $text);
   $pattern2="/ö/";
   $replace2="ö";
   $text=preg_replace($pattern2,$replace2, $text);
   $pattern3="/ü/";
   $replace3="ü";
   $text=preg_replace($pattern3,$replace3, $text);
   $pattern1a="/Ä/";
   $replace1a="Ä";
   $text=preg_replace($pattern1a,$replace1a, $text);
   $pattern2a="/Ö/";
   $replace2a="Ö";
   $text=preg_replace($pattern2a,$replace2a, $text);
   $pattern3a="/Ü/";
   $replace3a="Ü";
   $text=preg_replace($pattern3a,$replace3a, $text);
   $pattern4="/ß/";
   $replace4="ß";
   $text=preg_replace($pattern4,$replace4, $text);
   return $text;
}


$strName=" ";
while($row = mssql_fetch_array($result))
{
if ($strName==$row["B_Txt"])
{
echo "";
echo "" . convertUmlaute($row["F_Txt"]) . "";
echo "" . convertUmlaute($row["N_Name"]) .', '. $row["N_Vorname"] . "";
echo "" . convertUmlaute($row["An_Hausruf"]) . "";
echo "" . convertUmlaute($row["R_txt"]) . "";
echo "" . convertUmlaute($row["An_Fernruf"]) . "";
echo "";
}
else
{
echo "";
echo " ";
echo " ";
echo " ";
echo " ";
echo " ";
echo "";
echo "";
echo " ";
echo " ";
echo " ";
echo " ";
echo " ";
echo "";
echo "";
$strName=convertUmlaute($row["B_Txt"]);
echo "" . convertUmlaute($row["B_Txt"]) . "";
echo "" . convertUmlaute($row["B_Langtext"]) . "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "Funktion";
echo "Name";
echo "Hausruf";
echo "Raum";
echo "Fernruf";
echo "";
echo "";
echo "" . convertUmlaute($row["F_Txt"]) . "";
echo "" . convertUmlaute($row["N_Name"]) .', '. $row["N_Vorname"] . "";
echo "" . convertUmlaute($row["An_Hausruf"]) . "";
echo "" . convertUmlaute($row["R_txt"]) . "";
echo "" . convertUmlaute($row["An_Fernruf"]) . "";
echo "";
}
}

echo "";

Re: Benutzerdefiniertes Tag - Umlaut problem

Posted: Fri Jun 15, 2007 4:11 pm
by cyberman
Hmm, wohl eher an der Kodierung von CMSms - es verwendet standardmässig utf-8.

Versuch doch mal, ä durch ä zu ersetzen ...

Re: Benutzerdefiniertes Tag - Umlaut problem

Posted: Mon Jun 18, 2007 9:25 am
by renke
cyberman wrote: Hmm, wohl eher an der Kodierung von CMSms - es verwendet standardmässig utf-8.

Versuch doch mal, ä durch ä zu ersetzen ...
gesagt getan, ändert nur leider nix am Problem.
kann es angehen das die Funktion bei benutzerdefinierten Tags nicht mit ausgeführt wird?

Code: Select all

function convertUmlaute($text){
   //DIE UMLAUTE WERDEN KONVERTIERT  /////
   $pattern1="/ä/";
   $replace1="ä";
   $text=preg_replace($pattern1,$replace1, $text);
   $pattern2="/ö/";
   $replace2="ö";
   $text=preg_replace($pattern2,$replace2, $text);
   $pattern3="/ü/";
   $replace3="ü";
   $text=preg_replace($pattern3,$replace3, $text);
   $pattern1a="/Ä/";
   $replace1a="Ä";
   $text=preg_replace($pattern1a,$replace1a, $text);
   $pattern2a="/Ö/";
   $replace2a="Ö";
   $text=preg_replace($pattern2a,$replace2a, $text);
   $pattern3a="/Ü/";
   $replace3a="Ü";
   $text=preg_replace($pattern3a,$replace3a, $text);
   $pattern4="/ß/";
   $replace4="ß";
   $text=preg_replace($pattern4,$replace4, $text);
   return $text;
}

Re: Benutzerdefiniertes Tag - Umlaut problem

Posted: Mon Jun 18, 2007 10:22 am
by cyberman
renke wrote: Warum funktioniert er als benutzerdefiniertes Tag nicht?  ???
Sorry, hab wohl wieder mal zu schnell gelesen.

Was genau funktioniert nicht? Bekommst du irgend eine Fehlermeldung? Hast du mal versucht, die Verbindung über Adodb herzustellen?

http://forum.cmsmadesimple.org/index.ph ... l#msg59045

Re: Benutzerdefiniertes Tag - Umlaut problem

Posted: Mon Jun 18, 2007 12:40 pm
by renke
Hi, die Verbindung zur Datenbank funktioniert ohne Probleme mit der MS-SQL ODBC-Verbindung.

Wie gesagt gibt es auch keine Probleme mit dem Umlauten wenn ich das Script von mir als iFrame einbinde.
Doch wenn ich das ganze versuche als Benutzerdefiniertes Tag zu verwenden, Funktioniert anscheinend die Funktion nicht und ich erhalte "?" für die Umlaute im Seitenquelltext.

Die Frage ist nun warum die Zeichen nicht ersetzt werden wie Sie sollen, liegt es an Smarty und wie kann ich es trotzdem hinbekommen, ohne auf dass iframe zurückzugreifen?

Mir fehlt leider der nötige Wissen über die Funktionsweise von Smarty um mir die frage selbst zu beantworten.

Vieleicht liegt es auch an etwas was mir bisher noch nicht in den Sinn gekommen ist.

Re: Benutzerdefiniertes Tag - Umlaut problem

Posted: Mon Jun 18, 2007 1:28 pm
by cyberman
Das Fragezeichen ist ein eindeutiger Hinweis, dass es ein allgemeines Kodierungsproblem ist und mit Smarty nix zu tun hat.

Dass dein Script in einem Iframe funktioniert, hängt damit zusammen, dass du in deinem Source die Kodierung nicht gesetzt hast und mancher Browser in dieser Beziehung tolerant ist. In CMSms ist aber standardmäßig eine Kodierung (utf-8) gesetzt und da gibts Probleme.

Korrekt wäre das
echo "";
echo "";
echo '';
echo "";
echo "";
echo "";
Deine Funktion convertUmlaute() lässt sich IMHO auch einfacher umsetzen  ;)

Code: Select all

      echo "<td>" . htmlentities($row['F_Txt']) . "</td>";
http://de.php.net/manual/de/function.htmlentities.php

Re: Benutzerdefiniertes Tag - Umlaut problem

Posted: Mon Jun 18, 2007 2:15 pm
by renke
;D super jetzt geht alles, lag wohl an der selbstgeschriebenen funktion, mit der php internen Funktion klapt es perfekt!

vielen Dank!