20. Indlæg til gæstebogen

Du er her: StartIndholdsfortegnelse → Indlæg til gæstebogen
Indhold

Indledning

Du skal nu oprette en ny side, hvorfra dine brugere kan lægge et indlæg til gæstebogen.

Du skal faktisk oprette 2 sider:

  1. En side med en formular, som dine brugere indtaster data på.
  2. En side, der checker, at der ikke er ondsindet kode i dataene og lægger dem ind i databasen.

Udover det skal du oprette et link på din side med gæstebogen (den du oprettede i Kapitel 17), der åbner siden med formularen. Formular-siden skal du linke til med lidt JavaScript (nemlig et, der åbner siden i et nyt vindue).

Formular-siden

Denne side skal indeholde følgende formular-felter:

  1. Start WebWriter
  2. Sørg for at aktivere den mappe, der hedder mysql fra Kapitel 17
  3. Opret en ny side med Standard-skabelonen
  4. Gem siden som gbog_formular.htm
  5. Indsæt følgende formular: Det kunne f.eks. se således ud:
    <form action="opdater.php" method="post">
    <table>
    <tr>
    <td align="right">
    <strong>Navn: </strong>
    </td>
    <td>
    <input type="text" value="Indtast navn" name="navn">
    </td>
    </tr>
    <tr>
    <td align="right">
    <strong>Email: </strong>
    </td>
    <td>
    <input type="text" value="Skriv email" name="email">
    </td>
    </tr>
    <tr>
    <td align="right">
    <strong>Besked: </strong>
    </td>
    <td>
    <input type="text" value="Skriv besked" name="besked">
    </td>
    </tr>
    <tr>
    <td align="right">
    <input type="submit" value="Indsend">
    </td>
    <td>
    <input type="reset" value="Fortryd">
    </td>
    </tr>
    </table>
    </form>
    
    Læg mærke til, at jeg har brugt metoden POST, som ikke viser data på adresselinien.
  6. Lidt service til dine brugere:
    Du kan med lidt JavaScript sørge for, at den forudskrevne tekst i felterne automatisk bliver slettet, når brugeren aktiverer feltet.
    Skriv følgende kode ind i hvert af felterne:
     onfocus="this.value='';"
    
    Hvis du f.eks. bruger koden på navn-feltet, kommer det til at se sådan ud:
    <input ... name="navn" onfocus="this.value='';">
    
  7. Det var det hele. Så kan du jo pynte siden med noget baggrundsfarve, fonter mm. (stylesheet ikke oss'?). Derefter skal du videre med den side, der putter brugerens input ind i databasen.

Indsæt i databasen

  1. Opret en ny side efter Standard-skabelonen
  2. Gem den som opdater.php
  3. Først skal vi checke om der i det hele taget er sendt nogen data fra den formular vi oprettede og videre til denne side (du kan evt. læse Kapitel 8 en gang til):
  4. Skriv aller øverst på siden:
    <?
    if(empty($_POST['navn']) && empty($_POST['email']))
    {
    header("Location: index.php");
    exit;
    }
    
    Læg mærke til at jeg har brugt $_POST, da vi brugte metoden POST til at videresende data fra formularen.
    Se yderligere forklaring i Kapitel 17.
    Nu skal du så have smidt indholdet fra felterne i formularen over i nogle variabler.
  5. Skriv derefter:
    $navn = $_POST['navn'];
    $email = $_POST['email'];
    $besked = $_POST['besked'];
    
  6. Derefter skal du oprette en forbindelse til mysql og vælge data, hvilken database, vi skal arbejde med (her arbejder vi stadig med eksemplet med solen.her og koden: abcd. Du skal selvfølgelig bruge dine egne koder).
    Skriv således under de ovenstående koder:
    mysql_connect("solen.her", "solen", "abcd");
    mysql_select_db("solen");
    
    Ligesom du gjorde i Kapitel 17.
  7. Nu kommer vi til det nye, nemlig selve forespørgslen. Her skal du bruge kommandoen mysql_query. Skriv således:
    if(mysql_query("
    INSERT INTO indlaeg 
    SET navn = '$navn', 
    email = '$email', 
    besked = '$besked'
    "))
    {
    //Her hopper vi ud af PHP
    ?>
    <html>
    <head>
    </head>
    <body>
    Tak for dit indlæg. <br>
    Vend tilbage til <a href="index.php">
    Gæstebogen</a>
    
    <?
    //Her hopper vi ind i PHP igen
    }
    else
    {
    //Og vi hopper ud af PHP
    ?>
    
    Kunne desværre ikke få forbindelse<br>
    Prøv igen senere.
    Vend tilbage til <a href="index.php">
    Gæstebogen</a>
    
    <?
    //Og afslutter PHP
    }
    ?>
    <!-- Herunder afslutter vi HTML -->
    </body>
    </html>
    
    
    Forespørgslen herover bruges til at indsætte data i en database. Det er kommandoen:
    mysql_query(INSERT INTO tabel SET et_felt = "en_værdi")
    der sørger for dette.
    Læg også mærke til, at vi springer ind og ud af PHP. Jeg har oprettet en if-sætning, der melder positivt tilbage, hvis det lykkes for PHP at indsætte data i databasen. Hvis ikke det lykkes melder den negativt tilbage.

Før du lægger den på nettet

Før du lægger din gæstebog ud på internettet er der lige et par ting om sikkerhed du skal gennemgå. Dette kommer i næste lektion.