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(a)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