Ich benutze PEAR::HTML_QuickForm für ein Anmeldeformular, diese Klasse ermöglicht es Kontrollfuntionen auf Eingabefelder anzuwenden. Mein Problem ist, dass ich der Funktion dafür nur einen Parameter übergeben kann und zwar einen String. Ich möchte in dieser Funktion jedoch die Instanz $db meiner Klasse MySQL benutzen. Ist dies Möglich oder habt ihr eine andere Idee, wie ich mein Problem lösen könnte?
(define ('DB', $db) halte ich für keine gute Lösung, falls dies überhaupt möglich ist)
PHP-Code:
<?php
function checkField($value, $field) { // $value=wert des feldes(z.B. 'John') $field=Parameter, der von $form->AddRule uebergeben wurde (nur String)
$sql = "SELECT * FROM spieler AS a, signup AS b WHERE
a.$field='$value' OR b.$field='$value'";
$result = $db->query($sql); // Wie das loesen?
return $result->size() == 0;
}
$form->addElement( // dem Formular ein Element hinzufuegen
'text', // Texteingabefeld
'nick', // name= nick
'Nick:' // Beschriftung
);
$form->registerRule( // neue Regel registrieren
'checkField', //name der Regel
'callback', // die regel ist eine funktion
'checkField' // name der funktion, die aufgerufen wird
);
$form->addRule( // eine Regel einem Element hinzufuegen
'nick', // dem Element 'nick'
'Nick ist bereits vergeben', // fehlermeldung
'checkField', // name der regel (die oben definierte)
'nickname', // PARAMETER, der der regel uebergeben wird (nur String)
'server' // serverseitige kontrolle
);
?>