Funktion mit SQL Abfragen funktioniert nicht

Schokoriegel

Mitglied
Hallo,

habe folgendes Problem...
ich rufe eine Funktion in PHP auf, in der SQL Abfragen durchgeführt wird und anschließend eine Email versendet wird (Email Versand funktioniert!).

Das Problem ist jedoch, das ich ständig den Fehler MDB2 Error: not found bekomme!
Für die SQL Abfragen verwende ich eine fertige Pear Klasse, die mir gestellt wurde. Ich habe die Klasse als Anhang mal hier rangehängt!

Das Problem tritt nur auf, wenn ich innerhalb von Funktionen in PHP die Abfragen durchführen möchte. Ich weiß nur leider nicht mehr woran das liegen kann, vielleicht weiß ja einer von euch hier mehr darüber und kann mir helfen?

Zur Funktion hier noch ein paar Informationen:

function mailnewStatus($userid, $lehrgangid, $status, $useridausbilder) {
echo $userid;
echo $lehrgangid;
echo $status;
echo $useridausbilder;

// Benutzerdaten ermitteln
$sql_user= "SELECT vorname, nachname, usermail, emailon
FROM
users
WHERE id='$userid'";
$abfrage_user = new abfrage_db($dsn1);
$ergebnis_user = $abfrage_user->ergebnis($sql_user);



....

}

das wäre z.B. eine Abfrage innerhalb der Funktion!
Ach ja, die config_classes include ich ganz zum Anfang in der php Datei, wo ich die Funktion aufrufe

Danke schon mal für eure Hilfe
 

Anhänge

Zuletzt bearbeitet:
Du mußt alle Variablen die nicht in die Funktion übergeben werden und auch nicht definiert "globalisieren" sozusagen verfügbar machen mit:

PHP:
function mailnewStatus($userid, $lehrgangid, $status, $useridausbilder) {
global $all, $vars, $die, $du, $brauchst;

......
}
 
