pragmaMx Support Forum

pragmaMx => Coder und Bastlerecke => Gemeinschaftsprojekt "private messages" erweitern => Thema gestartet von: Andi am 28 Mai 2007, 11:24:20

Titel: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 11:24:20
Der erste Klick auf "Private Nachrichten" bringt folgende 2 Fehlermeldungen:

ZitatNotice: Use of undefined constant uname - assumed 'uname' in \modules\Private_Messages\inboxsize-conf.php on line 2

ZitatNotice: Undefined variable: uinfo in \modules\Private_Messages\inboxsize-conf.php on line 2


Etliche PHP-Coder sagen jetzt:
Das sind Notices, die kannst du ignorieren.

Ich sage:
Das sind Fehler und mindestens einer davon ein ganz krasser, der zu einer Funktionsstörung führt.


So, jetzt dürft ihr erstmal ;)

Woher kommen die Fehler?
Was ist zu tun?


PS/Edit: Screenshot zur Spurensuche anbei
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Eismann1976 am 28 Mai 2007, 15:03:28
Use of undefined constant uname

Ich dachte uname ist immer eine Variable ? Der Wert kann/darf doch garnicht konstant sein !? Müsste es dann nicht $uname heißen oder versteh ich das jetzt falsch ?
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 15:24:06
Oki, betrachten wir die Zeile.

$qry = "select user_ingroup from " . $prefix . "_users where uname='" . $uinfo[uname] . "'";

Dort wird der Variablen $qry ein String als Wert übergeben. Der String setzt sich wiederum aus mehreren Teilstrings und einigen Variablen zusammen. Die Variable $uinfo ist ein Array und von diesem Array wird der Index "uname" in dem String verwendet.

Lesen wir die Fehlermeldung:
ZitatUse of undefined constant uname - assumed 'uname'
Es wird die undefinierte Konstante "uname" verwendet. Warum das?

Wir guggen ins PHP-Manual und betrachten die Schreibweise von Strings, Variablen und Arrays
http://www.php.net/manual/de/language.types.string.php
http://www.php.net/manual/de/language.variables.php
http://www.php.net/manual/de/language.types.array.php
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 16:39:46
Kleiner Tip, sehe gerade, der Fehler ist sogar direkt im Manual beschrieben:

http://www.php.net/manual/de/language.types.array.php#language.types.array.donts
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 28 Mai 2007, 16:44:39
Stimmt, da sind Fehler drinnen!
Wie man ja schon aus der Fehlermeldung lesen kann gehört muss das ['uname'] heissen.

Bleibt nur noch der zweite Fehler!
ZitatNotice: Undefined variable: uinfo in F:\xampp\htdocs\html\modules\Private_Messages\inboxsize-conf.php on line 2
Da bin ich schuld! Ich habe da eine Zeile zuviel gelöscht.
Also der Inhalt der inboxsize-conf.php muss so aussehen
Zitat<?php
$uinfo = mxGetUserData();
$qry = "select user_ingroup from " . $prefix . "_users where uname='" . $uinfo['uname'] . "'";
$result = sql_query($qry);
list($user_ingroup) = sql_fetch_row($result);

if ($user_ingroup == 2) {
        $inboxsize = 800;
        $sentboxsize = 800;
   } else {
        $inboxsize = 200;
        $sentboxsize = 200;
}

?>

Danke, Andi!
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Eismann1976 am 28 Mai 2007, 17:03:49
Ha, was gelernt.  :cul:
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 28 Mai 2007, 17:06:43
Ja und wenn ich das jetzt richtig sehe, ist auch schon der erste Fehler weg!
Denn bei mir funktioniert die Begrenzung schon für verschiedene Benutzergruppen.
Wie schaut es da bei euch aus?
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Eismann1976 am 28 Mai 2007, 17:36:18
Gerade getestet. Fehler weg. Begrenzung funktioniert.   :thumbup:

Edit: Habs gleich in den aktuellen Download mit reingepackt.
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 28 Mai 2007, 18:01:22
@ Eismann1976
Danke, das du das mit dem Download übernommen hast. :thumbup:


Leider sind in dieser Datei noch mehr Fehler vorhanden, ich habe da gerade folgende Meldung bekommen.
ZitatNotice: Undefined variable: prefix in F:\xampp\htdocs\html\modules\Private_Messages\inboxsize-conf.php on line 3

