php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 12-10-2013, 21:51
senger1985
 Registrierter Benutzer
Links : Onlinestatus : senger1985 ist offline
Registriert seit: Feb 2013
Beiträge: 85
senger1985 befindet sich auf einem aufstrebenden Ast
Standard Prüfen, ob die eine Nachricht gelesen wurde

Hallo Freunde,

ich habe ein PM-System geschrieben, welches mir anzeigt, wie viele Nachrichten in meiner Inbox neu sind!

Nun möchte ich sowas in der Art für die Outbox haben, nur mit dem Unterschied, dass dann gezeigt wird, ob die geschriebene Nachricht von Empfänger gelesen wurde!

Hier die beiden entsprechenden Scripte für die Funktionen.

Inbox:
PHP-Code:
<?php
session_start
();
require_once 
"../includes/connect_i.inc.php";

if (!
$_GET['in']){
    
$pageid2 '1';
} else {
    
$pageid2 ereg_replace("[^0-9]",""$_GET['in']);
}

$sqlCommand "SELECT id, username FROM users WHERE username='" $_SESSION['username'] . "'";
$query mysqli_query($myConnection$sqlCommand) OR DIE (mysqli_error($myConnection));
WHILE (
$row mysqli_fetch_array($query))
{
    
$pid $row["id"];
    
$username $row["username"];
}

mysqli_free_result($query);

$sqlCommand "SELECT id, userid, from_id, from_username, title, content, recieve_date FROM pm_inbox WHERE id='$pageid2' AND userid='$pid'";
$query mysqli_query($myConnection$sqlCommand) OR DIE (mysqli_error($myConnection));
WHILE (
$row mysqli_fetch_array($query))
{
    
$Hid $row["id"];
    
$Huserid $row["userid"];
    
$Hfrom_id $row["from_id"];
    
$Hfrom_username $row["from_username"];
    
$Htitle $row["title"];
    
$Hcontent $row["content"];
    
$Hrecieveddate $row["recieve_date"];
}

mysqli_free_result($query);

$query mysqli_query($myConnection"UPDATE pm_inbox SET viewed='1' WHERE id='$pageid2'") OR DIE (mysqli_error($myConnection));

?>
Outbox:
PHP-Code:
<?php
session_start
();
require_once 
"../includes/connect_i.inc.php";

if (!
$_GET['out']){
    
$pageid '1';
} else {
    
$pageid ereg_replace("[^0-9]",""$_GET['out']);
}

$sqlCommand "SELECT id, username FROM users WHERE username='" $_SESSION['username'] . "'";
$query mysqli_query($myConnection$sqlCommand) OR DIE (mysqli_error($myConnection));
WHILE (
$row mysqli_fetch_array($query))
{
    
$pid $row["id"];
    
$username $row["username"];
}

mysqli_free_result($query);

$sqlCommand "SELECT id, userid, to_userid, from_id, to_username, title, content, senddate, recieve_date FROM pm_inbox, pm_outbox WHERE id='$pageid' AND userid='$pid' AND senddate = recieve_date";
$query mysqli_query($myConnection$sqlCommand) OR DIE (mysqli_error($myConnection));
WHILE (
$row mysqli_fetch_array($query))
{
    
$Hid $row["id"];
    
$Huserid $row["userid"];
    
$Hto_id $row["to_userid"];
    
$Hto_username $row["to_username"];
    
$Htitle $row["title"];
    
$Hcontent $row["content"];
    
$Hrecieveddate $row["senddate"];
}

mysqli_free_result($query);

$query mysqli_query($myConnection"UPDATE pm_outbox SET viewed='1' WHERE recieve_date = senddate AND id='$pageid'");

?>
Datenbankstruktur
Inbox:
id
userid
username
from_id
from_username
title
content
viewed
recieve_date

Outbox:
id
userid
username
to_userid
to_username
title
content
viewed
senddate

Könnte mir da vielleicht jemand sagen, wo der Fehler ist?(Das Script für die Inbox funktioniert ohne Probeme)
Mit Zitat antworten
  #2 (permalink)  
Alt 12-10-2013, 22:11
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Wieso 2 Tabellen?
Stopfe alles in eine.

Zitat:
viewed
recieve_date
Doppelt gemoppelt.
Lass recieve_date auf NULL, bis gelesen wurde.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 12-10-2013, 23:03
senger1985
 Registrierter Benutzer
Links : Onlinestatus : senger1985 ist offline
Registriert seit: Feb 2013
Beiträge: 85
senger1985 befindet sich auf einem aufstrebenden Ast
Standard

In das Datumsfeld trage ich das Sendedatum ein und es wird in der Nachricht angezeigt, darum kann ich es nicht auf Null lassen!
Mit Zitat antworten
  #4 (permalink)  