PHP:
function mailnewStatus($userid, $lehrgangid, $status, $useridausbilder) {
		global $sql_user, $abfrage_user, $ergebnis_user, $sql_lehrgang, $abfrage_lehrgang, $ergebnis_lehrgang,
		$sql_ausbilder, $abfrage_ausbilder, $ergebnis_ausbilder, $status_email, $feuerwehr_minden, $empfaenger_benutzer,
		$betreff_benutzer, $from_benutzer, $text_benutzer;

		// Benutzerdaten ermitteln
		$sql_user= "SELECT vorname, nachname, usermail, emailon
					FROM
						users
					WHERE id='$userid'";
		$abfrage_user = new abfrage_db($dsn1);
		$ergebnis_user = $abfrage_user->ergebnis($sql_user);

		// Lehrgangsdetails ermitteln
		$sql_lehrgang= "SELECT
				lehrgang_katalog.bez_kurz,
				lehrgang_katalog.bez_lang,
				UNIX_TIMESTAMP(lehrgang.datum_anfang) AS lehrganganfang,
				UNIX_TIMESTAMP(lehrgang.datum_ende) AS lehrgangende,
				lehrgang_ort.Ort,
				users.vorname,
				users.nachname,
				users.usermail
					FROM
						lehrgang
					INNER JOIN lehrgang_katalog ON lehrgang.katalogid = lehrgang_katalog.id
					INNER JOIN lehrgang_ort ON lehrgang.ort_kz = lehrgang_ort.ort_kz
					LEFT JOIN users ON lehrgang.lehrgangsleiter = users.id
				WHERE lehrgang.lehrgangid='$lehrgangid'";
		$abfrage_lehrgang = new abfrage_db($dsn1);
		$ergebnis_lehrgang = $abfrage_lehrgang->ergebnis($sql_lehrgang);

		// Ausbilderdaten ermitteln
		$sql_ausbilder= "SELECT vorname, nachname, usermail, emailon
					FROM
						users
					WHERE id='$useridausbilder'";
		$abfrage_ausbilder = new abfrage_db($dsn1);
		$ergebnis_ausbilder = $abfrage_ausbilder->ergebnis($sql_ausbilder);

		// Wenn Email on und Email vorhanden!
		if($ergebnis_user['emailon'][0]==1 AND $ergebnis_user['usermail'][0]!=null ) {

			// Status in Text umwandeln
			switch ($status):
        	case (1):
            	$status_email="angemeldet";
            	break;
        	case (2):
            	$status_email="auf die Warteliste gesetzt worden";
            	break;
			case (3):
            	$status_email="bestätigt und können am Modul teilnehmen";
            	break;
        	case (4):
            	$status_email="leider abgemeldet und können <b>nicht</b> teilnehmen";
            	break;
        	default :
            	$fehler=true;
            	break;
            endswitch;
			return $status_email;

			$feuerwehr_minden='<a href=""www.feuerwehr.minden.de"">www.feuerwehr.minden.de</a>';
			$empfaenger_benutzer = $ergebnis_user['usermail'][0];
  			$betreff_benutzer = "Statusänderung Lehrgangsanmeldung";
  			$from_benutzer = "From: Webmaster Feuerwehr Minden <webmaster@feuerwehr-minden.de>\n";
			$from_benutzer .= "Reply-To: webmaster@feuerwehr-minden.de\n";
			$from_benutzer .= "Content-Type: text/html\n";
			$text_benutzer = "Hallo ".$ergebnis_user['vorname'][0]." ".$ergebnis_user['nachname'][0].", <br><br>
				ihr Status zur Lehrgangsanmeldung wurde so ebend verändert...<br><br>
				Der Aktuelle Status ist <b>$status</b> und Sie sind  $status_email.<br><br>
				Sollten Sie noch Fragen zu dieser Änderung haben, wenden Sie sich bitte per Email an folgende Person <b>".$ergebnis_ausbilder['vorname'][0]." ".$ergebnis_ausbilder['nachname'][0]."</b> (".$ergebnis_ausbilder['usermail'][0].".<br><br>
				<u>Hier noch einmal die Lehrgangsdetails im Überblick:</u><br>
				Bezeichnung: ".$ergebnis_lehrgang['bez_lang'][0]."<br>
				kurz: ".$ergebnis_lehrgang['bez_kurz'][0]."<br>
				Ort: ".$ergebnis_lehrgang['Ort'][0]."<br>
				Beginn: ".$ergebnis_lehrgang['lehrganganfang'][0]."<br>
				Ende: ".$ergebnis_lehrgang['lehrgangende'][0]."<br>
				Lehrgangsleiter: ".$ergebnis_lehrgang['vorname'][0]." ".$ergebnis_lehrgang['nachname'][0]."<br><br>
				Bei Fragen oder Problemen wende dich bitte an den Webmaster!<br><br>
           		<b>Feuerwehr Minden</b><br>
				$feuerwehr_minden<br>";
			echo $text_benutzer;
			mail($empfaenger_benutzer, $betreff_benutzer, $text_benutzer, $from_benutzer);

		}

}

Die Pear Klasse habe ich hier ja bereits als Anhang ran gehängt!
 
Du solltest nur die Variablen globalisieren die Nicht in der Funktion definiert werden! ;)
Du hast natürlich alle globalisiert die in der Funktion definiert werden aber nicht die ausserhalb.

ich glaube es reicht wenn du die Variable $dnsl globalisierst, ist wenn ich recht sehe die einzige.

PHP:
global $dnsl;

Den Rest bitte wieder entfernen...
 
Danke dir...hatte das mit dem global etwas falsch verstanden, aber jetzt ist es mir klar geworden warum...

machmal sieht man echt den Wald vor lauter Bäumen nicht mehr
 
Du solltest auch nur Strings quoten, keine Zahlen - überprüf das nochmal bei userid (sollte meines Wissens nach immer eine Zahl sein).
 
Zurück