P_ Richner schrieb:> Wo liegt das Problem?
Des Rätsels Lösung hast du doch eh schon selbst sogar zwei Mal gepostet:
"Trying to get property of non-object".
In Zeile 154 greifst du auf die Property des $data-Objekts zu ("Trying
to get property..."). Zumindest versuchst du das, denn laut der
Fehlermeldung ist $data kein Objekt(... of non-object). Also wirf mal
den Debugger an und schau, was das sonst ist.
Returns an object with properties that correspond to the fetched row, or FALSE if there are no more rows.
"FALSE" ist kein Objekt, und hat keine Eigenschaft "change_priority".
Also:
$data = mssql_fetch_object($temp);
if (!$data) { die("Something went wrong"); }
if($data->change_priority == "1")
oder mit mssql_num_rows($query) vorher prüfen, wieviele Zeilen gefunden
wurden, oder, oder...
Εrnst B✶ schrieb:> $data = mssql_fetch_object($temp);> if (!$data) { die("Something went wrong"; }> if($data->change_priority == "1")
Habe es so ausprobiert und ich erhalte die Fehlermeldung "Something went
wrong". D.h., dass ich keine Daten erhalte. Aber wie kann ich das
ändern?
Habe es auch mit mssql_fetch_row() und mssql_fetch_array() probiert,
geht trotzdem nicht.
P_ Richner schrieb:> Habe es so ausprobiert und ich erhalte die Fehlermeldung "Something went> wrong". D.h., dass ich keine Daten erhalte. Aber wie kann ich das> ändern?
1. Datenbanktabelle anlegen
2. Datenbanktabelle mit Daten befüllen
3. Datenbankverbindung herstellen
http://www.php.net/manual/en/function.mssql-query.php
4. Daten abfragen
http://www.php.net/manual/en/function.mssql-fetch-object.php
5. Nach dem Erfolgserlebnis erst einmal die DOKU lesen, dort steht das
mit einfachsten Beispielen beschrieben.
P.S.: schau dir einmal deinen Eingangspost an. Wie glaubst du soll dir
jemand mit diesem Miniausschnitt gezielt weiterhelfen?
Die Datenbank ist schon vorhanden. Die Website wurde vor vier Jahren
programmiert und damals funktionierte alles. Jetzt muss ich sie auf den
neusten Stand bringen...
1
function(...)
2
{
3
sql_open();
4
$temp=mssql_query("SELECT * FROM [USER] WHERE [User] = '".ldap_name($_SERVER['AUTHENTICATE_SAMACCOUNTNAME'])."'");
Also: Statt die("Keine Daten erhalten") einfach ein die("Useraccount
existiert nicht") einsetzen, und schon passt alles wieder.
Du versuchst einen Datensatz aus der USER-Tabelle zu lesen, der nicht
existiert. Wie darauf richtig zu reagieren ist, musst du selber wissen.
Εrnst B✶ schrieb:> ein die("Useraccount> existiert nicht") einsetzen, und schon passt alles wieder.
Wenn ich die ("Keine Daten erhalten") herausnehme,funktioniert es, es
zeigt einfach die Fehlermeldungen an. Unterdrücken könnte ich sie auch,
dies löst jedoch nicht das Problem.
Dann geht's los mit schrittweisem Debugging:
1. Welche Query ("SELECT * FROM [USER] WHERE [User] =
'".ldap_name($_SERVER['AUTHENTICATE_SAMACCOUNTNAME'])."'") wird
überhaupt erzeugt? Lass dir das ausgeben. Kann das stimmen?
2. Schaut das gut aus, dann führe das direkt in der Datenbank aus.
Kommen dort Ergebnisse heraus?
3. Wenn ja, dann schau was in deinem $temp (übrigens nicht gerade eine
gute Variablenbezeichnung) drinsteht. Doku lesen: "Returns a MS SQL
result resource on success, TRUE if no rows were returned, or FALSE on
error."
Wenn TRUE oder FALSE, dann hast du hier ein Problem, ansonsten weiter
mit dem nächsten Schritt:
4. Den Schritt hast du ja schon gemacht, also eigentlich von hinten
begonnen. Überprüfe $data. Hier steht ja anscheinend FALSE drinnen.
Trotzdem noch einmal explizit ausgeben lassen und überprüfen was
wirklich drinsteht.
P_ Richner schrieb:> Ich sehe nicht, wo der Unterschied ist.
Die eine Funktion wird nur dann aufgerufen, wenn der Benutzer korrekt
eingeloggt ist. Deine neue funktion wird scheinbar auch dann aufgerufen,
wenn das nicht der Fall ist.
=> Ich hoffe, das ist keine Sicherheitsrelevante Sache, an der du
arbeitest...
Εrnst B✶ schrieb:> Deine neue funktion wird scheinbar auch dann aufgerufen,> wenn das nicht der Fall ist.
Es ist ja codemässig genau dasselbe, nur mit anderen Ausführungen in der
if()-Abfrage.
> Ich hoffe, das ist keine Sicherheitsrelevante Sache, an der du> arbeitest...
Nein ist es nicht
P_ Richner schrieb:> Es ist ja codemässig genau dasselbe, nur mit anderen Ausführungen in der> if()-Abfrage.
Es geht nicht nur darum, was in der Funktion steht, sondern auch
wann und wo sie ausgeführt wird.
Wenn der Programmierer der funktionierenden Funktion durch Checks
vorher, durch Programmlogik, Zugriffsbeschränkungen, .htaccess, whatever
sichergestellt hat, dass seine Funktion nur für gültige, eingeloggte,
Benutzer ausgeführt wird, und du das für die neue Funktion nicht tust,
dann geht die alte weiterhin, und deine neue halt nicht, oder nur
manchmal, oder vielleicht zufälligerweise sogar immer.
=> Du musst verstehen was du tust.
Nicht per Copy&Paste irgendwas zusammenstöpseln, und dann hoffen dass
ein Webforum das irgendwie in eine lauffähige Form zusammenwürfeln kann.
Sorry wenn das böse klingt, aber so ist es einfach. Wir können hier,
ohne alles aussenrum zu kennen, nur an Symptomen herumdoktorn, aber das
eigentliche Problem nicht sehen.
P_ Richner schrieb:> $temp = mssql_quer
man sollte auch prüfen ob DAS überhaupt geklappt hat.
P_ Richner schrieb:> und damals funktionierte alles
Wenn alles funktioniert, warum änderst du es dann?