Alt 12-10-2013, 23:33
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Zitat von senger1985 Beitrag anzeigen
In das Datumsfeld trage ich das Sendedatum ein und es wird in der Nachricht angezeigt, darum kann ich es nicht auf Null lassen!
recieve_date ist nicht das Sendedatum.
Oder?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #5 (permalink)  
Alt 12-10-2013, 23:38
senger1985
 Registrierter Benutzer
Links : Onlinestatus : senger1985 ist offline
Registriert seit: Feb 2013
Beiträge: 85
senger1985 befindet sich auf einem aufstrebenden Ast
Standard

Doch
Mit Zitat antworten
  #6 (permalink)  
Alt 12-10-2013, 23:50
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Und, was ist dann "senddate" ?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #7 (permalink)  
Alt 12-10-2013, 23:53
senger1985
 Registrierter Benutzer
Links : Onlinestatus : senger1985 ist offline
Registriert seit: Feb 2013
Beiträge: 85
senger1985 befindet sich auf einem aufstrebenden Ast
Standard

senddate in (pm_outbox) = die Zeitangabe, wann die Nachricht geschickt wurde!
recieve_date in (pm_intbox) = die Zeitangabe, wann die Nachricht angekommen ist!
Mit Zitat antworten
  #8 (permalink)  
Alt 12-10-2013, 23:59
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
recieve_date in (pm_intbox) = die Zeitangabe, wann die Nachricht angekommen ist!
Also doch nicht das Sendedatum.
Und auch also, kein Problem das auf NULL zu lassen, bis gelesen wurde.


Es gibt (aus meiner Sicht) keinerlei Grund das auf 2 Tabellen aufzusplitten.

Alle mit recieve_date gesetzt sind gelesen, also on der Inbox
Alle mit recieve_date auf NULL sind noch in der Outbox

Siehe dazu:
Die 5 Normal Formen
__________________
Wir werden alle sterben
Mit Zitat antworten
  #9 (permalink)  
Alt 13-10-2013, 00:10
senger1985
 Registrierter Benutzer
Links : Onlinestatus : senger1985 ist offline
Registriert seit: Feb 2013
Beiträge: 85
senger1985 befindet sich auf einem aufstrebenden Ast
Standard

Ich der Outbox werden doch die Nachrichten gespeichert, die ich gesendet habe, ob gelesen vom Empfänger, oder nicht!

Ich muss doch irgendwie Tabellen-übergreifend die Einträge ändern können!
Mit Zitat antworten
  #10 (permalink)  
Alt 13-10-2013, 07:37
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Ich der Outbox werden doch die Nachrichten gespeichert, die ich gesendet habe, ob gelesen vom Empfänger, oder nicht!
OK, welche Logik du da hinter stellst, ist mir wurscht. Hauptsache, deine Besucher verstehen, was du damit meinst.

Aber eine Notwendigkeit für 2 Tabellen sehe ich trotzdem nicht. Ganz im Gegenteil. Ist dieses gesendet, empfangen, gelesen doch nur eine Zustandsänderung von ein und derselben Nachricht.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #11 (permalink)  
Alt 16-10-2013, 13:52
Coocoo
 Registrierter Benutzer
Links : Onlinestatus : Coocoo ist offline
Registriert seit: Oct 2013
Beiträge: 5
Coocoo befindet sich auf einem aufstrebenden Ast
Standard

Was die Verwendung einer Tabelle angeht muss ich combie zustimmen. Ausserdem lassen sich die Nachrichten dann auch einfacher verwalten.

Wenn ich deinen Tabellenaufbau richtig lese, dann sind die `id` in In- und Outbox nicht identisch (vermutlich jede mit auto_increment als primary key). Da die Betreffs (`title`) und Nachrichten (`content`) nicht unique sein müssen und daher auch identisch sein können, gibt es bei der Struktur keine Möglichkeit, eine eindeutige Beziehung zwischen einer Nachricht in der Outbox des Senders und der Inbox eines Empfängers herzustellen.

Auch der Vorschlag, eine Beziehung über Sende- und Empfangsdatum herzustellen, ist nicht eindeutig. Und auch wenn es bei sehr, sehr wenigen Teilnehmern funktionieren kann, wäre dennoch dringend davon abzuraten.

Kurz: Dein Vorhaben kann mit dem Tabellenlayout nicht sicher umgesetzt werden.

LG
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
datenbankabfrage, mysql, php, pm-system


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nachricht gelesen markieren ohne Reload jandayne HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 12-11-2008 16:25
Prüfen, ob File komplett geladen wurde thesilencer5 PHP Developer Forum 10 20-06-2005 14:08
[JavaScript] Prüfen ob Bild geladen wurde Heinzelmännchen HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 03-05-2005 14:51
Wie ist die ERROR-Meldung wenn die Mail nicht verschickt wurde ?? MoRtAlAn PHP Developer Forum 1 13-02-2002 14:13

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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