PHP Nachrichtensystem

TheGamer791

Grünschnabel
Hallo

und zwar hab ich folgendes problem:

ich möchte gerne ein nachrichtensystem in mein browsergame einbauen, aber ich weiß nicht wie ich mehrere nachrichten gleichzeitig im posteingang anzeigen lassen kann, wenn ich mehrere nachrichten schreibe kommt beim empfänger nur die ganz erste nachricht an die in der datenbank eingetragen ist.

mein quell code sieht so aus:

Posteingang:
PHP:
<?php

	//variablen
	$ndate = $nachrichtentest3['datum'];
	$absender = $nachrichtentest3['sender'];
	$betreff = $nachrichtentest3['betreff'];
	$nachricht = $nachrichtentest3['nachricht'];


		//neue Nachricht
	echo "<center><table><td><a href='neuenachricht.php'>Neue Nachricht</a></td></table></center>";


	//obere Tabelle
	echo "<center><table border='1' width='800px'><td width='80'>Datum</td><td width='100'>Absender</td><td width='150'>Betreff</td><td>Nachricht</td></table></center>";


        echo "<center><table border='1' width='800'><td width='80'>$ndate</td><td width='100'>$absender</td><td width='150'>$betreff</td><td>$nachricht</td></table></center>";

?>
Und das ist der code um die daten auszulesen von der datenbank:
PHP:
<?php

    $nachrichten1 = "SELECT * FROM nachrichten WHERE empfänger = '$spieler'";
    $nachrichten2 = mysql_query($nachrichtentest1) or die("Fehler!");
    $nachrichten3 = mysql_fetch_array($nachrichtentest2);

?>
Ps: Ich bin neu im Forum
 
Zuletzt bearbeitet von einem Moderator:
1) Lies dir mal etwas zur Normalisierung durch. Nach Nutzer_IDs und nicht nach Nutzernamen gehen.

2)
PHP:
while( $row = mysql_fetch_array($nachrichten2) ){
  var_dump($row);
  // bzw deine normale Ausgabe
}
 
1. warum kann man das denn nicht mit den namen machen?

2. ich hab das jetzt mal ausprobiert und da kommt nur:

array(14) { [0]=> string(2) "11" ["id"]=> string(2) "11" [1]=> string(2) "tt" ["sender"]=> string(2) "tt" [2]=> string(2) "tt" ["empfänger"]=> string(2) "tt" [3]=> string(19) "09.12.2012 21:32:23" ["datum"]=> string(19) "09.12.2012 21:32:23" [4]=> string(2) "tt" ["betreff"]=> string(2) "tt" [5]=> string(10) "test tetst" ["nachricht"]=> string(10) "test tetst" [6]=> string(19) "0000-00-00 00:00:00" ["gelesen"]=> string(19) "0000-00-00 00:00:00" }

was hab ich falsch gemacht?
 
1)
Eine ID ist ein eindeutiger Schlüssel.
Folgende Probleme gibt es beim Namen:
a) Ein Name kann nicht doppelt vorkommen
b) Namensänderungen sind problematisch

Beispiel:
Code:
--tbl_user
user_id  |  name
1  | klaus
2  | hans
Mit so einer Tabelle kannst du jetzt Namen, Emailadresse etc einer user_id zuweisen (PRIMARY_KEY und auto_increment)
Mit diesem Schlüssel kannst du jetzt zum Beispiel deine Nachrichten verwalten:
Code:
--tbl_messages
msg_id, sender_id, receiver_id, subject, msg
1, 1, 2, 'Test', 'Eine Testnachricht'
2, 1, 2, 'Test2', 'Eine zweite Testnachricht'
3, 2, 1, 'Re:Test', 'Eine Antwort'
msg_id ist dabei die eindeutige Zuordnung für die Nachrichten (damit die später z.b. gelöscht werden können).
Änderst Klaus jetzt seinen Namen zu Peter, muss dies nur in der tbl_user vermerkt werden. Die id_s in der tbl_messages ändern sich nicht.

2)
var_dump() gibt dir den gesamten Inhalt eines Arrays aus.
Bist du sicher, dass mehr als 1 Treffer in der Datenbank sind? Was gibt der Query denn im phpMyAdmin aus?
 
1. aso ok, danke :)

2. was ist ein query? bin nicht so ganz erfahren mit phpmyadmin

und ich habe 2 einträge in der tabelle nachrichten

du kannst dir das ja mal angucken nimm als benutzername tt und pw auch tt

aso hier der link: http://meinbrowsergame.funpic.de/index.php#

hier ein bild von der php my admin:

hier auch nochmal der code, vllt hab ich ja was falsch gemacht:

while( $row = mysql_fetch_array($nachrichtentest2) ){
var_dump($row);

//variablen
$ndate = $row['datum'];
$absender = $row['sender'];
$betreff = $row['betreff'];
$nachricht = $row['nachricht'];

echo "<center><table border='1' width='800'><td width='80'>$ndate</td><td width='100'>$absender</td><td width='150'>$betreff</td><td>$nachricht</td></table></center>";
}
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Jesus Christ!

Es gibt einen Bearbeiten Knopf unter deinen Posts. Bitte benutz lieber den, als dass du hier n-fach hintereinander postest.

Ich sehe, bei Dir herscht Grundlagenmangel.
Query nennt man die Datenabfrage (das was in mysql_QUERY drin steht).

Ich empfehle Dir erstmal dieses Tutorial durchzuarbeiten und zu verstehen, bei nachfragen natürlich gerne hier wieder nachfragen:
Schattenbaum | MySQL Tutorial
 
das mit dem mysql_QUERY hab ich doch schon geschrieben:

<?php

$nachrichtentest1 = "SELECT * FROM nachrichten WHERE empfänger = '$spieler'";
$nachrichtentest2 = mysql_query($nachrichtentest1) or die("Fehler!");
$nachrichtentest3 = mysql_fetch_array($nachrichtentest2);

?>

und falls das nicht das richtige ist hab ich ja den code von meiner nachrichten.php seite schon oben geschrieben.
 
Wie timestamp schon schrieb, nur weil du das "schon geschrieben" hast, heißt es nicht, dass du es auch verstanden hast. Schau dir einfach mal das Tutorial an, da gibt es eigentlich genug gute im Web.
 
Zurück