Hallo zusammen,
da ich es aktuell nicht hinbekomme, php code in Typo 3 4.6 einzubinden, habe ich mir nun Kickstarter runtergeladen und eine Extetion Namens Daman 1 Tabelle erstellt. Extention wurde geschrieben und installiert. Nun habe ich gesehen, dass man in der Datei class.tx_damen1tabelle_pi1.php Code einpflegen kann und zwar in diesen Bereich:
function main($content, $conf) {
return 'Hello World!<HR>
Here is the TypoScript passed to the method:'.
t3lib_div::view_array($conf);
}
Ich habe nun schon hin und her probiert, aber wenn ich meinen Code mit einbaue verändert sich die Ausgabe nicht. Was mache ich falsch?
<?php
// Datenbank verbinden
include "../zugang.php.inc";
$sql = "
SELECT platz, verein, begegnungsanzahl, sieg, unentschieden, niederlage, spielpunkte, differenz, punkte FROM tabelle_damen1 ORDER BY platz";
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}
$anzahl = mysql_num_rows($db_erg);
echo "<table class=\"table_mannschaften_80\">\n";
echo "<tr>";
//echo "<td></td>";
echo "<td>Platz</td>";
echo "<td>Verein</td>";
echo "<td>Begegnungen</td>";
echo "<td>S</td>";
echo "<td>U</td>";
echo "<td>N</td>";
echo "<td>Spiele</td>";
echo "<td>+/-</td>";
echo "<td>Punkte</td>";
echo "</tr>";
$anzahl = 1;
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
echo "<tr>";
//echo "<td>". $anzahl . "</td>";
echo "<td>". $zeile['platz'] . "</td>";
echo "<td>". $zeile['verein'] . "</td>";
echo "<td>". $zeile['begegnungsanzahl'] . "</td>";
echo "<td>". $zeile['sieg'] . "</td>";
echo "<td>". $zeile['unentschieden'] . "</td>";
echo "<td>". $zeile['niederlage'] . "</td>";
echo "<td>". $zeile['spielpunkte'] . "</td>";
echo "<td>". $zeile['differenz'] . "</td>";
echo "<td>". $zeile['punkte'] . "</td>";
echo "</tr>";
$anzahl++;
}
echo "</table>";
mysql_free_result( $db_erg );
?>
Wenn ich im Kickstarter was speichern möchte, dann wird mir angezeigt, Speichern ist deaktiviert. Wo genau kann ich dies aktivieren?
Über Tipps wäre ich sehr dankbar.
Gruß Tobli
1. Du musst deinen Content mit return ausgeben, nicht mit echo.
2. Verwende nach Möglichkeit TYPO3-eigene Funktionen, z.B. für Datenbank-Abfragen: http://api.typo3.org/typo3v4/current/html/classt3lib___d_b.html
3. Speichern im Kickstarter deaktiviert? So eine EInstellung kenne ich nicht, allerdings ist das Bearbeiten einer Extension über den Ext.-Manager deaktiviert. Das kannst du im InstallTool unter "All Configuration" aktivieren
Hallo,
danke erstmal für deine Antwort und bereits hilfreichen Tipps.
Punkt 3: habe ich etwas falsch beschreiben, aber du hast es richtig gedeutet. Habs im InstallTool gefunden udn entsprechende abgeändert, nun kann ich Änderungen an Dateien vornehmen.
Punkt 2: da bin ich nicht so ganz durchgestiegen: für die Query ist mir dies unter die Augen gekommen:
SELECTquery ( $ select_fields,
$ from_table,
$ where_clause,
$ groupBy = '',
$ orderBy = '',
$ limit = ''
)
ob dies allerdins passend ist, weiß ich nicht.
Punkt 1: habe nun die Ganzen echos mal entfernt, habe in etwa befürchtet dass dies so nicht geht.
Nun wäre ich erfreut, wenn du mir noch etwas bzgl. der Datenbankverbindung, Abfrage etc. helfen könntest.
function main($content, $conf) {
return 'Hello World!<HR>
// Datenbank verbinden
include "../zugang.php.inc";
$sql = "
SELECT platz, verein, begegnungsanzahl, sieg, unentschieden, niederlage, spielpunkte, differenz, punkte FROM tabelle_damen1 ORDER BY platz";
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error()),
}
$anzahl = mysql_num_rows($db_erg);
Test
<table class=\"table_mannschaften_80\">
<tr>
<td>Platz</td>
<td>Verein</td>
<td>Begegnungen</td>
<td>S</td>
<td>U</td>
<td>N</td>
<td>Spiele</td>
<td>+/-</td>
<td>Punkte</td>
</tr>
$anzahl = 1
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
<tr>
<td>'. $zeile['platz'] . '</td>
<td>'. $zeile['verein'] . '</td>
<td>'. $zeile['begegnungsanzahl'] . '</td>
<td>'. $zeile['sieg'] . '</td>
<td>'. $zeile['unentschieden'] . '</td>
<td>'. $zeile['niederlage'] . '</td>
<td>'. $zeile['spielpunkte'] . '</td>
<td>'. $zeile['differenz'] . '</td>
<td>'. $zeile['punkte'] . '</td>
</tr>
$anzahl+
}
</table>
mysql_free_result( $db_erg )
'.
t3lib_div::view_array($conf);
}
Du brauchst dich in einer Extension nicht um die Verbindung zur Datenbank kümmern, das geht alles über den Core. Natürlich vorausgesetzt, dass du auf die TYPO3-DB zugreifen willst und nicht auf eine externe DB. Das würde dann mit DBAL gehen.
Abfrage:
<php
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($select, $from, $where, $group, $order, $limit);
$anzahl = $GLOBALS['TYPO3_DB']->sql_num_rows($res)
while ($zeile = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
...
}
$GLOBALS['TYPO3_DB']->sql_free_result($res);
?>
Hallo,
die Inhalte sind in einer anderen DB, allerdings auf dem gleichen Server.
Meinst du dies hier? Oder muss da die Extetion DBAL isntalliert werden?
$TYPO3_CONF_VARS['EXTCONF']['dbal']['handlerCfg'] = array (
'_DEFAULT' => array (
'type' => 'native',
'config' => array(
'username' => '', // Set by default (overridden)
'password' => '', // Set by default (overridden)
'host' => '', // Set by default (overridden)
'database' => '', // Set by default (overridden)
)
),
Gruß Tobli
Hallo zusammen,
kurzer kleiner Push (auch wenn dies nicht gerne gesehen ist).
Gruß Tobli
HAllo,
ich habe nun meine ext_localconfig.php der Extetion ein wenig umgebaut. Bin ich da auf dem richtigen Wege?
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
$TYPO3_CONF_VARS['EXTCONF']['dbal']['handlerCfg'] = array (
'_DEFAULT' => array (
'type' => 'native',
'config' => array(
'username' => 'datenbankbenutzer',
'password' => '*****',
'host' => 'localhost',
'database' => 'typo3datenbank'
)
),
'alternativeMySQLdb' => array (
'type' => 'native',
'config' => array(
'username' => 'datenbankbenutzer',
'password' => '*****',
'host' => 'localhost',
'database' => 'extere_datenbankname',
'driver' =>'mysql'
)
),
);
$TYPO3_CONF_VARS['EXTCONF']['dbal']['table2handlerKeys'] = array (
'stadt' => 'alternativeMySQLdb'
);
t3lib_extMgm::addPItoST43($_EXTKEY, 'pi1/class.tx_damen1tabelle_pi1.php', '_pi1', 'CType', 1);
?>
Gruß Tobli
Hallo,
aktuell bekomme ich leider nur eine weiße Seite im Frontend angezeigt.
Das Protokoll in Typo3 zeigt:
Core: Error handler (BE): PHP Warning: is_file(): open_basedir restriction in effect. File(/var/www/virtual/???/htdocs/<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <T3DataStructure> <meta type="array"> <langDisable>1</langDisable> </meta> <ROOT type="array"> <tx_templavoila type="array"> <title>ROOT</title> <description>Wählen Sie das HTML-Element der Seite, das Sie als übergeordnetes Container-Element der Vorlage möchten.</description> </tx_templavoila> <type>array</type> <el type="array"> <field_ueberschrift type="array"> <tx_templavoila type="array"> <title>Überschrift</title> <sample_data type="array"> <numIndex index="0"></numIndex> </sample_data> <eType>input</eType> <tags>h3:inner</tags> <proc type="array"> <HSC type="integer">1</HSC> <stdWrap></stdWrap> </proc> <preview></preview> <TypoScript type="NULL"></TypoScript> </tx_templavoila> <TCEforms type="array"> <label>Überschrift</label> <config type="array"> <type>input</type> <size>48</size> <eval>trim</eval> </config> </TCEforms> </field_ueberschrift> <field_textzeile1 type="array"> <tx_templavoila type="array"> <title>Text Zeile 1</title> <sample_data type="array"> <numIndex index="0"></numIndex> </sample_data> <eType>input</eType> <tags>span:outer</tags> <proc type="array"> <HSC type="integer">1</HSC> <stdWrap></stdWrap> </proc> <preview></preview> <TypoScript type="NULL"></TypoScript> </tx_templavoila> <TCEforms type="array"> <label>Text Zeile 1</label> <config type="array"> <type>input</type> <size>48</size> <eval>trim</eval> </config> </TCEforms> </field_textzeile1> <field_textzeile2 type="array"> <tx_templavoila type="array"> <title>Text Zeile 2</title> <sample_data type="array"> <numIndex index="0"></numIndex> </sample_data> <eType>input</eType> <tags>span:outer</tags> <proc type="array"> <HSC type="integer">1</HSC> <stdWrap></stdWrap> </proc> <preview></preview> <TypoScript type="NULL"></TypoScript> </tx_templavoila> <TCEforms type="array"> <label>Text Zeile 2</label> <config type="array"> <type>input</type> <size>48</size> <eval>trim</eval> </config> </TCEforms> </field_textzeile2> <field_linktext1 type="array"> <tx_templavoila type="array"> <title>Linktext 1</title> <sample_data type="array"> <numIndex index="0"></numIndex> </sample_data> <eType>input</eType> <tags>a:inner</tags> <proc type="array"> <HSC type="integer">1</HSC> <stdWrap></stdWrap> </proc> <preview></preview> <TypoScript type="NULL"></TypoScript> </tx_templavoila> <TCEforms type="array"> <label>Linktext 1</label> <config type="array"> <type>input</type> <size>48</size> <eval>trim</eval> </config> </TCEforms> </field_linktext1> <field_linkurl1 type="array"> <type>attr</type> <tx_templavoila type="array"> <title>Linkurl 1</title> <sample_data type="array"> <numIndex index="0"></numIndex> </sample_data> <eType>link</eType> <tags>a:attr:href</tags> <TypoScript> 10 = TEXT 10.typolink.parameter.current = 1 10.typolink.returnLast = url</TypoScript> <proc type="array"> <HSC type="integer">1</HSC> <stdWrap></stdWrap> </proc> <preview></preview> </tx_templavoila> <TCEforms type="array"> <label>Linkurl 1</label> <config type="array"> <type>input</type> <size>15</size> <max>256</max> <checkbox></checkbox> <eval>trim</eval> <wizards type="array"> <_PADDING type="integer">2</_PADDING> <link type="array"> <type>popup</type> <title>Link</title> <icon>link_popup.gif</icon> <script>browse_links.php?mode=wizard</script> <JSopenParams>height=300,width=500,status=0,menubar=0,scrollbars=1</JSopenParams> </link> </wizards> </config> </TCEforms> </field_linkurl1> <field_linktext2 type="array"> <tx_templavoila type="array"> <title>Linktext 2</title> <sample_data type="array"> <numIndex index="0"></numIndex> </sample_data> <eType>input</eType> <tags>a:inner</tags> <proc type="array"> <HSC type="integer">1</HSC> <stdWrap></stdWrap> </proc> <preview></preview> <TypoScript type="NULL"></TypoScript> </tx_templavoila> <TCEforms type="array"> <label>Linktext 2</label> <config type="array"> <type>input</type> <size>48</size> <eval>trim</eval> </config> </TCEforms> </field_linktext2> <field_linkurl2 type="array"> <type>attr</type> <tx_templavoila type="array"> <title>Linkurl 2</title> <sample_data type="array"> <numIndex index="0"></numIndex> </sample_data> <eType>link</eType> <tags>a:attr:href</tags> <TypoScript> 10 = TEXT 10.typolink.parameter.current = 1 10.typolink.returnLast = url</TypoScript> <proc type="array"> <HSC type="integer">1</HSC> <stdWrap></stdWrap> </proc> <preview></preview> </tx_templavoila> <TCEforms type="array"> <label>Linkurl 2</label> <config type="array"> <type>input</type> <size>15</size> <max>256</max> <checkbox></checkbox> <eval>trim</eval> <wizards type="array"> <_PADDING type="integer">2</_PADDING> <link type="array"> <type>popup</type> <title>Link</title> <icon>link_popup.gif</icon> <script>browse_links.php?mode=wizard</script> <JSopenParams>height=300,width=500,status=0,menubar=0,scrollbars=1</JSopenParams> </link> </wizards> </config> </TCEforms> </field_linkurl2> </el> </ROOT> </T3DataStructure>) is not within the allowed path(s): (/var/www/virtual/???/:/usr/share/php/) in /var/www/virtual/???/htdocs/t3lib/class.t3lib_befunc.php line 947
Jemand eine Idee was da schief läuft?
Gruß Tobli
HAllo,
ich verzweifle so langsam: aktuell habe ich nur die class.tx_damen1tabelle_pi1.php verändert und alle anderen Dateien der Extention unverändert gelassen, allergins bekomme ich immer eine weiße Seite ausgegeben:
<?php
...
/**
* Plugin 'Damen 1 Tabelle auslesen' for the 'damen1_tabelle' extension.
*
* @author
* @package TYPO3
* @subpackage tx_damen1tabelle
*/
class tx_damen1tabelle_pi1 extends tslib_pibase {
var $prefixId = 'tx_damen1tabelle_pi1'; // Same as class name
var $scriptRelPath = 'pi1/class.tx_damen1tabelle_pi1.php'; // Path to this script relative to the extension dir.
var $extKey = 'damen1_tabelle'; // The extension key.
var $pi_checkCHash = true;
/**
* The main method of the PlugIn
*
* @param string $content: The PlugIn content
* @param array $conf: The PlugIn configuration
* @return The content that is displayed on the website
*/
function main($content, $conf) {
$extDB = t3lib_div::makeInstance('t3lib_DB');
$extDB->debugOutput = $TYPO3_CONF_VARS['SYS']['sqlDebug'];
$extDB->connectDB('localhost', 'db-name', 'pw', 'db-user');
$res = $extDB->exec_SELECTquery('platz, verein, begegnungsanzahl, sieg,
unentschieden, niederlage, spielpunkte, differenz,
punkte', 'tabelle_damen1', NULL, 'platz');
$anzahl = $extDB->sql_num_rows($res);
$content = '<table class=\'table_mannschaften_80\'>
<tr>
<td>Platz</td>
<td>Verein</td>
<td>Begegnungen</td>
<td>S</td>
<td>U</td>
<td>N</td>
<td>Spiele</td>
<td>+/-</td>
<td>Punkte</td>
</tr>';
$anzahl = 1
while ($zeile = mysql_fetch_array( $res, MYSQL_ASSOC))
{
$content .= '<tr>
<td>'. $zeile['platz'] . '</td>
<td>'. $zeile['verein'] . '</td>
<td>'. $zeile['begegnungsanzahl'] . '</td>
<td>'. $zeile['sieg'] . '</td>
<td>'. $zeile['unentschieden'] . '</td>
<td>'. $zeile['niederlage'] . '</td>
<td>'. $zeile['spielpunkte'] . '</td>
<td>'. $zeile['differenz'] . '</td>
<td>'. $zeile['punkte'] . '</td>
</tr>';
$anzahl++;
}
$content .= '</table>';
$extDB->sql_free_result($res);
return $content;
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/damen1_tabelle/pi1/class.tx_damen1tabelle_pi1.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/damen1_tabelle/pi1/class.tx_damen1tabelle_pi1.php']);
}
?>
Noch irgendwelche LÖsungen vorhanden?
Gruß Tobli
Stell dein php mal richtig ein, dass du Fehlermeldungen ausgegeben bekomsmt. Dann siehst du schnell, was los ist.
Ebenso in der localconf.php deine ip mal bei devipmask eintragen und sqldebug auf 1 stellen, dann erzählt dir typo3 auch alle Fehlerdetails.
aemka schrieb
Stell dein php mal richtig ein, dass du Fehlermeldungen ausgegeben bekomsmt. Dann siehst du schnell, was los ist.
Ebenso in der localconf.php deine ip mal bei devipmask eintragen und sqldebug auf 1 stellen, dann erzählt dir typo3 auch alle Fehlerdetails.
Hallo,
in der localconfig.php in der typo3 config? Dort habe ich keinen Eintrag von devipmask und sqldebug gefunden.
Ich habe nun festgestellt, dass ich ein ; vergessen hatte. Nun klappt die Abfrage und auch die Verbindung.
Ich habe nun eine weitere Abfrage probiert, allerdings scheint hier etwas nicht zu passen.
$sql = "
SELECT id, wochentag, spielzeit, spielklasse, heimmannschaft, gastmannschaft, heimergebnis, gastergebnis FROM spielergebnisse WHERE heimmannschaft NOT LIKE '%spielfrei%' AND gastmannschaft NOT LIKE '%spielfrei%' ORDER BY spielzeit";
$res = $extDB->exec_SELECTquery('id, wochentag, spielzeit, spielklasse,
heimmannschaft, gastmannschaft, heimergebnis,
gastergebnis', 'spielergebnisse', 'heimmannschaft NOT LIKE spielfrei AND gastmannschaft NOT LIKE spielfrei', 'spielzeit');