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: 1 Stimmen, 5,00 durchschnittlich.
  #16 (permalink)  
Alt 22-09-2010, 16:04
Hendrik33
 Registrierter Benutzer
Links : Onlinestatus : Hendrik33 ist offline
Registriert seit: Aug 2010
Beiträge: 70
Hendrik33 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Natürlich ergibt das einen Sinn ...

Wenn man die Nachricht anzeigt ich schreib schnell den Code damit mans versteht (bitte nicht meckern wenn er so nicht geschrieben wird - funktionieren tuts trotzdem)

Der Benutzer ruft das Script auf mit der id 11 dann wird ausgelesen welche messageid es betrifft ...

Code:
$auslesen=mysql_query("SELECT * FROM user_messages WHERE id='11'");
while($fetch=mysql_fetch_array($auslesen)) {
$auslesenx=mysql_query("SELECT * FROM user_messages_data WHERE message='$fetch[messageid]'");
while($fetchx=mysql_fetch_array($auslesenx)) {
echo "$fetchx[text]";
}}
So würde mann z.b. alle posts zur nachricht mit der id 11 bzw der messageid 9 bekommen ...


Jetzt verstanden?
Mit Zitat antworten
  #17 (permalink)  
Alt 22-09-2010, 16:06
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Bitte beitrag ändern und Code-Tags benutzen.

Edit: Okay, Code-Tags hast du inzwischen, -Code-Tags wären noch besser.

Zitat:
Zitat von Hendrik33 Beitrag anzeigen
Jetzt verstanden?
Nein.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #18 (permalink)  
Alt 22-09-2010, 16:14
Hendrik33
 Registrierter Benutzer
Links : Onlinestatus : Hendrik33 ist offline
Registriert seit: Aug 2010
Beiträge: 70
Hendrik33 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ich weiß nicht wie ichs erklären soll, also nochmal

user 1 schickt an user 2 eine nachricht

dann wird in die tabelle user_messages ne zeile eingetragen ...
Das Feld id ist forlaufend ... Das Feld messageid wird erst nach dem eintragen sofort danach via update table SET messageid='mysql_insert_id...' beschrieben ....
der AUTO Increment würde hier z.b. sein 12

die nachricht selber wird in user_messages_data gespeichert
das feld message bekommt hier auch die 12, damit es der nachricht zugeordnet ist ...

wenn der andere user jetzt auf die nachricht anwortet wird wieder ne zeile eingetragen in user_messages aber mit der messageid von der aufgerufenen nachricht die z.b. mal per input hidden übertragen wird ...
da es ja ne neue zeile gibt in der der an und von wert jetzt andersum sind damit der eigentliche absender der zuerst ne nachricht an einen gesendet hat ja die nachricht dann auch sehen muss .... das feld id wandert eben jetzt auf 13 kriegt aber in messageid die 12 von gerade eben ... denn beide müssen ja zur ursprungsnachricht was schreiben ...

jetzt kapiert? gibts ja net
Mit Zitat antworten
  #19 (permalink)  
Alt 22-09-2010, 16:28
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Das hatte ich schon lange kapiert. Trotzdem ergibt es keinen Sinn. Laut deinem Dump gibt es Thread 9 und Thread 12. Jeder davon hat 2 Nachrichten: Thread 9: 9, 11 und Thread 12: 12, 13, oder anders ausgedrückt:

9, von 67, an 1, betreff: danke, gehört zu sich selbst
11, von 1, an 67, betreff: danke, gehört zu 9
12, von 20, an 3, betreff: dddd, gehört zu sich selbst
13, von 3, an 2, betreff: dddd, gehört zu 12

Soweit ist ja alles klar, aber jetzt kommen die Nachrichtentexte:

88, gehört zu 9, gesendet von 1209, text: hi wie gehts?

Warum 1209 und nicht 67? Aber es geht noch weiter:

89, gehört auch zu 9, gesendet von 247, text: :no11:

