Chat zwischen zwei usern?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfangen
abfrage
absender
auslese
buchstabe
code
fehlermeldung
grammatik
http
jemand
kram
leute
machen
nachricht
partner
riese
schief gehen
sinn
url
vergleichen
-
Hallo
Ich bin grad dabei nen chat zu programmieren der von user zu user(immer 2 leute) sein soll.
nun hab ich noch ein riesen problem damit das ich nur die nachrichten von einer person auslesen kann.
der chat basiert auf einen iframe und metatags.
hier das script:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <meta http-equiv="refresh" content="0; url=ChatBox.php?User=1#unten"> <title></title> </head> <body> <?php $UserID = $_SESSION["user_id"]; $PartnerID = $_GET['User']; $sql = "SELECT ". " * ". "FROM ". "****". "WHERE ". "(Absender like '".$UserID."' AND Empfaenger like '".$PartnerID."')"; $result = mysql_query ($sql); while ($data = mysql_fetch_array ($result)) { $Nachricht = $data['Nachricht']; $Absender = $data['Absender']; echo"".str_replace("\n", "<br />\n", $Nachricht)."<hr style='color:#C1D2F6; border-style: dashed;'>"; } ?> <a name="unten"> </body> </html>
weiß jemand wie ich das noch dazu bekomme das die nachrichten von beiden usern angezeigt werden?
LG:ChatVZ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ganz Simpel, im WHERE-Teil der Abfrage suchst du nur nach Nachrichten, die versendet wurden, was ist aber mit nachrichten, die der Partner an dich verschickt?
Die Abfrage muss also so aussehen:
<?php $where = "WHERE". " (Absender like '".$UserID."' AND Empfaenger like '".$PartnerID."') OR". // Nachrichten an meinen Partner " (Absender like '".$PartnerID."' AND Empfaenger like '".$UserID."')"; // Nachrichten an mich ?>
Achso, für sowas
str_replace("\n", "<br />\n", $Nachricht);
gibt es das: nl2br
[edit] Grammatik
Beitrag zuletzt geändert: 9.5.2009 16:52:54 von thomasba -
Und warum verwendest du LIKE?
Es handelt sich um IDs und die mit LIKE zu vergleichen verletzt ja echt die Menschenrechte der ID...
Absender = '".$UserID."' -
Und den ganzen Kram hier:
$sql = "SELECT ". " * ". "FROM ". "****". "WHERE ". "(Absender like '".$UserID."' AND Empfaenger like '".$PartnerID."')"; $result = mysql_query ($sql);
Würde ich so schreiben:
$result = mysql_query ("SELECT * FROM **** WHERE [...] ");
Sonst könntest du auch gleich yeden Buchstaben einzelnt schreiben. Das macht keinen Sinn und ist einfach nur unübersichtlich.
Liebe Grüße
- VampireSilence
Beitrag zuletzt geändert: 9.5.2009 17:39:24 von vampiresilence -
vampiresilence schrieb:
Und den ganzen Kram hier:
$sql = "SELECT ". " * ". "FROM ". "****". "WHERE ". "(Absender like '".$UserID."' AND Empfaenger like '".$PartnerID."')"; $result = mysql_query ($sql);
Würde ich so schreiben:
$result = mysql_query ("SELECT * FROM **** WHERE [...] ");
Sonst könntest du auch gleich yeden Buchstaben einzelnt schreiben. Das macht keinen Sinn und ist einfach nur unübersichtlich.
Wenn dann schon so, dann sieht man zu fehlermeldung auch gleich die Abfrage ;)
$sql = "..."; mysql_query($sql) or die(mysql_error()."<br />".$sql);
nikic schrieb: Und warum verwendest du LIKE?
Es handelt sich um IDs und die mit LIKE zu vergleichen verletzt ja echt die Menschenrechte der ID...
Absender = '".$UserID."'
öhm, stimmt, hab ich übersehen, dann sollte dein Code so funtionieren:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <meta http-equiv="refresh" content="0; url=ChatBox.php?User=1#unten"> <title></title> </head> <body> <?php $UserID = $_SESSION["user_id"]; $PartnerID = $_GET['User']; $sql = "SELECT ". " * ". "FROM ". "****". "WHERE ". "(Absender = '".$UserID."' AND Empfaenger = '".$PartnerID."') OR " "(Absender = '".$PartnerID."' AND Empfaenger = '".$UserID."')"; $result = mysql_query ($sql) or die(mysql_error()."<br />".$sql); while ($data = mysql_fetch_array ($result)) { $Nachricht = $data['Nachricht']; $Absender = $data['Absender']; echo"".nl2br($Nachricht)."<hr style='color:#C1D2F6; border-style: dashed;'>"; } ?> <a name="unten"> </body> </html>
Beitrag zuletzt geändert: 9.5.2009 18:04:58 von thomasba -
Das is ne absolut statische Abfrage, wozu also einen Fehler abfangen ?
Das kann höchstens dann schief gehen, wenn die DB nicht erreichbar ist und ob da eine Fehlermeldung aushelfen kann, wage ich stark zu bezweifeln. Das is nur wieder unnützer Code, sonst nichts.
Liebe Grüße
- VampireSilence -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage