php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.01.2012, 21:21  
Erfahrener Benutzer
 
Registriert seit: 03.10.2008
Beiträge: 227
thiagojonas zeigte ein beschämendes Verhalten in der Vergangenheit
Standard [Erledigt] Nachrichten vom Sender und Empfänger abfragen

Hallo liebe PHP.de Mitglieder,

ihr kennt das sicherlich, wenn man stundenlang versucht eine Funktion zu entwickeln und ihr nicht erkennt was man falsch mach bzw. denkt. Vielleicht könnt ihr mir ja weiterhelfen.

Ich möchte für meinen kleinen Verein einen Nachrichtensystem entwickeln.

Die Tabelle ist wie folgt aufgebaut:

id from_id to_id content read
1 1 2 test false
2 2 1 text false
3 1 3 ext false
4 4 1 xet false


Wie ihr seht findet zwischen Benutzer 1 und 2 ein Dialog statt.

Benutzer 1 hat Benutzer 3 eine Nachricht geschickt und Benutzer 4 hat Benutzer 1 eine Nachricht geschickt.

Was ich gerne umsetzten möchte:

Aus der Sicht von Benutzer 1:

1. Nachrichten von Benutzer 1 an 3 soll angezeigt werden(Besondere Kennzeichnung durch z.B.>> für Postausgang. Kann via Benutzer ID variable abgefragt werden.ich weiß wie es geht.).

2. Nachricht von Benutzer 4 an 1 soll angezeigt werden.

und jetzt noch das schwierigste für mich, wo mein Problem ist...

3. Nicht alle Nachrichten zwischen Benutzer 1 und 2 bzw. 2 und 1 anzeigen, sondern nur die letzte aktuelle Nachricht des Dialogs. Egal ob Posteingang oder Postausgang.

Wenn mann dann auf die jeweilige Nachricht klick, wird dann der ganz dialog zwischen Benutzer 1 und Empfänger angezeigt.

Das ganz ist ähnlich wie das Nachrichtenssystem von Facebook aufgebaut, falls jemand mich nicht verstehen sollte

Und hier meine Klasse:

