Det finns flera sätt att utforma den databastabell som du sparar inskickade fomulär i. Egentligen vore det bäst att dela upp formuläret i två tabeller, ett för alla intressen och ett för resten. De två formulären skulle vara sammankopplade med id-nummer så att man vet vilket intresse som hör till vilken person. Jag tycker dock att du ska spara hela formuläret i en enda tabell då du är ganska ny på området, det är lite mindre kraftfullt men desto enklare. Tabellen kan se ut såhär:
CREATE TABLE `formular` (
`id` INT NOT NULL AUTO_INCREMENT ,
`kontaktamig` TINYINT( 1 ) NOT NULL ,
`skola` VARCHAR( 100 ) NOT NULL ,
`adress` VARCHAR( 255 ) NOT NULL ,
`postnummer` VARCHAR( 10 ) NOT NULL ,
`kontaktperson` VARCHAR( 100 ) NOT NULL ,
`telefonnummer` VARCHAR( 50 ) NOT NULL ,
`faxnummer` VARCHAR( 50 ) NOT NULL ,
`epost` VARCHAR( 150 ) NOT NULL ,
`intressen1` VARCHAR( 255 ) NOT NULL ,
`intressen2` VARCHAR( 255 ) NOT NULL ,
`meddelande` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);
Det betyder i korthet: Skapa en tabell med namnet formular. Tabellen ska ha kolumnerna id (som är ett heltal som räknas upp ett för varje rad du lägger i tabellen), kontaktamig (som är en siffra), skola, adress, ... meddelande (som är text av olika längd).
Som du ser har jag en siffra för kontakta mig. Den kommer att vara 1 om personen vill bli kontaktad och 0 i annat fall. Intressena är uppdelade i två kolumner efter den gruppering du har gjort. Om en användare kryssar i att de är intresserade av IT och er vision kommer det tex. stå i intressen2. Om du undrar betyder varchar betyder variable character (string) alltså en sträng/text av varierande längd, siffran inom parenteser är denna texts maximala längd. Att meddelande-kolumnen är av typen text betyder att den kan bestå av mycket fler tecken än 255 som är en varchars maximala längd.
Som jag nämnde tidigare har de flesta webbhotell något som heter phpMyAdmin för att administrera mysql-databaser. Om du har det går du in på fliken SQL och klistrar in koden ovan och trycker på 'Go' för att skapa tabellen. Om du inte har tillgång till phpMyAdmin får du säga vad det är du faktiskt har tillgång till så kan jag hjälpa dig.
Så, nu har du skapat tabellen och det är dags att börja fylla den med data. Det gör du från din formulärsida. Där du nu mailar informationen lägger du till följande kod:
//Anslut till databasen
mysql_connect('databasserver', 'användarnamn', 'lösenord');
mysql_select_db('databasnamn');
//Koda all data så att inte konstiga tecken som \ och ' påverkar din SQL
//Görs inte detta finns det en chans att någon sabbar din databas antingen av misstag eller med flit
$kontaktamig = mysql_escape_string($kontaktme == '' ? 0 : 1);
$skola = mysql_escape_string(htmlspecialchars($_POST['skola']));
$adress = mysql_escape_string(htmlspecialchars($_POST['adress']));
$postnummer = mysql_escape_string(htmlspecialchars($_POST['post']));
$kontaktperson = mysql_escape_string(htmlspecialchars($_POST['kontaktperson']));
$telefonnummer = mysql_escape_string(htmlspecialchars($_POST['telefonnummer']));
$faxnummer = mysql_escape_string(htmlspecialchars($_POST['faxnummer']));
$epost = mysql_escape_string(htmlspecialchars($_POST['from']));
$intressen1 = mysql_escape_string(htmlspecialchars($specialintresse1.', '.$specialintresse2.', '.$specialintresse3));
$intressen2 = mysql_escape_string(htmlspecialchars($specialintresse4.', '.$specialintresse5.', '.$specialintresse6.', '.$specialintresse7.', '.$specialintresse8));
$meddelande = mysql_escape_string(htmlspecialchars($_POST['mailet']));
//Lägg till datan i databasen
//Detta är själva SQL-koden
$sql = "INSERT INTO formular (kontaktamig, skola, adress, postnummer, kontaktperson, telefonnummer, faxnummer, epost, intressen1, intressen2, meddelande) VALUES('$kontaktamig', '$skola', '$adress', '$postnummer', '$kontaktperson', '$telefonnummer', '$faxnummer', '$epost', '$intressen1', '$intressen2', '$meddelande')";
//Här utförs SQL-koden
if(mysql_query($sql))
echo "Tack för anmälan!";
else
echo "Något blev visst fel: ".$sql.'<br>'.mysql_error();
Ovanstående kod gör följande: Först ansluter den till databasservern (observera att du ska byta ut databasserver, användarnamn och lösenord mot de anslutningsinställningar du får från ditt webbhotell) och väljer vilken databas den ska arbeta med (databasnamnet ska du också byta ut mot ett värde du får från ditt webbhotell).
Det andra stycket kod ser till att det som användare fyller i formuläret inte påverkar din databas eller dina hemsidor. Föreställ dig tex. att någon fyller i <h1>Trollskolan</h1> i fältet för skola. Det kommer att göra så att datan ser konstig ut på sidan där alla formulär listas men tänk vad som händer om någon skriver in </html> eller </body> då vet man inte riktigt vad som händer. funktionen htmlspecialchars() ser till att special-tecken som < och & kodas och därmed oskadliggörs. Liknande behövs för att skydda mysql. I mysql är ' ett specialtecken och en elak användare kan använda det för att radera saker i din databas. mysql_escape_string ser till att detta inte kan ske.
Stycke tre är det verkligt intressanta eftersom det är koden som faktiskt utför lite SQL (structured query language, strukturerat fråge-språk, du frågar databasen om olika saker med det). Det sql-koden betyder är: Lägg till följande i tabellen formulär (i dessa kolumner) värden ('här', 'kommer', 'värdena'). mysql_query() utför sql-koden och skriver ut "Tack för anmälan" om det gick bra och ett felmeddelande om något blev fel. Just nu skriver den ut det felmeddelande som mysql ger ifrån sig samt den sql-kod du försökte utföra. Det är bra att göra så när du testar din kod men se till att ersätta det med ett mer begripligt felmeddelande innan du utsätter normala användare för ditt formulär. Det är varken användarvänligt eller ur säkerhetssynpunkt en bra idé att skriva ut "#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'bla bla bla' at line 1".
Om allt gick bra så ska du nu ha ett formulär som lagrar inskickade formulär i en tabell i en databas. Det som är kvar nu är att göra en sida där informationen visas. Här är koden för en sådan sida:
<table border="1">
<tr>
<th>Kontakta mig</th>
<th>Skola</th>
<th>Adress</th>
<th>Postnr</th>
<th>Kontaktperson</th>
<th>Telefon</th>
<th>Fax</th>
<th>E-post</th>
<th>Intressen 1</th>
<th>Intressen 2</th>
<th>Meddelande</th>
</tr>
<?
//Anslut till databasen
mysql_connect('databasserver', 'användarnamn', 'lösenord');
mysql_select_db('databasnamn');
//Hämta det som finns i databasen
$result = mysql_query("SELECT * FROM formular");
//För varje rad
while($row = mysql_fetch_assoc($result)): ?>
<tr>
<td><?=$row['kontaktamig'] ? '<b>ja</b>' : 'nej';?></td>
<td><?=$row['skola'];?></td>
<td><?=$row['adress'];?></td>
<td><?=$row['postnummer'];?></td>
<td><?=$row['kontaktperson'];?></td>
<td><?=$row['telefonnummer'];?></td>
<td><?=$row['faxnummer'];?></td>
<td><a href="mailto:<?=$row['epost'];?>"><?=$row['epost'];?></a></td>
<td><?=$row['intressen1'];?></td>
<td><?=$row['intressen2'];?></td>
<td><?=$row['meddelande'];?></td>
</tr>
<? endwhile ?>
</table>
Du får givetvis omge koden ovan med <html> <head> osv.
Som du ser har jag gjort en tabell som överst har en rad med rubriker. Tabellens övriga rader kommer att hämtas från databasen. Liksom när du lade in data börjar du med att ansluta till databasen på samma sätt som förut (glöm inte att göra samma inställningar som ovan). Sedan hämtas alla rader från databasen. SELECT * FROM formular bytyder: hämta alla kolumner (* = alla kolumner) från tabellen formular.
Sedan har du en while-loop som för varje rad skriver ut densamma. Som du ser använder jag mig av <?=$variabel;?> det är en kort-version av att skriva <?php echo $variabel; ?>. $result innehåller alla hämtade rader från tabellen dvs hela tabellen. mysql_fetch_assoc() hämtar en rad ur tabellen och returnerar den som en associativ array dvs en array du kan komma åt med text-nycklar. Du kan alltså komma åt postnummret genom att skriva $row['postnummer'] istället för att veta att postnummer-kolumnen är kolumn nummer 4 och skriva $row[4]. Observera att den text du kommer åt en viss kolumn med är samma som namnet du gav kolumnen då du skapade tabellen. kontaktamig är en etta eller en nolla vilket på dataspråk också kan betyda sant eller falskt. Jag har använt mig av en kort-version av en if-sats för att omvandla detta till ja och nej. Epost-adressen skriver jag ut som en länk så att det är lätt att skicka epost till personen ifråga.
Så, det var en liten guide till hur du lägger till inskickade formulär i en databas och hur du får ut datan igen. Det finns givetvis mängder av funktionalitet man kan lägga till detta som tex. att ta bort rader, ändra i inlagda poster, göra så att tabellen går att sortera på en massa sätt och mer men börja med att göra och förstå ovanstående så är resten relativt enkelt.
Lycka till!