Avatar billede jdlindstroem Nybegynder
05. maj 2001 - 19:56 Der er 11 kommentarer og
2 løsninger

Konvertere svar fra e-mails til tabel

Hej,

Jeg vil lave en spørgeskemaundersøgelse. Svarene skrives ind i en formular lavet i HTML og sendes med e-mail til en e-mailadresse. Svarene på spørgeskemaerne skal altså ikke registreres af en mySQLserver med det samme.

Hvordan gør man det?

Vigtigere endnu: Når undersøgelsen er slut, står jeg med mange hundrede svar i form af e-mails. Jeg skal have konverteret disse e-mails til en mySQL-tabel.

Hvordan læser jeg disse e-mails og får dem konverteret til en mySQL tabel? Det jeg mangler er altså en vejledning i at læse en række breve fra en e-mailkonto og parse dem til en tabel. Kan det gøres i PHP?

Eksempel: Der ligger 500 breve med svar på et spørgeskema på min emailkonto. Jeg har en tabel klar i min database. Hvordan flytter jeg svarene fra de 500 breve over i en tabel?
Avatar billede repsac Nybegynder
05. maj 2001 - 20:46 #1
Hvordan ser brevene ud, og i hvilket format har du mulighed for at hente det i? (txt?)
Avatar billede repsac Nybegynder
05. maj 2001 - 20:47 #2
Hvis det ligger i plain-text kan man hente det med php og adskille det hvor man vil. Derpå skal det så skrives til DB\'en ...
Avatar billede repsac Nybegynder
05. maj 2001 - 21:14 #3
Ahrm! Er det noget jeg skal lave eller vil du bare have at vide hvordan man gør?
Avatar billede repsac Nybegynder
05. maj 2001 - 22:02 #4
Hmmm ... nå. Så send mig da en mail når du læser dette ... casper@thomsen.as
Avatar billede jdlindstroem Nybegynder
06. maj 2001 - 10:59 #5
Hej Repsac,

Tak for svar! Jeg har ikke bestemt mig for, hvordan jeg skal hente svarene gemt i de mange e-mails. Jeg mangler vejledning i, hvordan man i det hele taget gør sådan noget her.

Kan man indstille en formular på en htmlside, så den kun skriver i plaintekst?

Eller skal man bare sørge for at den emailadresse der sendes formularer til kun kan modtage/sende i plaintekst?

Det lyder fint, det er \'nemt\' at gøre i php.

Jeg er glad for dit tilbud om at kunne gøre det. Jeg vil dog gerne gøre det selv, da jeg har brug for den øvelse det giver og jeg skal måske gøre det mange gange fremover.

Har du en link med en vejledning eller kan du give mig nogle eksempler at starte på?

Tak for din hjælp ;)





Avatar billede repsac Nybegynder
06. maj 2001 - 11:24 #6
Godtså ... Her lidt kode (med lidt forklaring) som du nok skal bruge:

