TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

UPdate zu PHP 5.3: Farbe der Flags ändert nicht mehr


Autor Nachricht
Verfasst am: 09. 01. 2011 [20:09]
mamo
Themenersteller
Dabei seit: 01.09.2004
Beiträge: 107
Hallo
Ich habe eine Website, die seit längere Zeit korrekt funktioniert hat. Nach dem Update auf PHP 5.3 erhielt ich folgende Fehlermeldung:

t3lib_error_Exception
PHP : mysql() [function.mysql.php]: This function is deprecated; use mysql_query() instead in /home/myDomain/public_html/t3/fileadmin/scripts/my_languageMenu.php line 40

Nach längere Suche im Internet fand ich dazu folgende Lösung: Ich ersetzte in der Datei my_languageMenu.php Zeile 40
PHP
$res = mysql(TYPO3_db,$query);

mit
PHP
$res = mysql_query(TYPO3_db,$query);

Die Meldung ist weg, die Seiten werden sowohl in deutsch wie auch in englisch korrekt dargestellt, aber die Länderflagge ändert die Farbe nicht mehr. Deutsch bleibt farbig, ob gewählt oder nicht, englisch bleibt grau. Der Pfeil zeigt korrekt die aktive Seite an.

Das ist die Datei my_languageMenu.php:
PHP
<?php
/***************************************************************
*  Copyright notice
*  
*  (c) 1999-2002 Kasper Skårhøj (kasper@typo3.com)
*  All rights reserved
*
*  This script is part of the Typo3 project. The Typo3 project is 
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
* 
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*  A copy is found in the textfile GPL.txt and important notices to the license 
*  from the author is found in LICENSE.txt distributed with these scripts.
*
* 
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
 * example_languageMenu.php
 *
 * THIS IS AN EXAMPLE designed to work with the official Typo3 testsite, section "Another site in the ..."
 *
 * @author	Kasper Skårhøj <kasper@typo3.com>
 */
 
 
 
 // First, select all pages_language_overlay records on the current page. Each represents a possibility for a language.
$query = "SELECT * FROM pages_language_overlay WHERE pid=".$GLOBALS["TSFE"]->id.$GLOBALS["TSFE"]->sys_page->enableFields("pages_language_overlay&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />." GROUP BY sys_language_uid";
 
//$res = mysql(TYPO3_db,$query);		//alt
$res = mysql_query(TYPO3_db,$query);	//neu
$langArr=array();
while($row=mysql_fetch_assoc($res))	{
	$langArr[$row["sys_language_uid"]]=$row["title"];
}
 
// Little red arrow, which is inserted to the left of the flag-icon if the TSFE->sys_language_uid equals the language uid (notice that 0=english, 1=danish and 2=german is SPECIFIC to this database, because these numbers refer to uid's of the table sys_language)
//$pointer = '<img src="t3lib/gfx/content_client.gif" width="7" height="10" align=middle>';
$pointer = '<span class="pointer"><img src="fileadmin/template/images/flags/selected.gif" width="7" height="12"></span>'; //schwarzer Pfeil
 
// Set each icon. If the language is the current, red arrow is printed to the left. If the language is NOT found (represented by a pages_language_overlay record on this page), the icon is dimmed.
//Variante mit Flaggen: 
$flags = array();
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==0?$pointer:"&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />.'<a href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=0" target=_top><img src="fileadmin/template/images/flags/de.gif" width="20" height="12" alt="de"></a><span class="invis">.</span> ';
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==1?$pointer:"&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />.'<a href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=1" target=_top><img src="fileadmin/template/images/flags/gb'.($langArr[1]?"":"_d&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />.'.gif" width="20" height="12" alt="gb"></a><span class="invis">.</span> ';
//$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==2?$pointer:"&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />.'<a href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=2" target=_top><img src="fileadmin/template/images/flags/fr'.($langArr[2]?"":"_d&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />.'.gif" width="20" height="12"></a></span></a><span class="invis">.</span> ';
//$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==3?$pointer:"&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />.'<a href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=3" target=_top><img src="fileadmin/template/images/flags/es'.($langArr[3]?"":"_d&quot<img src="typo3conf/ext/mm_forum//res/smilies/icon_wink.gif" alt="icon_wink.gif" />.'.gif" width="20" height="12"></a></span></a><span class="invis">.</span> ';
 
$content = '<span>'.implode("",$flags).'</span>';
 
?>


Das übersteigt meine PHP-Kenntnisse. Weiss jemand Rat?
Besten Dank
Profil
Verfasst am: 10. 01. 2011 [14:38]
mamo
Themenersteller
Dabei seit: 01.09.2004
Beiträge: 107
Nach langem Suchen habe ich eine andere Version des Scripts languageMenu.php gefunden. Nach Anpassen der Links funktioniert das bestens. Für alle, die dasselbe Problem haben, hier der neue Code:
PHP
<?php
/***************************************************************
*  Copyright notice
*
*  (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*  A copy is found in the textfile GPL.txt and important notices to the license
*  from the author is found in LICENSE.txt distributed with these scripts.
*
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
if (!is_object($this)) die ('Error: No parent object present.');
 
 
 
// First, select all pages_language_overlay records on the current page. Each represents a possibility for a language.
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages_language_overlay', 'pid='.intval($GLOBALS['TSFE']->id).$GLOBALS['TSFE']->sys_page->enableFields('pages_language_overlay'), 'sys_language_uid');
 
$langArr = array();
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
         $langArr[$row['sys_language_uid']] = $row['title'];
}
 
// Little red arrow, which is inserted to the left of the flag-icon if the TSFE->sys_language_uid equals the language uid (notice that 0=english, 1=danish and 2=german is SPECIFIC to this database, because these numbers refer to uid's of the table sys_language)
$pointer = '<img src="'.t3lib_extMgm::siteRelPath('cms').'media/icons_misc/content_client.gif" width="7" height="10" align="middle" alt="" />';
 
// Set each icon. If the language is the current, red arrow is printed to the left. If the language is NOT found (represented by a pages_language_overlay record on this page), the icon is dimmed.
$flags = array();
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0').'" target="_top"><img src="media/uploads/flag_uk.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=1').'" target="_top"><img src="media/uploads/flag_dk'.($langArr[1]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==2?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=2').'" target="_top"><img src="media/uploads/flag_de'.($langArr[2]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
 
// Make the little menu. Notice, the menu does ONLY transfer the page-id and the "L" variable (which is also SPECIFIC for this website because "L" has been used in the extension template used to control the language setup)
$content = '<table border="0" cellpadding="0" cellspacing="0"><tr><td><img src="clear.gif" width="30" height="1" alt="" /></td><td>'.implode('',$flags).'</td></tr></table>';
 
?>
Profil