Intern mailsysteem
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
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'"
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?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
mysql_connect();
mysql_select_db();
mysql_query("INSERT INTO `tabel` (id,ontvanger,titel,bericht) VALUES (NULL,'$vOntvanger','$vTitel','$vBericht')";
?>
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 :)
Code (php)
1
2
3
4
5
6
7
8
9
10
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
?>
# 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)
1
2
3
4
5
6
7
8
9
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 :)
?>
# 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 :)
?>
van voor had ik vervangen door een id + int :)
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.
Scheelt dus een query en dus tijd :P
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
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
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
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.
Maja kga t proberen thx voor de hupl :-))
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
Iemand een id (A)
<input type="checkbox" value="msg_id" name="hide_msg" />
mysql_query('UPDATE `tabelnaam` SET `NoRead` = 2 WHERE `msg_id` = '.$msg_id);
Merci ;-))
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
Slotje.