Jump to content
GSForum - Segélyvonal

Egyszerû üzenetküldés a felhasználók között


Recommended Posts

Tacsiazuma
Posted

Sziasztok!

 

Azt szeretném megtudni, hogy Ti hogy oldanátok meg azt a problémát, hogy létrehozzatok az oldalon 1 kis belső üzenetküldő/kezelő rendszert. Én az alábbit alkalmaztam, de nem tudom, hogy van-e hatékonyabb módszer:

 

Ugye minden user rendelkezik 1 ID-vel és ugyanabban a táblában a nevével.

 

Amikor üzenetet ír, akkor beír egy 'messages' nevű táblába, ami ömlesztve tárolja az üzeneteket. Mezői (id, forras, cel, targy, uzenet, time, new) A forras-ba kerül a küldő, a cel-be kerül a címzett, a time-ba pedig az aktuális timestamp. Az uzenet mezo VARCHAR(1000), a targy VARCHAR(100). A new küldéskor '1' értékű.

 

Amikor az üzenetet olvassuk, akkor megy egy

 

("SELECT * FROM messages WHERE cel='".$id."' ORDER BY datum DESC")

Az $id értelemszerűen az olvasó felhasználó id-je. Megjelenítéskor ezt (forras, cel, targy, time) szépen kilistázzuk, minden sorba rakunk 1 checkbox-ot, aminek a neve a kijelol (utána az aktuális üzenet id-je). A küldő neve <b></b> között van, ha a new értéke='1'. Valamint a név egyben hiperhivatkozás is egy almenübe, ami legyen ?com=read&id=aktuális id.

 

Törlésnél szépen végigfut

 

foreach($_REQUEST as $nev => $ertek)

minden $nev-ből levágja substr-al az első 7 karaktert, megmarad az ID

 

$idd = substr($nev, 7) 

és ahol true az $ertek, az adott ID-jű üzenetet törli.

 

Amikor egy üzenetbe így belépünk a program automatikusan 0-ra állítja a new értékét az üzenetünknél, tehát nem lesz kiemelve a postaládában.

Posted

Nem látok benne hibát. Valószínűleg nagyon hasonlóan csinálnám. Mondjuk REQUEST-et így nem tennék foreachbe, mert ha véletlenül nemcsak nevek vannak benne, akkor valami hülyeséget csinálhat az adatbázissal, de ez részletkérdés.

Kiskalóz
Posted

Nagyából én is így oldottam, meg ezt a feladatot a munkahelyemen.

De mondjuk kicsit kímélheted az erõforrást, ha nem select * from hanem csak azt kérdezed le amit ki is iratsz.. dátum, tárgy stb... és amikor megnyitja az üzenetet akkor lekérdezet azt az egyet.

Gondolj bele.. több száz üzenetnél.. menyire gyorsíthatja a program mûködését.

Tacsiazuma
Posted

Amikor megjelenítem a postaládát, akkor egyedül az 'uzenet' mező nem kell, de minden más igen. Bár pont az üzenet a legnagyobb az egészben. :) Ez még fejlődni fog, általában mindig barbár módon dobok össze egy kódot az elején, jó azért 1-2 dologra figyelek, de ez a "trendi" nálam. :) Amúgy az ötlet jó egy olyan embertől, aki éppen túl van egy 500 oldalas "Tanuljuk meg a PHP-t X óra alatt" könyvön, előtte pedig kb. 10 éve programozott QBASIC-el?

  • 2 years later...
Posted

hello én is szeretnék ilyen felhasználók közötti levelezést addig tiszta hogy az üzenetet lementem majd az illetõnek lekérdezem de ezt pontosan hogyan nem értem az összefüggést?

Posted

nem nagyon és bocs csak gyorsan irtam de a lényeg hogy ezt hogy lehet megvalósitani (a felhasználók közötti levelezést)???

[OP]Destroy-man
Posted

Nem hinném, hogy tudna különben nem kérdezett volna.

 

Elösször is csinálni kell egy weblapot, ami képes a felhasználokat kezelni (regisztráció, bejelentkezés).

Ha ez megvan, akkor ehez kell készíteni egy olyan oldalt, ahova belehet írni/ki lehet választani a cimzett felhasználót, és az üzenetet. Ezt simán letárolod sql-ben. Kell még egy lekérdezéses oldal is, ahol a cimzett el tudja olvasni a saját leveleit.

 

Amit az SQL táblába érdemes felveni:

küldõ uid, cimzett uid, tárgy (ha akarsz), üzenet, olvasta-e, mikor küldte.

 

Az olvasta-e arra szolgál, hogy figyelmeztessen a weblapon, hogy üzenete érkezett.

Posted

igen tudok php-ban és msql-t

a weblap kész van a regisztráció bejelentkezés is mûködik csak ezt nem tudtam pontosan hogy ez hogy mûködik....

 

na szóval van egy oldal ahol a felhasználó1 ki tudja választani kinek akar levelet küldeni a tárgyat és magát az üzenetet be tudja irni majd ezek után lementem ezeket az adatokat eddgi értem de ezt hogy kérdezem le egy másik felhasználónál?

Posted

SQL SELECT-tel lekérdezed azokat az üzeneteket, amiket még nem olvastak el, és a címzettjük az aktuális munkamenet felhasználója. Hol itt a gond?

Posted

Lekérdezed az összes üzenetet ami az aktuális felhasználóra tartozik, és a olvasottság szerint formázod pl a kiíratás.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...