PHP-Code:
//$table = Tabellennamen
//$id = User ID
public function load_messages($table,$id)
    {    
    
        echo 
'<hr class="hr_message"/>';    
        
        
// Verbindung mit Datenbank
        
$sql "SELECT `from_id`,`to_id` FROM `".$table."` WHERE `from_id` = '".$id."' OR `to_id` = '".$id."' GROUP BY `from_id`,`to_id` ORDER BY `date` DESC;";
        
$query mysql_query($sql) or die(mysql_error());
        
        list(
$this->m_g_f_id,$this->m_g_t_id) = mysql_fetch_row($query);
            
            
        
        echo
'from_id: '.$this->m_g_f_id.' | to_id: '.$this->m_g_t_id.'<br/>';
        
        if(
$this->m_g_f_id == $id) {

            echo 
"from=id<br/>";
            
            
// Verbindung mit Datenbank`
            
$sql "SELECT `from_id`,`to_id` FROM `".$table."` WHERE `from_id` = '".$id."' OR `to_id` = '".$id."' GROUP BY `to_id` ORDER BY `date` DESC;"
            
$query mysql_query($sql) or die(mysql_error());
            
            
        }
        
        if(
$this->m_g_t_id == $id) {
            
            
// Verbindung mit Datenbank`
            
$sql "SELECT `from_id`,`to_id` FROM `".$table."` WHERE `from_id` = '".$id."' OR `to_id` = '".$id."' GROUP BY `from_id` ORDER BY `date` DESC;"
            
$query mysql_query($sql) or die(mysql_error());
            
            echo 
"to=id<br/>";
            
        }
    
        
        while(
$row mysql_fetch_array($query))
        {    
            
            
            
$this->m_g_f_id $row['from_id'];
            
$help $this->m_g_f_id;
            
$this->m_g_t_id $row['to_id'];

            
//Tausche
            
$this->m_g_f_id $this->m_g_t_id;
            
$this->m_g_t_id $help;
        
                
            echo
'_from_id: '.$this->m_g_f_id.' | _to_id: '.$this->m_g_t_id.'<br/>';
            
            
//Wenn Adressat(from_id) == Benutzer(user_id)
            
if($this->m_g_f_id == $id
            {
                
$this->m_g_f_id $this->m_g_t_id;
                
$this->m_g_t_id $id;
                
            }
            
//Wenn Empfänger(to_id) == Benutzer(user_id)
            
if($this->m_g_t_id == $id
            {
                
$this->m_g_f_id $row['from_id'];
                
$this->m_g_t_id $row['to_id'];
    
            }
        
            
            echo
'__from_id: '.$this->m_g_f_id.' | __to_id: '.$this->m_g_t_id.'<br/>';

        
            
// letzten aktuellen Eintrag vom Dialog laden(Posteingang oder Postausgang)
            
$sql_m "SELECT * FROM `".$table."` WHERE `to_id` = '".$this->m_g_t_id."' AND `from_id` = '".$this->m_g_f_id."' OR `to_id` = '".$this->m_g_f_id."' AND `from_id` = '".$this->m_g_t_id."' ORDER BY `date` DESC LIMIT 1;";                    
            
$query_m mysql_query($sql_m) or die(mysql_error());
        
            
            
//
            
if($this->m_g_t_id != $id
            {                 
                
$this->m_g_f_id $this->m_g_t_id;
                
$this->m_g_f_id $this->m_g_t_id;
            }
        
    
            while(
$row_m mysql_fetch_array($query_m))
            {
                
// Seitenparameter aus Tabelle laden und in Variablen speichern
                
$this->m_id $row_m['tab_message_id'];
                
$this->m_t_id $row_m['to_id'];
                
                
$this->m_message utf8_encode($row_m['message']);
                
$this->m_date $row_m['date'];
                
$this->m_read $row_m['read'];
            
                
// Verbindung mit Datenbank
                
$sql_from "SELECT * FROM `tab_user` WHERE `user_id` = '".$this->m_g_f_id."';";
                
$query_from mysql_query($sql_from) or die(mysql_error());
                
                
// ID aktualisieren
                
$this->m_f_id $row_m['from_id'];
                
                while(
$row_from mysql_fetch_array($query_from))
                {
                    
$this->m_f_name utf8_encode($row_from['first_name'].' '.$row_from['last_name']);
                    
$this->m_f_img_src $row_from['img_src'];
                }
                
                
//Zeitangabe
                
if (strftime ("%Y"strtotime($this->m_date)) == date("Y"))
                {
                    
                    
$this->m_i_date strftime ("%d. %B"strtotime($this->m_date));

                }
                elseif (
strftime ("%Y"strtotime($this->m_date)) < date("Y"))
                {
                    
                    
$this->m_i_date strftime ("%d. %B %Y"strtotime($this->m_date));
                    
                }
    
                
//Target abfrage (Posteingang oder Postausgang)
                
if ($this->m_f_id != $this->u_id)
                {
                    
                    
$this->m_i_target '';

                }
                elseif (
$this->m_f_id == $this->u_id)
                {
                    
                    
$this->m_i_target '<img src="uploads/layout/icons/web-icon-m-inbox.png" height="11" width="11" />';
                    
                }
                
                
//Abfrage ob die Nachricht schon gelesen wurde
                
if ($this->m_read == "false" && $this->m_f_id != $this->u_id)
                {
                    
                    
$this->m_i_read 'class="m_read"';

                }
                elseif (
$this->m_read == "false" || $this->m_read == "true")
                {
                    
                    
$this->m_i_read '';
                    
                }
                
                
//Nachrichtadressanten ausgeben        
                
echo '<div id="m_content" '.$this->m_i_read.' onclick="m_read(\''.$this->u_id.'\',\''.$this->m_id.'\',\''.$this->m_g_f_id.'\',\''.$this->m_read.'\')">';
                
                    echo 
'<img src="'.$this->m_f_img_src.'" width="55" height="55" alt="'.$this->m_f_name.'" title="'.$this->m_f_name.'" id="m_img" />';
                
                    echo 
'<strong id="m_f_name">'.$this->m_f_name.'</strong>';
                
                    echo 
'<div id="m_content_color">';
                    
                        if (
strlen($this->m_message) > $this->m_message_len)    
                        {
                    
                            echo 
'<div style="float:left;">'.$this->m_i_target.' '.substr($this->m_message0$this->m_message_len). ' ...</div>';
                            
                        }elseif (
strlen($this->m_message) <= $this->m_message_len)    
                        {
                    
                            echo 
'<div style="float:left;">'.$this->m_i_target.' '.$this->m_message'</div>';
                            
                        }
                        
                        echo 
'<div id="m_date" title="'.strftime ("%A, %d. %B %Y um %H:%M Uhr"strtotime($this->m_date)).'">'.$this->m_i_date.'</div>';    
                    
                    echo 
'</div>';
                
                    echo 
'<div style="clear:both;"></div>';
                    
                echo 
'</div>';
                
                echo 
'<div id="m_close" onclick="m_delete(\''.$this->u_id.'\',\''.$this->m_g_f_id.'\',\''.$this->m_f_name.'\');" title="Nachrichten löschen"></div>';
                
                echo 
'<hr class="hr_message"/>';
                    
            }
        }
    } 
EDIT: Folgendes wird richtig angezeigt:
from_id to_id
1 2
1 3

from_id to_id
2 1
3 1

Aber das geht nicht bzw. es wird zweimal angezeigt, statt nur einmal

from_id to_id
1 3
3 1

Geändert von thiagojonas (26.01.2012 um 21:31 Uhr).
thiagojonas ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme beim Abfragen zweier Tabellen... Lapje Datenbanken 3 07.04.2011 22:50
[Erledigt] Select Abfragen zusammenführen Netweasel Datenbanken 6 21.08.2010 18:11
Email an mehrere empfänger??? mikeJ PHP Tipps 2010 18 04.08.2010 20:59
Zwei Abfragen zu einer zusammenfassen Extremefall PHP Tipps 2010 7 26.02.2010 18:00
jpg abfragen alex9787 Datenbanken 1 27.01.2010 20:42
Texttemplates ( Email, Nachrichten usw. ) - beste Methode. amasingh PHP Tipps 2009 12 27.09.2009 22:03
[MySQL] IF / CASE: mehrere Werte abfragen Zeussi Datenbanken 3 01.08.2009 15:00
[Erledigt] Messenger - Nachrichten zuweisen? foruminator PHP Tipps 2009 9 10.07.2009 19:26
[Erledigt] dynamische Liste Abfragen verknüpfen und ausgeben. abi PHP Tipps 2009 3 13.05.2009 11:46
PDO und parallele Abfragen Normalo PHP Tipps 2008 1 09.06.2008 12:39
PHP bzw. mysql abfragen optimieren Kori Datenbanken 3 26.09.2007 21:02
'Sender:' Eintrag im Mailheader PHP-Fortgeschrittene 2 01.10.2006 17:00
mehrere Abfragen (Selects) verbinden???? CIMM Datenbanken 15 03.05.2006 18:59
Private Nachrichten verschlüsseln mittels EN/DECODE() sinnvo Datenbanken 15 08.03.2006 01:36
ICQ Onlinestatus abfragen, nur wie? Broadcast PHP Tipps 2004 9 24.09.2004 00:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum