PHP MYSQL only first entry from user

10/15/2013 21:15 DJRedMax#1
Code:
$founduserid = array();
$getmess = mysql_query("SELECT * FROM bg_message WHERE touser = '".$userdaten["id"]."' && userid NOT IN  (".implode(',', $founduserid).") ORDER by id DESC ");
while($werte = mysql_fetch_array($getmess))
{
$founduserid[] =  $werte["userid"];
}
ALso ich habe folgendes Problem. Ich habe in einer Datenbank viele einträge von verschiedenen Usern und möchte quasi von jedem User nur den neusten haben.

Wie kann ich das allerdings umsetzen? Wie ich es ca meine zeigt mein Beispiel oben, allerdings geht das ja nicht ^^
10/15/2013 21:47 Synatex#2
Oh Glaskuugel, helf uns doch bitte. Oh - scheint ne Störung zu haben.

Man muss es glaub ich hier für jeden einzeln wiederholen, können wir hellsehen? Wie wäre es mit ner Datenbankstruktur?
10/15/2013 22:11 mhaendler#3
von jeden nur den neuesten : order by creation_date desc
dann von jeden nutzer nur einen: group by user_id

Ohne mehr Info's können wir dir allerdings nicht mehr helfen, wie Synatex schon sagt
10/15/2013 22:48 DJRedMax#4
In meinem Beispiel sind alle benötigten Informationen die Ihr braucht.

Es gibt touser, welche die eigene User ist ist und es gibt userid, dies ist die id vom anderen user.

Mir ist klar das ich mit ORDER by id DESC die neusten bekomme nun soller aber auch schauen das er nur 1 mal userid = 3 zb ausgibt, auch wenn es von ihm 4 einträge gibt.
10/15/2013 23:05 tolio#5
versuchs mal damit
[Only registered and activated users can see links. Click Here To Register...]
10/15/2013 23:13 KoKsPfLaNzE#6
meinst du vielleicht "group by userid"
10/16/2013 09:04 mhaendler#7
Quote:
Originally Posted by DJRedMax View Post
In meinem Beispiel sind alle benötigten Informationen die Ihr braucht.

Es gibt touser, welche die eigene User ist ist und es gibt userid, dies ist die id vom anderen user.

Mir ist klar das ich mit ORDER by id DESC die neusten bekomme nun soller aber auch schauen das er nur 1 mal userid = 3 zb ausgibt, auch wenn es von ihm 4 einträge gibt.
Wenn es dir so klar ist wieso frägst du explizit danach?

Quote:
jedem User nur den neusten haben.
Desweiteren hast du mit Sicherheit in meinem Post den zweiten Teil überlesen, du brauchst noch ein "GROUP BY userid"...

Dadurch wird nun ein Eintrag der User-Id angezeigt
10/16/2013 11:39 DJRedMax#8
Quote:
Originally Posted by dealaking View Post
Wenn es dir so klar ist wieso frägst du explizit danach?



Desweiteren hast du mit Sicherheit in meinem Post den zweiten Teil überlesen, du brauchst noch ein "GROUP BY userid"...

Dadurch wird nun ein Eintrag der User-Id angezeigt
Ich habe es schon mit GROUP BY userid versucht, allerdings stimmt dann die reihenfolge wieder nicht wie sie angeordnet werden.

Ich hab das ganze jetzt etwas sehr unsauber gelöst.

PHP Code:
$founduserid = array();
$getmess mysql_query("SELECT * FROM bg_message WHERE touser = '".$userdaten["id"]."' && userid ORDER by id DESC");
while(
$werte mysql_fetch_array($getmess))
{
    if(!
in_array($werte["userid"], $founduserid))
        {
        
$founduserid[] =  $werte["userid"];

    }

10/16/2013 11:48 mhaendler#9
Okay, des sollte allerdings nicht sein, versuch bitte mal dieses SQL Statement:

Code:
$getmess = mysql_query("SELECT * FROM bg_message WHERE touser = '".$userdaten["id"]."' GROUP BY userid ORDER by id DESC");
Mir ist aufgefallen du sortierst nirgends nach deinem Erstellungsdatum oder so, wird dies überhaupt gespeichert? Wenn ja bitte ORDER BY "erstellungsdatum" DESC;
10/16/2013 11:55 DJRedMax#10
ORDER BY id DESC sortiert nach erstellungs datum :D
10/16/2013 12:26 #SoNiice#11
Wenn 'id' nicht zufällig vom Typ 'datetime' oder 'timestamp' ist eher weniger, sondern einfach nach der ID. Hast du es denn nun mit den etlichen Tipps hier hinbekommen?
10/16/2013 12:39 DJRedMax#12
Quote:
Originally Posted by Hühnchenkopf View Post
Wenn 'id' nicht zufällig vom Typ 'datetime' oder 'timestamp' ist eher weniger, sondern einfach nach der ID. Hast du es denn nun mit den etlichen Tipps hier hinbekommen?

dadurch das ID immer einen höheren wert hat pro eintrag kann man es zum sortieren perfekt verwenden, neuster eintrag hat die höchste id, hingegen wenn ich es per time sortiere und 3 einträgein der selben sekunde bekomme unterscheiden die sich nicht, die ids sind aber anders


Naja ich habs daweil mit meiner methode gemacht.
10/16/2013 12:42 KoKsPfLaNzE#13
soblad du mal paar tausend user in der DB hast, kannst das aber vergessen das du überalle User mal drüber gehst und guckst via PHP
10/16/2013 14:17 DJRedMax#14
Quote:
Originally Posted by KoKsPfLaNzE View Post
soblad du mal paar tausend user in der DB hast, kannst das aber vergessen das du überalle User mal drüber gehst und guckst via PHP
Naja Limit 25 klärt das dann.

Nur was soll ich denn sonst machen wenn GROUP BY userid dazu führt das garkeines mehr angezeigt wird, oder die reihenfolge nicht stimmt.
10/16/2013 14:22 Synatex#15
... nach zeit und user id sortieren?.. das die die gleichen sind ist sehr sehr unwahrscheinlich