<?php
if (file_exists($fil)) { //hvis filen der er indeholdt i variablen $fil eksistere så:
    $fd = fopen ($fil, \"r\"); //åbn filen med rettigheder til at læse (r=read) - se www.php.net/fopen
    $indhold = fread ($fd, filesize ($fil)); //læs filen og stop indholdet af den ned i variablen $indhold
    fclose ($fd); //luk filen igen.
    }
?>

Nu har du så hentet indholdet af en fil. Nu skal vi have fundet det i filen som vi skal bruge. Dertil skal du vide hvordan dine filer ser ud og opsplitte dem. Medmindre du vil \"fopen\'ne\" filen og adskille den direkte i og med at du kun læser dele af filen ...
Hvad der er lettest kan komme an på hvordan formen på de emails du har, ser ud.

Følgende script opsplitter en variabel ved et bestemt tegn ... se evt. www.php.net/split
<?php
$indhold = \"Dette er | en test\";
echo $indhold;
$split = split(\"|\", $indhold);
echo $split[0];
echo \"<br>$split[1]\";
?>

Med følgende \"script\" opretter du en DB med en tabel i:
<?php
$con = mysql_connect(\"servername\", \"username\", \"password\"); //opret forbindelse til \"servername\" som brugeren \"username\" med kodeordet \"password\".
mysql_query(\"create database whatever\"); //lav databasen med navnet \"whatever\"
mysql_select_db(\"whatever\"); //vælg databasen whatever - dette ER nødvendigt!
$tabelSQL = \"create table something
            (
                info_1  INT(2) NOT NULL,
                info_2  VARCHAR(20)
                PRIMARY KEY(info_1)
            )\"; //lav tabellen \"something\" med kolonnerne: info_1 der må indeholde 2 tal (INT), info_3 der må indeholde 20 VARCHAR\'s (længere forklaring - læs doc\'en på www.mysql.com). Tilmed må data der skrives ned i celler i kolonnen info_1 ikke være tomme (have værdien NULL), det må data der skrives i celler i kolonnen info_2 godt. Kolonnen info_1 er \"PRIMARY KEY\" - dvs. at der ikke må være to celler i kolonnen info_1 der er ens. Så kan man utvetydigt finde data frem, hvilket man SKAL kunne ...
mysql_query($tabelSQL); //skriv ovenstående som en forespørgsel til mysql.
mysql_close($con); //luk forbindelsen til mysql igen.
?>

Nu til at sætte noget ind i tabellen ...
<?php
$insertSQL = \"INSERT INTO something (info_1, info_2)
              VALUES (10, \'bla bla bla!\')\"; // sql-kommandoer er skevet i upperclass ... lidt engelsk og det bør kunne forstås ...
mysql_query($insertSQL);
?>

Spørgsmål? - så tøv ikke med at spørge ...
Avatar billede repsac Nybegynder
06. maj 2001 - 11:24 #7
Du kunne evt. også læse de tutorials der vedrører emnet igennem på www.webcafe.dk
Der er nogle meget gode om PHP/MySQL.
Avatar billede repsac Nybegynder
06. maj 2001 - 11:26 #8
Du skal jo så have lavet en løkke uden om det hele som kører det hele igennem for de filer som nu en gang skal tæske igennem ...
Avatar billede repsac Nybegynder
06. maj 2001 - 11:29 #9
Nu ved jeg ikke hvor meget du har lavet i php og derfor ikke om du har en php-editor. Hvis ikke bør du nok lige fiske dig én ... www.editplus.com - bruge jeg selv.
Avatar billede mortenfn Nybegynder
06. maj 2001 - 21:31 #10
alt det du har fået gør det ikke.!

Der er lige et par forhold der skal tages højde for.

Hvor har du alle de e-mail?
Kører du egen mail-server?
Hvilket e-mailprogram har du hendtet alle e-mail med?

7morten


Avatar billede jdlindstroem Nybegynder
07. maj 2001 - 11:33 #11
Hej Morten,

Jeg skal have emailsene på en ekstern mailserver. Jeg har derfor ikke hentet dem ned. Jeg leder efter en vejledning i, hvordan jeg henter brevene ned og konverterer dem til databasetabeller i mySQL. Jeg går og tror, at der findes en rimelig standardiseret måde at hente dem på. Er der det?

Mit spørgsmål kunne også lyde:
Hvordan henter jeg emailsene ned og konverterer dem?
Avatar billede alvion Nybegynder
07. maj 2001 - 14:51 #12
Du henter emails fra en mailserver ved hjælp af IMAP modulet. Du kan læse mere om IMAP her:

http://www.zend.com/manual/ref.imap.php

IMAP modulet kan både hente mails fra IMAP servere og POP3 servere.

Hvordan du konverterer dem? Det kommer an på, hvordan de data, som du skal bruge, ligger gemt i e-mail\'en. Det er vigtigt at det er ensartet. Dvs. står \"adresse\" på linie 6 i én mail, så skal det også gøre det i alle andre mails.
Avatar billede splab Nybegynder
10. maj 2001 - 10:40 #13
Uhm, er det ikke nemmere bare at sende formen direkte til databasen gennem et phpscript i stedet for alt det mail..?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester