Problem mit MySQL JOIN

Voltex

Mitglied
Hallo Community,
ich wollte mir in den letzten Tagen soetwas wie ein PN-System zusammenbasteln. Bisher hat alles geklappt aber jetzt steh ich irgendwie auf dem sprichwörtlichem Schlauch.

Mein Problem ist, dass ich 2 Tabellen miteinander verknüpfen will, da ich aus einer Tabelle für das System einige Daten benötige. Das ganze sieht folgendermaßen aus:

Tabelle1(Beinhaltet die Nachrichten)

pnID | senderID | receiverID | read | date | time | betreff | text
===============================================
1 | 2 | 1 | 0 | XXX | XXX | Test | Test

Tabelle2(Beinhaltet die Benutzerdaten)

userID | vname | name | nick | (etc.)
============================
1 | Chistian| M. | Voltex |
2 | Moritz | R. | 95R@diated


So, die Abfrage soll jetzt anhand der senderID aus Tabelle1 die Benutzerdaten (Vorname, Nachname, Nick) des zugehörigen Benutzers suchen. Also wenn Nutzer 2 mir eine Nachricht schickt soll die abfrage gucken: senderID ist 2, zu userID nr. 2 gehört Moritz R. und 95R@diated. Geb ich das also aus. Mein bisheriger Lösungsansatz sieht so aus:

PHP:
$call_pns = "SELECT t1.senderID, t1.read, t1.date, t1.time, t1.causes, t1.text, t2.userID, t2.username, t2.prenom, t2.nom
               FROM tbl_pns AS t1
               INNER JOIN tbl_usr_ext AS t2
               ON t1.senderID = t2.userID
               WHERE t1.receiverID = '".$userID."' ";

Leider bringt der mich nicht wirklich weiter. Habt ihr eine Idee?

so far,
Christian
 
nun, es wird auf der seite wo die ergebnisse angezeigt werden sollen rein garnichts ausgegeben. weder ein error noch irgendwelche Datensätze
 
Ich habs nun auf verschiedenste Arten versucht einen Error angezeigt zu bekommen. Es passiert nichts. Ich denke, dass die JOIN anweisung irgendwie kaputt ist. Ist auch das erste mal, dass ich mit JOIN arbeite. Gibt es vielleicht andere Vorschläge wie ich das Problem lösen kann?
 
Hi,

Ich habs nun auf verschiedenste Arten versucht einen Error angezeigt zu bekommen. Es passiert nichts.

Dann hast du was falsch gemacht. Was, wird Dir aber so niemand sagen können. Du musst schon gesprächiger werden.

Ich denke, dass die JOIN anweisung irgendwie kaputt ist.

Das SQL-Statement sieht okay aus, vorausgesetzt, Deine Variable ist auch gefüllt.

Du wirst die Fehlerausgabe einschalten und Fehler- bzw. Testausgaben machen müssen, sonst bleiben alle Glaskugeln schwarz.

LG
 
selbst durch das Einschalten der Fehleranzeige wird kein Error ausgegeben.

Ich hab dann mal versucht einige Testausgaben zu gestalten. Folgendes:

PHP:
<?php include("functions/pn_call.php"); 

       $row = mysql_fetch_object($action_call_pns);
        
        $value['sender'] = $row->t1.senderID;
        $value['causes'] = $row->t1.causes;
        $value['text'] = $row->t1.text;  
        
        echo $value['sender'];
        echo " "; 
        echo $value['causes'];
        echo " "; 
        echo $value['text']; 
?>

Augegeben wird:

senderID causes text

Also sind diese Variablen nicht wirklich gefüllt.
Eigentlich wollte ich das ganze in einer Schleife ausgeben lassen. Diese hab ich für diese Testzwecke auskommentiert.

So würde der Code aussehen, wäre die Schleife nicht auskommentiert:

PHP:
<?php include("functions/pn_call.php");
while($row = mysql_fetch_object($action_call_pns))
                    {
                        $value['sender'] = $row->t1.senderID;
                        $value['causes'] = $row->t1.causes;
                        $value['text'] = $row->t1.text;      
                      
                  
                     echo $value['sender'];
                                        echo " "; 
                                         echo $value['causes'];
                                     echo $value['text'];
?>

die pn_call.php ist folgendermaßen aufgebaut:
PHP:
include ("../system/configuration.php");

  $userID = $_SESSION['securityManager']->getUserID();

$call_pns = "SELECT t1.senderID, t1.alreadyread, t1.date, t1.time, t1.causes, t1.text, t2.userID, t2.username, t2.prenom, t2.nom
               FROM tbl_pns AS t1
               INNER JOIN tbl_usr_ext AS t2
               ON t1.senderID = t2.userID
               WHERE t1.receiverID = '".$userID."' ";
               
  $action_call_pns = mysql_query($call_pns, $link) or die('Mysql error: '.mysql_error());

Die configuration.php beinhaltet lediglich die Daten zum herstellen der Verbindung mit der Datenbank. Sprich Passwort etc.

Übrigens, wenn ich die Schleifenversion benutze wird garnichts ausgegeben, seltsamerweise.

Ich hoffe das hilft euch (und mir) weiter.

so far,
Christian
 
Ich würde mal sagen, dass dieses Ausdruck so nicht funktioniert:
PHP:
$value['sender'] = $row->t1.senderID;

Ein Punkt ist in PHP der Operator für die Verkettung von Zeichenketten und ist meines Wissens nach nicht wie oben notiert verwendbar. Ich würde das t1. entfernen.
 
Zurück