Hallo und Mahlzeit
Das Problem wird erst jetzt aktuell (nach fast 1 Jahr), aber der Kunde gehört auch nicht zu den Schnellentschlossenen.
@Piratos: Danke für Deine Antwort damals
Meine Beschreibung war leider nicht ganz korrekt und etwas ungenau, ich möchte mit dem Parameter nicht eine Datenbank auswählen sondern eine Datenbanktabelle (Da auf einem Webhost meistens der Name der Datenbank vorgegeben ist und man ja nur neue Tabellen in genau dieser Datenbank erstellen darf).
Das Script von Piratos auf diese Anforderung zu ändern ist nicht das Problem. Ich muß gestehen, daß ich mit der Syntax nicht klarkomme. Auch das Studieren der Plugin-Quelltexte hat mich nicht nach vorne gebracht.
Das Problem: Es wird mir auf der Seite absolut nichts angezeigt, die Debug-Ausgabe zeigt auch keine Fehler. Der Code in der Funktion wird augenscheinlich ignoriert!
Meine Vorgehensweise:
Ich habe einen benutzerdefinierten Tag mit folgendem Code erstellt (Verbindungsdaten sind richtig angegeben). Der Name des Tags ist identisch mit dem Namen der Funktion -> database.
Zum Testen der Smarty-Funktion habe ich absichtlich keinen Parameter verwendet, sondern die Datenbanktabelle explizit angegeben.
Aber grundsätzlich soll mit einem Parameter die Tabelle für den mysql_query ausgewählt werden können.
Code: Select all
function smarty_function_database($params, &$smarty) {
// LOCALHOST
$db_server = "localhost";
$db_user = "...";
$db_pass = "...";
$db = "...";
$connection = mysql_connect($db_server,$db_user,$db_pass) or die("Could not connect : " . mysql_error());
mysql_select_db($db,$connection) or die("Could not select database: " . mysql_error());
echo "<table ...>\n";
$result = "";
$e = mysql_query('SELECT * FROM test1 WHERE id>=2');
while($row = mysql_fetch_row($e)) {
echo "<tr>";
for($i=1; $i<count($row); $i++) {
echo "<td><div...>".$row[$i]."</div></td>";
}
echo "</tr>\n";
}
mysql_free_result($e);
mysql_close($connection);
return $result;
echo "</table>";
}
Wie oben schon erwähnt wird mir auf der Seite absolut nichts angezeigt. Ich nehme an, daß eine Funktion auch ohne Parameter benutzt werden kann. Diesen Eindruck habe ich bei den Plugins gewonnen.
Frage: Wird bei einer Funktion nur ausgegeben, was der Variablen $result zugewiesen wird?
Bei den Plugins wird es ja folgendermaßen verwendet:
Code: Select all
$result = "";
$result .= "...";
$result .= "...";
return $result;
Also wird bei mir wahrscheinlich die Variable $e nicht ausgelesen!? Vielleicht $e in $result umbenennen, aber das ist es auch nicht.
Code: Select all
...
$result = "";
$result = mysql_query('SELECT * FROM test1 WHERE id>=2');
while($row = mysql_fetch_row($result)) {
echo "<tr>";
for($i=1; $i<count($row); $i++) {
echo "<td><div...>".$row[$i]."</div></td>";
}
echo "</tr>\n";
}
mysql_free_result($result);
mysql_close($connection);
return $result;
...
Ich brüte nun schon seit gestern nachmittag über dem Problem und bin auch darüber verwundert, wie schwach ich übersetzt bin. In Bezug auf PHP und mySQL

. Ich dachte mit Quelltext- und Manualstudium kriege ich es hin.
Nun muß ich Euch bitten: Helft mir über die Hürde.
LG
Dietmar