Intern mailsysteem

Overzicht

Sponsored by: Vacatures door Monsterboard

Mark PHP

Mark PHP

14/03/2004 15:27:00
Anchor link
Op deze site is er (als je ingelogd bent) de mogelijk intern mails te versturen. Hoe werkt dit, want ik wil dit mailsysteem ook op mn site hebben.

Weet iemand hoe dat script precies werkt (kneem aan niet met 'echte' emailadressen) of weet iemand ergens zo'n soort script te staan op internet?

Alvast bedankt
Mark
 
PHP hulp

PHP hulp

22/12/2024 02:02:46
 
Mitch X

Mitch X

14/03/2004 15:35:00
Anchor link
Best simpel hoor :)

Gewoon met een aparte tabel voor berichten,
en dan in de ontvanger-kolom zoeken of je username er bij staat.

Dus bv $user = Mark
"SELECT bericht FROM tabelletje WHERE username = '$user'"
 
Mark PHP

Mark PHP

14/03/2004 15:59:00
Anchor link
Das idd niet zo moeilijk, maar als iemand een bericht stuurt, welke code moet ik dan gebruiken om te zorgen dat er in de MySql database een bericht komt, oftewel hoe voeg je een code vanuit een php document in een mysql database?
 

14/03/2004 16:07:00
Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?
mysql_connect();
mysql_select_db();

mysql_query("INSERT INTO `tabel` (id,ontvanger,titel,bericht) VALUES (NULL,'$vOntvanger','$vTitel','$vBericht')";
?>


Klein voorbeeldje.

Lees even wat tutorials door. Hier, op phpfreakz, op jacqieline. Het is eigenlijk heel makkelijk :)
 
Mitch X

Mitch X

14/03/2004 16:09:00
Anchor link
Je maakt eerst een tabel ervoor in je DB:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
# Tabel
CREATE TABLE internemail (
id int(11) auto_increment primary key,
van varchar(100) NOT NULL,
voor varchar(100) NOT NULL,
bericht tekst NOT NULL
);
# Extra velden kun je zelf wel bedenken
?>

Daarna moeten we een insert query maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
# Insert query
$sql = "INSERT INTO internemail SET van = '$afzender', voor = '$ontvanger', bericht = '$bericht'";
$res = mysql_query($sql);
# Select query om berichten te bekijken
$sql = "SELECT * FROM internemail WHERE voor = '$ingelogdegebruiker'";
$res = mysql_query($sql);
# And thats it :)
?>
 
Eris -

Eris -

14/03/2004 16:51:00
Anchor link
van voor had ik vervangen door een id + int :)
 

14/03/2004 19:32:00
Anchor link
Waarom van en voor een VARCHAR? Met id's is sneller en kost minder ruimte in je DB. Ok, de code wordt iets uitgebreider, maar dat mag geen probleem zijn.
 
Mitch X

Mitch X

14/03/2004 19:48:00
Anchor link
Omdat je dan gelijk de naam hebt en niet eerst nog een query voor de voor en van hoeft te doen :)
Scheelt dus een query en dus tijd :P
 
Elwin - Fratsloos

Elwin - Fratsloos

14/03/2004 20:25:00
Anchor link
Quote:
Omdat je dan gelijk de naam hebt en niet eerst nog een query voor de voor en van hoeft te doen :)
Scheelt dus een query en dus tijd :P

Maar toch is dat niet slim. Je krijgt op deze manier sowieso redundantie (gegevens worden vaker opgeslagen). Nou zou dat niet erg zijn als er een goed DBMS tussen zit die na kijkt of één van de namen in de tabel internemail veranderd wordt in de tabel members/gebruikers.

En als dat dus gebeurt (wat makkelijk kan omdat een screenname en een loginname niet altijd hetzelfde zijn, zie bijvoorbeeld YaBB) krijg je nog eens inconsistentie. Dat betekend dus dat je dan gegevens op meerdere plaatsen opslaat, maar ook nog eens anders.