Error sql_query():
qry: select user_ingroup from _users where uname='GerhardSt'
descr: Table 'usr_web158_3._users' doesn't exist ( mysql 1146 )
details:
file: /modules/Private_Messages/inboxsize-conf.php # line:   4, cmd: sql_query(select user_ingroup from _users where uname='GerhardSt'),
file: /modules/Private_Messages/index.php # line: 821, cmd: include(select user_ingroup from _users where uname='GerhardSt', /modules/Private_Messages/inboxsize-conf.php),
file: /modules/Private_Messages/index.php # line:1031, cmd: submitmessage(select user_ingroup from _users where uname='GerhardSt', /modules/Private_Messages/inboxsize-conf.php, Array[10], 2),
file: /modules.php # line: 136, cmd: include_once(select user_ingroup from _users where uname='GerhardSt', /modules/Private_Messages/inboxsize-conf.php, Array[10], 2, /modules/Private_Messages/index.php),


Error sql_fetch_row():
descr: mysql_fetch_row(): supplied argument is not a valid MySQL result resource
details:
file: /modules/Private_Messages/inboxsize-conf.php # line:   5, cmd: sql_fetch_row(false),
file: /modules/Private_Messages/index.php # line: 821, cmd: include(false, /modules/Private_Messages/inboxsize-conf.php),
file: /modules/Private_Messages/index.php # line:1031, cmd: submitmessage(false, /modules/Private_Messages/inboxsize-conf.php, Array[10], 2),
file: /modules.php # line: 136, cmd: include_once(false, /modules/Private_Messages/inboxsize-conf.php, Array[10], 2, /modules/Private_Messages/index.php),


Notice: Undefined variable: dbi in F:\xampp\htdocs\html\modules\Private_Messages\index.php on line 898

Notice: Undefined variable: dbi in F:\xampp\htdocs\html\modules\Private_Messages\index.php on line 898
Den Fehler sieht man nur ganz kurz, wenn man eine Nachricht versendet.
Ich schätze mal, dies ist der Grund warum mit PM-Begrenzung, der Postausgang nicht stimmt!
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Eismann1976 am 28 Mai 2007, 18:11:57
Wenn man in der config.php des Moduls hier

$refresh = 1 ; # the Time in seconds for auto-refresh to messagelist, when delete or send messages

die Zeit hochstellt kann man mal in Ruhe lesen. Ich hab den Fehler auch.

Ein weiterer Fehler der damit zusammenhängen dürfte kommt wenn man über die Online-Liste ein neues PM Popup aufrufen will.

Error sql_query():
qry: select user_ingroup from _users where uname='Tester'
descr: Table 'pmtest._users' doesn't exist ( mysql 1146 )
details:

file: /modules/Private_Messages/inboxsize-conf.php # line:   4, cmd: sql_query(select user_ingroup from _users where uname='Tester'),
file: /modules/Private_Messages/buddy.php # line: 150, cmd: include(select user_ingroup from _users where uname='Tester', /modules/Private_Messages/inboxsize-conf.p...),
file: /modules/Private_Messages/buddy.php # line: 525, cmd: compose(select user_ingroup from _users where uname='Tester', /modules/Private_Messages/inboxsize-conf.p..., Admin, ),
file: /modules.php # line: 136, cmd: include_once(select user_ingroup from _users where uname='Tester', /modules/Private_Messages/inboxsize-conf.p..., Admin, , /modules/Private_Messages/buddy.php),


Error sql_fetch_row():
descr: mysql_fetch_row(): supplied argument is not a valid MySQL result resource
details:

file: /modules/Private_Messages/inboxsize-conf.php # line:   5, cmd: sql_fetch_row(false),
file: /modules/Private_Messages/buddy.php # line: 150, cmd: include(false, /modules/Private_Messages/inboxsize-conf.p...),
file: /modules/Private_Messages/buddy.php # line: 525, cmd: compose(false, /modules/Private_Messages/inboxsize-conf.p..., Admin, ),
file: /modules.php # line: 136, cmd: include_once(false, /modules/Private_Messages/inboxsize-conf.p..., Admin, , /modules/Private_Messages/buddy.php),
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 18:22:43
perfekt  :thumbup:

das war die Funktionsstörung, die ich von Anfang an angesprochen hatte ;)

Aber schauen wir doch was da passiert ist.
Die Variable $qry beeinhaltet ja letztendlich die Datenbankabfrage, die mySql übergeben wird um die Benutzergruppe des aktuellen Users zu ermitteln. Da aber $uinfo nicht definiert war, wurde aus $uinfo[uname] einfach ein leerer String. Die Datenabnkanfrage, die mySql zu sehen bekam, sah also so aus:
select user_ingroup from mx_users where uname='' Es sollte also ein Datensatz ermittelt werden, bei dem das Feld uname leer ist. Einen solchen Datensatz gibt es in der Usertabelle aber nicht. Die Variable $user_ingroup war folglich auch immer leer. Demnach wurde in der folgenden IF-Struktur immer der Else-Zweig verwendet.

In dieser Datei (inboxsize-conf.php) sind noch mehr Fehler und Ungereimtheiten. Aber die besprechen wir, wenn wir zu dem Punkt "Begrenzung des Postfachs" kommen. Dazu gehört diese Datei...



Aber machen wir erstmal mit den Fehlermeldungen weiter, wer findet noch welche?
Wie gesagt, das Friendslistmodul und dessen DB-Tabellen sind noch nicht vorhanden. Diese Möglichkeit, dass das Modul fehlt, müsste man später sowieso abfangen. (ist ein TODO für später)


Beim abschicken einer Nachricht kommt bei mir z.B. folgendes:
ZitatNotice: Undefined variable: prefix in /modules/Private_Messages/inboxsize-conf.php on line 3

Error sql_query():
qry: select user_ingroup from _users where uname='Andi'
descr: Table 'dev_pm._users' doesn't exist ( mysql 1146 )

Error sql_query():
qry: select uname from {prefix}_users_ignorelist where uid='2' AND ignoreid='2'
descr: Table 'dev_pm.{prefix}_users_ignorelist' doesn't exist ( mysql 1146 )

Notice: Undefined variable: dbi in /modules/Private_Messages/index.php on line 900

Error sql_query():
qry: SELECT uname, email, user_pm_mail FROM {prefix}_users WHERE uid='2'
descr: Unknown column 'user_pm_mail' in 'field list' ( mysql 1054 )

Notice: Undefined variable: dbi in /modules/Private_Messages/index.php on line 900
Screenie wieder anbei

Ganz ähnliches auch beim Senden über den Messenger...


EDIT: uuups, seid ihr schnell....
das hat sich überschnitten ;)


PS: um den Fehler beim Senden dauerhaft anzuzeigen, einfach im Browser mehrmals die Abbrechen Schaltfläche drücken, bis der eingeleitete refresh abgebrochen wurde.
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 18:30:54
ZitatIch schätze mal, dies ist der Grund warum mit PM-Begrenzung, der Postausgang nicht stimmt!

Nicht vermuten was passiert, sondern die Ursache für die Fehlermeldung finden ;)


Wichtig ist in dem Fall die fehlende Variable $prefix, die $dbi können wir ertmal ignorieren, dazu etwaas später mehr...

Der passende Link zum Manual:
http://www.php.net/manual/de/language.variables.scope.php

Tip: die Datei inboxsize-conf.php wird innerhalb einer Funktion includet. Welche, das sieht man im Callstack in meinem Screenie...
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 28 Mai 2007, 18:47:02
Das geht ja schnell!
In die zweite Zeile gleich nach <?php gehört
Zitatglobal $prefix;

Bleiben diese zwei
ZitatNotice: Undefined variable: dbi in /modules/Private_Messages/index.php on line 900

Notice: Undefined variable: dbi in /modules/Private_Messages/index.php on line 900
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Eismann1976 am 28 Mai 2007, 18:52:44
Hatte ich auch gerade so, allerdings

<?php
global $user_prefix;
$uinfo mxGetUserData();
$qry "select user_ingroup from " $user_prefix "_users where uname='" $uinfo['uname'] . "'";


Jubilee hatte mal geschrieben, dass es ohnehin logisch wäre den user_prefix zu verwenden.

Wenn man das hier gleich so einfliesen lassen könnte müßte ich es nicht immer bei mir umschreiben. Oder hat das Nachteile ?
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 19:23:40
Ey, da wird mitgedacht  :thumbup: :thumbup:

Stimmt mit dem Userprefix, hatte ich auch gesehen, wollte ich aber erst später drauf kommen.  ;)
Also, diese Codezeilen sind dann richtig und sollten so übernommen werden.

Aber wie gesagt, mit dieser Datei sind wir noch nicht fertig ;)


Zu $dbi:

$dbi ist eine global verwendete Systemvariable, in der grob gesagt die Datenbankverbindung gespeichert ist. Diese Variable kann man allen pragmaMx-Funktionen übergeben, die die Datenbank ansprechen. Also all dem Kram, welches in der /includes/sql_layer.php drinsteht. Wenn ihr da mal reinschaut könnt ihr das sehen, dass z.B. die Funktion sql_query() einen zweiten optionalen Parameter haben kann. Das ist eigentlich noch ein phpNuke Erbe, dort musste diese $dbi Variable wirklich immer übergeben werden. In pragmaMx kann man die übergeben, braucht aber nicht.
Also kann man in dem Fall die Meldung ignorieren, weil ja unnötig...

Aber wir machen das richtig!
Das ist die betreffende Codezeile:
list($touser_uname,$touser_email,$user_pm_mail) = sql_fetch_row(sql_query("SELECT uname, email, user_pm_mail FROM " . $user_prefix . "_users WHERE uid='$to_userid'", $dbi), $dbi);
Um die Fehlermeldung zu verhindern, löschen wir dort diese Variable $dbi einfach aus den Funktionsparametern raus. Also jeweils $dbi mitsamt dem Komma davor...
Neu:
list($touser_uname,$touser_email,$user_pm_mail) = sql_fetch_row(sql_query("SELECT uname, email, user_pm_mail FROM " . $user_prefix . "_users WHERE uid='$to_userid'"));
Alternativ hätte man auch wieder global $dbi; vor den Funktionsaufruf schreiben können.

Dieser dort in die index.php eingefügte Codeblock hat nen logischen Fehler. Da das aber zum Mailversand gehört besprechen wir das auch später ;)


Funktionen und (optionale) Funktionsparameter:
http://www.php.net/manual/de/language.functions.php
http://www.php.net/manual/de/functions.arguments.php



So jetzt bleiben mir im Moment noch 2 Meldungen:

ZitatError sql_query():
qry: select uname from {prefix}_users_ignorelist where uid='2' AND ignoreid='2'
descr: Table 'dev_pm.{prefix}_users_ignorelist' doesn't exist ( mysql 1146 )

ZitatError sql_query():
qry: SELECT uname, email, user_pm_mail FROM {prefix}_users WHERE uid='2'
descr: Unknown column 'user_pm_mail' in 'field list' ( mysql 1054 )

Zugegeben, das Friendslist modul fehlt, nur deswegen kommen die....
Aber wie verhindern wir das bei den Usern, die das Modul noch garnicht haben?
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 28 Mai 2007, 19:33:42
In der Userinfo, view.php ist das so gelöst
Zitatif (@file_exists('modules/Private_Messages/bbfunctions.php')) {
Bei uns müsste das dann
Zitatif (@file_exists('modules/JSM_Friendlist/index.php')) {
heissen.
Werde das gleich mal versuchen.

Ab Zeile 869 die Ignore Funktion durch das hier ersetzen
Zitat//ignore Funktion
if (@file_exists('modules/Friendlist/index.php')) {
$ignore = sql_query("select uname from " . $user_prefix . "_users_ignorelist where uid='" . $to_userid . "' AND ignoreid='" . $uid . "'");
$nene = sql_num_rows($ignore);
if ($nene == 1) {
         list($ignorename) = sql_fetch_row($ignore);
            prvmsgerror($ignorename . " " . _NOMESSAGE . "<br><a href=\"modules.php?name=$module_name\">" . _PMSRETURNTOPMSG);
       }
}
######
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 19:41:29
Jop, die Lösung wäre für die erste Fehlermeldung soweit korrekt  :thumbup:
Könnte so übernommen werden. Natürlich nur, wenn das Friendlist-Modul auch wirklich so heisst.
[OT on]Ich find den Namen doof und ich würde das Ding einfach nur Friendlist nennen.[/OT off]

sehe aber gerade, die 2te Fehlermeldung kommt ja von dieser Datenbankabfrage:
SELECT uname, email, user_pm_mail FROM " . $user_prefix . "_users WHERE uid='$to_userid'
Das Feld user_pm_mail fehlt in der Usertabelle und hat eigentlich mit dem Friendlistmodul nix zu tun, sondern wird nur für den Mailversand benötigt. Anscheinend kann da der User angeben, ob er benachrichtigt werden will...?
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 28 Mai 2007, 19:49:55
Stimmt, da wurde auch was geändert.
Ist schon so lange her, ich glaube das ging so
ZitatALTER TABLE {PRÄFIX}_users ADD user_pm_mail TINYINT(1)
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 20:06:56
Oki  :thumbup:

ALTER TABLE `{USER_PREFIX}_users` ADD `user_pm_mail` TINYINT( 1 ) NOT NULL DEFAULT '0';
Also ab damit in die sql Datei ;)




So, auf den ersten Blick sind jetzt alle Fehlermeldungen verschwunden. Ich konnte ohne Meldung ne PM versenden. Die Fehlermeldung im Messenger hat sich automatisch miterledigt...
Klickt mal bitte rum und testet durch, ob noch irgendwo ne Meldung kommt...


Dann machen wir weiter mit dem Postausgang ;)
Aber neuer Thread ;)
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 28 Mai 2007, 21:19:52
@ Eismann1976
Laß dir ruhig Zeit, ich habe gerade noch eine Fehlermeldung entdeckt!