Beide gehören zur 9? Was soll denn dann dort drin stehen? Wie soll man dann noch wissen, was von wem an welchen Empfänger ging? Dafür gibt es aber keinen Text (user_messages_data), der zu Nachricht 11 (und auch 13) gehört. Die ist also leer, dafür weiß man aber, wer sie geschrieben hat und für wen sie gedacht war. Genau das ist nicht nachvollziehbar.

Jetzt kapiert?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (22-09-2010 um 16:33 Uhr)
Mit Zitat antworten
  #20 (permalink)  
Alt 22-09-2010, 16:36
Hendrik33
 Registrierter Benutzer
Links : Onlinestatus : Hendrik33 ist offline
Registriert seit: Aug 2010
Beiträge: 70
Hendrik33 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen

Warum 1209 und nicht 67? Aber es geht noch weiter:

89, gehört auch zu 9, gesendet von 247, text: :no11:

Beide gehören zur 9? Was soll denn dann dort drin stehen? Wie soll man dann noch wissen, was von wem an welchen Empfänger ging? Dafür gibt es aber keinen Text (user_messages_data), der zu Nachricht 11 (und auch 13) gehört. Die ist also leer, dafür weiß man aber, wer sie geschrieben hat und für wen sie gedacht war. Genau das ist nicht nachvollziehbar.

Jetzt kapiert?
Du hast Recht
Das muss so heissen anstatt 1209 z.b. bei 88 die 1 und bei 89 die 67

(88, '9', '88', 'hi wie gehts?', '1285155091'),
(89, '9', '1209', ':no11: ', '1285158920'),

Wäre aber garnicht so tragisch es kommt ja auf die das Feld message mit der 9 und auf das datum an vom neusten ... Aber du hast Recht! Fehler von mir!
Mit Zitat antworten
  #21 (permalink)  
Alt 22-09-2010, 16:48
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Ok, dass die IDs falsch waren ist eine Sache, aber die andere ist offenbar noch nicht angekommen: Du speicherst die Nachrichtentexte immer zu der Nachricht, die den Thread selbst darstellt, anstatt sie zu der Nachricht zu speichern, zu der sie gehören. Deine DB-Struktur ist total chaotisch und die vielen text-Spalten die eigentlich int sein sollten, tun ihr übriges, jegliche Performance im Ansatz zu ersticken.

Vorschlag: setz die DB neu und normalisiert auf und kümmere dich dann um die Abfragen. Im Moment sieht das nach WOMBAT aus.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #22 (permalink)  
Alt 22-09-2010, 16:52
Hendrik33
 Registrierter Benutzer
Links : Onlinestatus : Hendrik33 ist offline
Registriert seit: Aug 2010
Beiträge: 70
Hendrik33 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Das mit den Feldtypen kann ich ja ändern gebe ich dir recht aber wie soll es denn anderst gehen ?? Es muss ja für jeden User ein Eintrag geben in der Tabelle user_messages deswegen musste ich die messageid untergliedern ... kann ja nicht nach id gehen weil das wären ja zwei verschiedene
Mit Zitat antworten
  #23 (permalink)  
Alt 22-09-2010, 17:33
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

wieso MUSS es für jeden User einen Eintrag dort geben ?

angenommen der User meldet sich an und erkrankt dann (Beinbruch , komplizierter Heilungsverlauf *g*) und kommt für 6 Monate nicht dazu was zu schreiben - ergo würde ich NICHT erwarten, dort etwas von ihm zu finden, weil der User ja gar keinen Nachrichten Thread starten konnte
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #24 (permalink)  
Alt 22-09-2010, 17:57
Hendrik33
 Registrierter Benutzer
Links : Onlinestatus : Hendrik33 ist offline
Registriert seit: Aug 2010
Beiträge: 70
Hendrik33 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Hier ist doch der Wurm drin ...

Es ist doch langsam der Wurm drin

Jetzt nochmal ganz von neu!

Es gibt Benutzer A (ID 1100)
Es gibt Benutzer B (ID 2211)

Fallbeispiel:
Benutzer A sendet eine Nachricht an Benutzer B

