Am Freitag, 7. Januar 2005 11:03 schrieb Moritz Karbach:
<db>SELECT inventarnum FROM rechner WHERE name = '{{{1}}}'</db>
how do you get this working? This looks like you are performing a SQL query inside wiki text.
Shure. See below this very simple and danger (!) example:
--- file extensions/db.php --- <?php # This is a simple and danger example! Never ever use this in production! $wgExtensionFunctions[] = "wfDBExtension"; function wfdbExtension() { global $wgParser; $wgParser->setHook( "db", "renderDB" ); } function renderDB( $input ) { list ( $database, $query ) = explode( "|", $input ); global $wgDBserver, $wgDBuser, $wgDBpassword; $conn = mysql_connect( $wgDBserver, $wgDBuser, $wgDBpassword ); if ( !$conn ) { return '?'; } if ( !mysql_select_db( $database )) { return '?'; } $rs = mysql_query( $query ); if ( !$rs ) { return ''; } $wert = mysql_fetch_array( $rs ); mysql_close(); return $wert[0]; } ?>
--- page Template:EMail --- <db>testwiki|SELECT user_email FROM user WHERE user_name = '{{{1}}}'</db>
---page Test --- Nutzer WikiSysop hat die EMail '''{{EMail|WikiSysop}}'''.
It renders as "Nutzer WikiSysop hat die EMail wikisysop@nostromo.lv49.space." Probably you get the idea. I'am using this in an extensions which generates self modifying pages for server status reports.
Mikesch