Ich hätte die Fehlermeldungen des PM-Moduls fast vergessen, da gibt es ja das Problem das die PM-Zählerstände immer 0 sind. Diese Meldung erscheint dort
ZitatNotice: Undefined variable: uid in F:\xampp\htdocs\html\modules\Private_Messages\index.php on line 285
Die Fehlermeldung, habe ich dank Andi´s Post von vorher schon wegbekommen, aber der Fehler bleibt.
Zeile 281 von
Zitatglobal $header, $footer, $PHP_SELF, $bgcolor2, $url_button;
auf
Zitatglobal $header, $footer, $PHP_SELF, $bgcolor2, $url_button, $uid;
ändern.
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 21:22:57
Ich habe die Posts mit dem Userprefix mal hier abgetrennt.
Das ist ein anderes Thema.


Aber beim Senden mit dem Messanger kommen noch Fehlermeldungen:

ZitatWarning: Missing argument 5 for sendm(), called in \modules\Private_Messages\buddy.php on line 521 and defined in \modules\Private_Messages\buddy.php on line 214

Error sql_query():
qry: select ignoreid, uname from {prefix}_users_ignorelist where uid='2'
descr: Table 'dev_pm.{prefix}_users_ignorelist' doesn't exist ( mysql 1146 )

Notice: Undefined variable: notsave in \modules\Private_Messages\buddy.php on line 238
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 28 Mai 2007, 21:31:52
Ja genau, da ist die Ignore-Funktion ja auch noch mal drinn.
Ab Zeile 225 die Ignore-Funktion durch diesen Code ersetzen.
Zitat//ignore Funktion
if (@file_exists('modules/Friendlist/index.php')) {
      $ignore = sql_query("select ignoreid, uname from " . $user_prefix . "_users_ignorelist where uid='" . $to_userid . "'");
      list($ignoreid, $ignorename) = sql_fetch_row($ignore);
      if ($ignoreid == $GLOBALS["userinfo"]["uid"]) {
create_headerforall(_PMSTITLE);
   create_bodyforall();
echo "<br><center>" . $ignorename . " " . _NOMESSAGE . "<br />"
   ."</TR></table>";
}
####

Da stimmt aber noch mehr nicht, zumindest bekomme ich da noch folgende Fehlermeldung
ZitatWarning: Missing argument 5 for sendm(), called in F:\xampp\htdocs\html\modules\Private_Messages\buddy.php on line 523 and defined in F:\xampp\htdocs\html\modules\Private_Messages\buddy.php on line 214
oder funktioniert der Befehl in der buddy.php nicht?
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: JoergK am 28 Mai 2007, 22:57:03
Tschuldigung, wenn ich mich einmische, aber...

Zitat von: GerhardSt am 28 Mai 2007, 19:33:42
Bei uns müsste das dann
Zitatif (@file_exists('modules/JSM_Friendlist/index.php')) {
heissen.

wäre es nicht besser, die if-clause mittels
if (mxModuleAllowed("Friendlist")) {

zu gestalten?

Damit würden Fehler(meldungen) während einer nachträglichen Installation des Friendlist-Moduls ausgeschlossen bis es in der Modulsteuerung auch freigegeben ist.  ;)
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Eismann1976 am 28 Mai 2007, 23:16:43
Wieso einmischen. Willkommen   :)
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 28 Mai 2007, 23:49:50
Jop, würde ich auch sagen, Willkommen  :) :thumbup:
Wäre ja schön, wenn das hier nicht nur ein Dreierdialog bliebe....