Het beste is gewoon om het met ID's te doen. Hierdoor heb je misschien wel twee query's meer (je zoekt afzender plus ontvanger) maar je bent ervan verzekerd dat de getoonde gegevens altijd de goede informatie verschaffen.

Elwin
 
Mark PHP

Mark PHP

16/03/2004 18:41:00
Anchor link
Tlukt nu wel redelijk, maar khep nog een klein probleempie:

Via een form moeten members, die ingelogd zijn, mails kunnen versturen, maar alleen naar "bestaande" adressen. Als iemand een onbekend adres invuld, moet PHP voor een melding zorgen dat het adres fout is. Dit kan ik wel maken, maar in combinatie met het verzenden naar meerdere personen tegelijk loop ik klem.

Ook weet ik niet hoe je via een form informatie in je database kan stoppen. Khep nu de volgende databasetablelen : ID, Van, Voor, Subject, Message, Date en NoRead. Alles spreek voorzich, noread geeft een 0 als het bericht niet gelezen is en een 1 als dit wel het geval is.
Maja; bij de form moet automatisch de tijd van verzenden in de database worden gezet in de vorm van DD-MM-YY HH-MM. Ook moet de Van row automatisch worden ingevuld.

Iemand een id hoe ik dit moet gaan oplossen
Thx
Mark
 

16/03/2004 20:04:00
Anchor link
Mark » 1 voor 1 graag :P.

Dat tijd van versturen opslaan moet je gewoon met een timestamp doen. Met meerdere adressen... Ehm je kunt zeggen "Scheiden door komma..

user1,user2,user3.

Dan explode je die later. Nu heb je een array, met een array kun je altijd leuke dingen doen. Ook naar iedereen die in die array staat sturen.

p.s. Gode uitgelegd, SpaceFrog.
 
Mark PHP

Mark PHP

16/03/2004 20:07:00
Anchor link
Haha, kzal t ff rustig aan doen voortaan ;-))

Maja kga t proberen thx voor de hupl :-))
 
Mark PHP

Mark PHP

17/03/2004 20:21:00
Anchor link
Weer ff een vraagje ;-))

Alles lukt nu, khep n postvak in, verzonden items en prullenbak gemaakt die allemaal goed werken.

Alleen wil ik bij bv postvak in een checkbox voor elke mail. Als iemand deze checkbox aanklikt of meerdere checkboxen, en dan op "Verwijder" klikt, moeten de geselecteerde mails als MySQL tabel "NoRead" waarde 2 krijgen.
Iemand een id hoe ik dit moet doen, dat met die checkboxen?

Thx Mark
 
Mark PHP

Mark PHP

18/03/2004 15:13:00
Anchor link
Iemand een id (A)
 
Rick

Rick

18/03/2004 15:38:00
Anchor link
lijkt me niet zo moeilijk toch?

<input type="checkbox" value="msg_id" name="hide_msg" />

mysql_query('UPDATE `tabelnaam` SET `NoRead` = 2 WHERE `msg_id` = '.$msg_id);
 
Mark PHP

Mark PHP

18/03/2004 15:47:00
Anchor link
Merci ;-))
 
Mark PHP

Mark PHP

18/03/2004 16:51:00
Anchor link
Ksnap dr helemaal nix meer van :S tlukt gwoon nie.

Maja kan iemand hier aub voorbeeldje neerzetten, volgens mij moet t via <form> maar tlukt me gwoon ff niet. FF een blackout denk k

Naja bedankt alvast
 
Jasper DS

Jasper DS

20/06/2010 13:56:39
Anchor link
wat lukt niet?

edit: gezien dat het al lang geleden is ;)
Gewijzigd op 20/06/2010 13:57:05 door Jasper DS
 
Joren de Wit

Joren de Wit

20/06/2010 14:20:34
Anchor link
Ik mag hopen dat de vraag van de TS na 6 jaar al eens opgelost is. Beetje nutteloos om zo'n oud topic omhoog te trappen zonder een nieuwe inbreng eraan toe te voegen.

Slotje.
 
 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.