Einbau der Umblätterfunktion

Begonnen von GerhardSt, 05 August 2007, 16:14:52

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

GerhardSt

Hallo,
ich brauche wiedereinmal eure Hilfe, bei einer SQL-Abfrage.
Und zwar sollte dieser Code aus der Member_List/index.php
$count = "SELECT COUNT(uid) AS total FROM ${user_prefix}_users "; // Count all the users in the db..
$select = "select uid, name, uname, femail, url, user_msnm, user_yim, user_aim, user_icq from ${user_prefix}_users "; //select our data
$where = "where uname <> 'Anonymous' AND user_stat=1 ";
if (($letter != _MEMOTHER) AND ($letter != _MEMALL)) { // are we listing all or "other" ?
    $where .= "AND uname like '" . $letter . "%' "; // I guess we are not..
} else if (($letter == _MEMOTHER) AND ($letter != _MEMALL)) { // But other is numbers ?
    $where .= "AND uname REGEXP \"^\[1-9]\" "; // REGEX :D, although i think its MySQL only
    // Will have to change this later.
    // if you know a better way to match only the first char
    // to be a number in uname, please change it and email
    // myphportal-developers@lists.sourceforge.net the correction
    // or goto http://sourceforge.net/projects/myphportal and post
    // your correction there. Thanks, Bjorn.
} else { // or we are unknown or all..
    $where .= ""; // this is to get rid of anoying "undefinied variable" message
}
$sort = "order by $sortby"; //sorty by .....
$limit = " ASC LIMIT " . $min . ", " . $max; // we only want rows $min  to $max
/* due to how this works, i need the total number of users per
letter group, then we can hack of the ones we want to view */
$count_result = sql_query($count . $where);

umgecodet werden für´s PM-Modul und zwar statt dieser Abfrage:
    $qry = "SELECT " . $prefix . "_priv_msgs.*, UNIX_TIMESTAMP(msg_time) as msgtimestamp, " . $user_prefix . "_users.uname as fromname "
     . "FROM " . $prefix . "_priv_msgs LEFT JOIN " . $user_prefix . "_users ON " . $prefix . "_priv_msgs.from_userid = " . $user_prefix . "_users.uid "
     . "WHERE (to_userid = $uid) order by msg_time desc;";
    $result = sql_query($limit . $qry);


Den Rest habe ich schon Eingebaut (nur Posteingang), nur funktioniert das ganze noch nicht so richtig. Dürfte aber nur an der Abfrage liegen.
Ich hänge die geänderten Dateien hier mal an.
Währe super wenn das jemand zum laufen bringt.

P.S. Die Varriablen $letter, $sort, $sortby werden nicht benötigt, da nur die Umblätterfunktion verwendet wird.

Gerhard

[gelöscht durch Administrator]

GerhardSt

Wer kann mir bei diesen Fehlern helfen?
ZitatError sql_query():
qry: SELECT COUNT(msg_id) AS total FROM {prefix}_priv_msgs, {prefix}_users.uname as fromname FROM {prefix}_priv_msgs LEFT JOIN {prefix}_users ON {prefix}_priv_msgs.from_userid = {prefix}_users.uid WHERE (to_userid = 2) order by msg_time desc
descr: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM {prefix}_priv_msgs LEFT JOIN {prefix}_users ON {prefix}_priv_msgs.from_userid ' at line 1 ( mysql 1064 )
details:

file: /modules/Private_Messages/index.php # line: 109, cmd: sql_query(SELECT COUNT(msg_id) AS total FROM mx42187_priv_msgs, mx42187_us...),
file: /modules/Private_Messages/index.php # line:1231, cmd: msgindex(SELECT COUNT(msg_id) AS total FROM mx42187_priv_msgs, mx42187_us..., 2),
file: /modules.php # line: 136, cmd: include_once(SELECT COUNT(msg_id) AS total FROM mx42187_priv_msgs, mx42187_us..., 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/index.php # line: 110, cmd: sql_fetch_row(false),
file: /modules/Private_Messages/index.php # line:1231, cmd: msgindex(false, 2),
file: /modules.php # line: 136, cmd: include_once(false, 2, /modules/Private_Messages/index.php),


Error sql_query():
qry: select msg_id, msg_image, subject, from_userid, to_userid, UNIX_TIMESTAMP(msg_time) as msgtimestamp, msg_text, read_msg from {prefix}_priv_msgs, {prefix}_users.uname as fromname FROM {prefix}_priv_msgs LEFT JOIN {prefix}_users ON {prefix}_priv_msgs.from_userid = {prefix}_users.uid WHERE (to_userid = 2) order by msg_time desc; ASC LIMIT 0, 20
descr: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM {prefix}_priv_msgs LEFT JOIN {prefix}_users ON {prefix}_priv_msgs.from_userid ' at line 1 ( mysql 1064 )
details:

file: /modules/Private_Messages/index.php # line: 111, cmd: sql_query(select msg_id, msg_image, subject, from_userid, to_userid, UNIX_...),
file: /modules/Private_Messages/index.php # line:1231, cmd: msgindex(select msg_id, msg_image, subject, from_userid, to_userid, UNIX_..., 2),
file: /modules.php # line: 136, cmd: include_once(select msg_id, msg_image, subject, from_userid, to_userid, UNIX_..., 2, /modules/Private_Messages/index.php),

Als Anhang die dazugehörige index.php

[gelöscht durch Administrator]

GerhardSt

Hallo,
ich habe noch eine etwas andere Lösung gefunden. Nur mit der Abfrage vom $count komme ich nicht zu recht.
Die Abfrage sieht bei mir jetzt so aus:$count = "SELECT COUNT(msg_id) AS total FROM " . $prefix . "_priv_msgs "// Count all the users in the db..
       . "FROM " . $prefix . "_priv_msgs LEFT JOIN " . $user_prefix . "_users ON " . $prefix . "_priv_msgs.from_userid = " . $user_prefix . "_users.uid "
        . "WHERE (to_userid = $uid) order by msg_time desc;";

Nur in der zweiten Zeile stimmt irgend etwas nicht.
Ich weiss zwar nicht ob dies der richtige Weg ist, aber vielleicht fällt euch dazu etwas ein.
Im Anhang die index.php, die Zeilen 98 und 105 sind noch auskommentiert, wegen der Fehlermeldungen.

Bin für jeden Tip dankbar, Gerhard

[gelöscht durch Administrator]

GerhardSt

So, das Problem ist gelöst!

Jogi24 hat es bereits erfolgreich getestet und auch noch etwas verbessert!
Danke Jogi24 :thumbup:

Der Download ist bereits aktuallisiert, falls ihr noch Fehler feststellen solltet bitte hier Posten!

P.S. Wieviele PM´s auf einer Seite angezeigt werden, könnt ihr wie auch alles andere in der config.php ändern!