[mysql/php] Private Message, query combineren?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • commeric
  • Registratie: November 2002
  • Laatst online: 14-08 22:32
Ik heb de volgende tabellen

>Users
code:
1
2
3
id  username
1   KlaasVaak
2   PietHein


>Mail
code:
1
2
id  sender  receiver    message
1   1   2       Hoi Piet


Nu zoek ik naar één query om alle gegevens uit de dbase te halen die nodig zijn. Het gaat om de situatie van de inbox (ik wil dus deze informatie laten zien):

> Inbox van PietHein
code:
1
2
3
4
------------------------------------
FROM        MESSAGE
KlaasVaak   Hoi Piet
--------------------------------------

Het is me tot op nogtoe niet gelukt om dit voorelkaar te krijgen. Aangezien er 2 usernames moeten worden geselecteerd.

Ik heb verschillende variaties op deze query geprobeerd (waarbij $_SESSION['username'] de username van de receiver is, in dit geval PietHein:
code:
1
2
3
4
SELECT mail.* , users.id,users.username, mail.id as mailid
FROM users,mail
WHERE mail.receiver = users.id AND 
users.username = '$_SESSION[username]'


Deze query geeft wel netjes het bericht weer, maar geeft een getal ipv de username van de sender.
Waarschijnlijk zal ik wel een zeer stomme denkfout hebben gemaakt, maar ik kan hem niet vinden.

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Je moet in je SQL de users tabel 2 keer joinen aan je mail tabel (met verschillende aliassen).

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 21:14

Skinny

DIRECT!

Inderdaad, dan kom je op zoiets uit volgens mij :

code:
1
2
3
4
5
6
7
SELECT  senders.naam AS sender,
    receivers.naam AS receiver,
    mail.message
FROM    users AS senders, users AS receivers, mail
WHERE   mail.receiver = 1
AND mail.receiver = receivers.id
AND mail.sender = senders.id

SIZE does matter.
"You're go at throttle up!"


Acties:
  • 0 Henk 'm!

  • Suffie
  • Registratie: Maart 2002
  • Laatst online: 27-01-2023
SELECT zender.username, ontvanger.username, mail.* FROM mail, username zender, username ontvanger WHERE zender.id = mail.sender AND ontvanger.id = mail.receiver

zoiets?

I don't suffer from insanity, I enjoy every minute of it
Trotse mama van Thijs&Bas


Acties:
  • 0 Henk 'm!

  • commeric
  • Registratie: November 2002
  • Laatst online: 14-08 22:32
code:
1
2
3
4
5
6
7
8
SELECT  senders.username AS sender,
    receivers.username AS receiver,
    mail.message, mail.id as mailid, mail.subject, mail.read, mail.date
FROM    users AS senders, users AS receivers, mail
WHERE   mail.receiver = receivers.id
AND mail.sender = senders.id
AND receivers.username =    '$_SESSION[username]' 
";

Perfect! Deze werkt uitstekend! Bedankt! _/-\o_

Acties:
  • 0 Henk 'm!

  • commeric
  • Registratie: November 2002
  • Laatst online: 14-08 22:32
Oke volgende vraag :)

ik heb dit
PHP:
1
2
3
4
5
6
7
8
$query = "              
            DELETE 
            FROM  users, mail       
            WHERE mail.receiver = users.id
            AND users.username = '$_SESSION[username]' 
            AND mail.id = '$id'         
        ";      
            $result = mysql_query($query) or die(mysql_error());

Alleen het werkt niet :( ik krijg deze error:
code:
1
You have an error in your SQL syntax near ' mail WHERE mail.receiver = users.id AND users.username = 'joop' ' at line 3

Het doel van deze query is om een record uit de mail tabel te verwijderen dat als id heeft $id en waarbij mail.receiver het id nummer van degene is die is ingelogd

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Je kunt niet uit 2 tabellen tegelijk deleten.
Wat je nodig hebt is een delete met een subquery (wat waarschijnlijk niet kan in je mysql versie) of je moet het eerst het userid query-en met een losse query en dat voeren aan de delete.

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • commeric
  • Registratie: November 2002
  • Laatst online: 14-08 22:32
justmental schreef op 12 September 2003 @ 20:28:
Je kunt niet uit 2 tabellen tegelijk deleten.
Wat je nodig hebt is een delete met een subquery (wat waarschijnlijk niet kan in je mysql versie) of je moet het eerst het userid query-en met een losse query en dat voeren aan de delete.
Ik hoef ook niet uit 2 tabellen te deleten, er hoeft maar uit _1_ tabel te worden gedelete, de andere tabel is om het user id op te halen

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

commeric2 schreef op 12 september 2003 @ 20:30:
Ik hoef ook niet uit 2 tabellen te deleten, er hoeft maar uit _1_ tabel te worden gedelete, de andere tabel is om het user id op te halen
Dat was ook enigszins ironisch bedoeld.
De rest van de post geeft de uitleg hoe het wel moet.

Who is John Galt?

Pagina: 1