Tabellenstruktur:
--------------------------------
Name: user_messages
Feld: id (auto_increment)
Feld: von
Feld: an
Feld: betreff
Feld: datum
Feld: messageid
--------------------------------
user_messages_data mit den Felder:
Feld: id (auto_increment)
Feld: user
Feld: message
Feld: text
Feld: datum


Legen wir los:
Benutzer A sendet eine Nachricht an Benutzer B

// Nachricht anlegen
PHP-Code:
mysql_query("INSERT INTO user_messages SET von='1100', an='2211', betreff='Beispielbetreff', datum='1285170518'");
mysql_query("UPDATE user_messages SET messageid='".mysql_insert_id()."' WHERE id='".mysql_insert_id()."'"); 
// Infos zur Nachricht speichern und zuordnen
PHP-Code:
mysql_query("INSERT INTO user_messages_data SET user='1100', message='".mysql_insert_id()."', text='Beispieltext von Benutzer A',  datum='1285170518'"); 
Die Nachricht wurde gespeichert und wird jetzt beim anderen Benutzer im Posteingang angezeigt
Weiter gehts

Jetzt antwortet Benutzer B an A!
Die MessageID von der ersten Nachricht wird per hidden field übertragen aus dem FORM

// Nachricht anlegen
PHP-Code:
mysql_query("INSERT INTO user_messages SET messageid='1 da wir von einern leeren Tabelle ausgehen', von='2211', an='1100', betreff='Beispielbetreff', datum='1285170690'"); 
// Infos zur Nachricht speichern und zuordnen
PHP-Code:
mysql_query("INSERT INTO user_messages_data SET user='2211', message='1', text='Beispieltext von Benutzer b',  datum='1285170690'"); 


So werden die Nachrichten eingetragen ...


Jetzt müssen alle Nachrichten von Benutzer 2211 ausgelesen werden z.B.

