Tacsiazuma Posted May 1, 2008 Posted May 1, 2008 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.
payskin Posted May 1, 2008 Posted May 1, 2008 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 May 1, 2008 Posted May 1, 2008 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 May 2, 2008 Author Posted May 2, 2008 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?
drext0rh Posted December 23, 2010 Posted December 23, 2010 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?
drext0rh Posted December 23, 2010 Posted December 23, 2010 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 December 23, 2010 Posted December 23, 2010 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.
drext0rh Posted December 24, 2010 Posted December 24, 2010 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?
Pjotr Posted December 24, 2010 Posted December 24, 2010 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?
Kiskalóz Posted December 24, 2010 Posted December 24, 2010 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now