Ja, eigentlich wäre das der bessere Weg, um abzufragen ob das Modul vorhanden ist. Das sollten wir später auch nochmal aufgreifen. Im Moment wollen wir ja nur mal die Fehlermeldungen wegbekommen. Die Integration des Friendlistmoduls, bzw. der Ignore-Funktion kommt dann erst am Ende.

Zitat von: GerhardSt am 28 Mai 2007, 21:31:52
Da stimmt aber noch mehr nicht, zumindest bekomme ich da noch folgende Fehlermeldung
ZitatWarning: Missing argument 5 for sendm(), called in F:\xampp\htdocs\html\modules\Private_Messages\buddy.php on line 523 and defined in F:\xampp\htdocs\html\modules\Private_Messages\buddy.php on line 214
oder funktioniert der Befehl in der buddy.php nicht?
Jop, den Fehler habe ich ja auch bekommen.
Was bedeutet der?


Der Dateivergleich zwischen Original index.php und unserer abgeänderten buddy.php zeigt folgende Unterschiede:
Original function sendm($to, $to_userid, $msg_text, $subject)
geändert function sendm($to, $to_userid, $msg_text, $subject, $notsave)


Tip: Es wird eine Funktion mit der falschen Anzahl von Parametern aufgerufen. Aufruf und Deklaration müssen ja übereinstimmen. Link dazu hatten wir schon: http://www.php.net/manual/de/functions.arguments.php
Wo wird die Funktion aufgerufen, was ist zu tun?
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: pimpinel am 29 Mai 2007, 11:03:02
hi

habe mir den download gezogen und installiert.
folgegende fehlermeldung erscheint.

Parse error: parse error, unexpected ';' in P:\Programme\xampp\htdocs\pragmaMx_0.1.9.1\modules\Private_Messages\index.php on line 904
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 29 Mai 2007, 15:09:44
Schön, und was könnte die Ursache dafür sein?

Wir suchgen ja nicht nur Fehler, sondern auch Lösungen...  ;)
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: JoergK am 29 Mai 2007, 17:02:27
Zitat von: pimpinel am 29 Mai 2007, 11:03:02
Parse error: parse error, unexpected ';' in P:\Programme\xampp\htdocs\pragmaMx_0.1.9.1\modules\Private_Messages\index.php on line 904

Ohne es getestet zu haben würde ich sagen, da fehlt eine schliessende Klammer ")" vor dem Semikolon in der genannten Zeile 904.  ;)
Alt:
Zitatlist($touser_uname,$touser_email,$user_pm_mail) = sql_fetch_row(sql_query("SELECT uname, email, user_pm_mail FROM " . $user_prefix . "_users WHERE uid='$to_userid'");
Neu:
Zitatlist($touser_uname,$touser_email,$user_pm_mail) = sql_fetch_row(sql_query("SELECT uname, email, user_pm_mail FROM " . $user_prefix . "_users WHERE uid='$to_userid'"));
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 29 Mai 2007, 20:39:01
ZitatOhne es getestet zu haben würde ich sagen, da fehlt eine schliessende Klammer ")" vor dem Semikolon in der genannten Zeile 904.  Wink
:gruebel: Wann ist die den verschwunden? Ich habe da schon immer zwei!

Aber ist ja egal!

Es freut mich das hier, doch mal ein wenig mehr mitmachen!


Auch von mir Herzlich Willkommen!
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 29 Mai 2007, 22:49:22
@Andi
Ich habe gerade den Thread wieder gefunden, wo das mit der E-Mailbenachrichtigung drinnen steht.
Der SQL-Befehl lautet dort (http://www.pragmamx.org/Forum-topic-17936-start-msg124317.html#msg124317)
ZitatUPDATE `mx{Prefix}_users`SET `user_pm_mail`='1' WHERE `user_pm_mail`='0';
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: Andi am 31 Mai 2007, 19:01:18
Moin :)

Zitat von: GerhardSt am 29 Mai 2007, 20:39:01
:gruebel: Wann ist die den verschwunden? Ich habe da schon immer zwei!
Aber ist ja egal!


Naja, so egal ist das m.E. nicht. Es ist eine offensichtlich fehlerhafte Datei ins Downloadpaket gelangt. Das fördert nicht unbedingt das Vertrauen in den Code bzw. ins Projekt ;)
Um Parsefehler zu erkennen gibt es eine ganz einfache Möglichkeit, auch ohne besondere Editoren, die das erkennen: Man ruft die URL der Datei direkt im Browser auf.

Zitat von: GerhardSt am 29 Mai 2007, 22:49:22
@Andi
Ich habe gerade den Thread wieder gefunden, wo das mit der E-Mailbenachrichtigung drinnen steht.
Der SQL-Befehl lautet dort (http://www.pragmamx.org/Forum-topic-17936-start-msg124317.html#msg124317)
ZitatUPDATE `mx{Prefix}_users`SET `user_pm_mail`='1' WHERE `user_pm_mail`='0';
Oki, dieser sql-Befehl schaltet anscheinend bei allen Usern die Mailbenachrichtigung ein. Aber was machen wir mit dem Code und vor allem mit den Usern, die die Benachrichtigung nicht haben wollen?
Aber das Thema kommt in unserer Reihenfolge erst später...


Ich denke die meisten offensichtlichen Fehler haben wir soweit behoben, dass man mit den eigentlichen Funktionen weitermachen kann, ohne von anderen Fehlermeldungen beeinträchtigt zu sein.

Wie gehts weiter? >> der Postausgang, oder?

Würde einen neuen Thread vorschlagen, wo wir erstmal guggen, was dieser Postausgang so alles können und haben muss, was davon schon in dem Code drin ist und was schon funktioniert, oder eben noch nicht funktioniert.....
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 31 Mai 2007, 23:54:21
ZitatOki, dieser sql-Befehl schaltet anscheinend bei allen Usern die Mailbenachrichtigung ein. Aber was machen wir mit dem Code und vor allem mit den Usern, die die Benachrichtigung nicht haben wollen?
Aber das Thema kommt in unserer Reihenfolge erst später...
Ja, das fehlt auch noch, den Thread sollte wir uns aber merken, da ich darin den Einbau bereits beschrieben habe. War zwar für die 1.8.1 aber soviel hat sich da nicht geändert.
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 08 Juni 2007, 23:46:28
Hallo, die Zähler funktionieren leider immer noch nicht richtig!
Ungelesene Nachrichten werden nicht gezählt, weiß jemand woran das liegen kann?
Titel: Re: erster Aufruf, die Fehlermeldungen...
Beitrag von: GerhardSt am 10 Juni 2007, 11:38:31
Hallo, ich bin zwar nicht sicher ob ich das so richtig gemacht habe, aber bei mir stimmt der Zählerstand jetzt.
Ich habe dazu in der index.php ab Zeile 197 und ab Zeile 247, dort wo die PM Begrenzung anfängt den Code so ersetzt:
Zitat//PM Begrenzung
   $uid = (int)$uid;
   $allget = 0;
   $allsend = 0;
   $qry = "SELECT to_userid, Count(msg_id) FROM  ${prefix}_priv_msgs WHERE to_userid=" . $uid . " GROUP BY to_userid;";
      $result = sql_query($qry);
      while (list($to_userid, $nums) = sql_fetch_row($result)) {
           $allget = $nums;   #++;   # Anzahl aller pm's ermitteln
      }
      $qry = "SELECT to_userid, Count(msg_id) FROM ${prefix}_priv_msgs_send WHERE to_userid=" . $uid . " GROUP BY to_userid;";
      $result = sql_query($qry);
      while (list($to_userid, $nums) = sql_fetch_row($result)) {
           $allsend = $nums;   #++;   # Anzahl aller pm's ermitteln
      }
in der nächsten Zeile steht dann:
Zitatinclude("modules/Private_Messages/inboxsize-conf.php");
Währe nett von euch, wenn ihr mal kurz schreiben könntet ob das auch bei euch klappt.

Gerhard