PHP-Code:
SELECT DISTINCT(user_messages.idFROM user_messages,user_messages_data WHERE user_messages.an='2211' AND 
 
user_messages_data.message=user_messages.messageid ORDER by user_messages_data.datum DESC 
Dieser Code würde nur alle id`s auflisten aber nicht nach datum sortiert.
Was ich wissen möchte ist wie der Query lauten müsste damit es nach Datum der letzten Nachricht sortiert wird. Denkt daran das Datum steht in der Tabelle user_messages_data und Feld datum ... Jeder Post hat ja immer einen Timestamp ... Das Feld Datum in der Tabelle user_messages ist das Datum wann die Hauptnachricht vom Erstsender gesendet wurde ...

Hoffe das ist jetzt gut erklärt!
Mit Zitat antworten
  #25 (permalink)  
Alt 22-09-2010, 18:10
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

@eagle: Du solltest langsam mal anfangen, Threads komplett zu lesen, bevor du deine Meinung über etwas kundtust, was du ausschließlich aus dem letzten Beitrag entnehmen zu können glaubst.

@Hendrik: Der Ablauf ist klar, aber wenn du alle Nachrichtentexte (in diesem Falle die Antwort) zur allerersten Nachricht (in diesem Falle die 1) speicherst, kannst du nicht mehr zuordnen, zu welcher Nachricht der Text jetzt wirklich gehört. In deinem Beispiel ist der Antworttext (user_messages_data 2) nicht mehr der Antwort selbst (user_messages 2) zuzuordnen, weil er ja nur noch auf die user_messages 1 verweist. Das kann zu einem großen Problem werden und das meinte ich die ganze Zeit schon.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #26 (permalink)  
Alt 22-09-2010, 18:15
Hendrik33
 Registrierter Benutzer
Links : Onlinestatus : Hendrik33 ist offline
Registriert seit: Aug 2010
Beiträge: 70
Hendrik33 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Super wenn das schonmal klar ist!

Aber das verstehe ich nicht was du sagst ...

Angenommen in Tabelle 1 hat die id vorne die 1283 was ja mit dem eigentlichen garnichts zu tun hat ...

Die messageid hat jetzt mal 33 ...


In der zweiten Tabelle haben dann alle Antworten bzw. Beiträge der beiden User im Feld message den Wert 33 ???

Wieso soll es da Probleme geben?
Mit Zitat antworten
  #27 (permalink)  
Alt 22-09-2010, 18:28
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Beispiel:

Für die Übersichtlichkeit mal angenommen:
Alle 10er sind User-IDs
Alle 20er sind Message-IDs
Alle 30er sind Message-Data-IDs

Folgende Konversation zwischen Herbert (11) und Anni (12):

Code:
Herbert: Hallo Anni
Anni:    Hallo Herbert, na wie geht's?
Herbert: Super.
Herbert: und dir?
Anni:    Auch super.
Anni:    hast du was von Locke gehört?
Herbert: Bis jetzt nicht.

user_messages
id messageid von an
21 21        11  12
22 21        12  11
23 21        11  12
24 21        11  12
25 21        12  11
26 21        12  11
27 21        11  12

user_messages_data
id message user text
31 21      11   Hallo Anni
32 21      12   Hallo Herbert, na wie geht's?
33 21      11   Super.
34 21      11   und dir?
35 21      12   Auch super.
36 21      12   hast du was von Locke gehört?
37 21      11   Bis jetzt nicht.
So machst du es im Moment und du hast jetzt keine Möglichkeit mehr, herauszufinden, was in user_messages 23 geschrieben wurde. Umgekehrt ist es schwierig herauszufinden, wem Anni in user_messages_data 35 geschrieben hat.

Das ist das Problem: du hast keine Verbindung zwischen einer Nachricht und ihrem Text.

Hoffe, es ist jetzt klarer geworden.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #28 (permalink)  
Alt 22-09-2010, 18:38
Hendrik33
 Registrierter Benutzer
Links : Onlinestatus : Hendrik33 ist offline
Registriert seit: Aug 2010
Beiträge: 70
Hendrik33 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ahhh so meinst du das, nein das ist so...

Es gibt wenn beide sich geschrieben haben insgesamt nur 2 Zeilen einmal:
Für eine Message ID wird es immer nur 2 Einträge geben einmal mit von und an in jeweils umgekerhter Reihenfolge

an 1
von 2

und umgekerht ... also

user_messages
id messageid von an
21 21 11 12
22 21 12 11
mehr nicht ... (das wird per php script geprüft ob der eintrag schon existiert)

Verstehst du? Es klappt ja alles wunderbar ...
Nur das sortieren nach dem aktuellsten weiß ich nicht wie ichs machen muss ...

Geändert von Hendrik33 (22-09-2010 um 18:41 Uhr)
Mit Zitat antworten
  #29 (permalink)  
Alt 22-09-2010, 18:42
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Nach welchem datum willst du denn sortieren? Nach dem in user_messages oder in user_messages_data?

Edit: Wenn es bei dir immer nur eine Antwort gibt, kann also niemand auf eine Antwort antworten, sondern muss ein neues Thema erstellen?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #30 (permalink)  
Alt 22-09-2010, 18:51
Hendrik33
 Registrierter Benutzer
Links : Onlinestatus : Hendrik33 ist offline
Registriert seit: Aug 2010
Beiträge: 70
Hendrik33 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Es soll nach dem Datum aus der Messages Data Tabelle gehen wieso sollte das nicht gehen ... Stell dir das vor wie ein Chat zwischen den beiden Benutzern ...
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Doppelte Absätze beim Eintragen in DB? Morpheus2100 PHP Developer Forum 30 14-12-2007 16:19
Doppelte Einträge beim Abruf ignorieren. Teloki SQL / Datenbanken 1 13-04-2005 14:03
Tabelle auf doppelte Einträge prüfen (per Query) skalu SQL / Datenbanken 16 12-01-2005 20:42
Query auf einem "leeren" Ergebnis einer anderen Query aufbauen; ist das möglich ? sowisd SQL / Datenbanken 4 11-05-2004 19:57
beim speichern: doppelte absätze hansi PHP Developer Forum 12 09-12-2002 15:05

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 17:52 Uhr.