Avatar billede genixdk Nybegynder
24. august 2006 - 11:29 Der er 9 kommentarer og
1 løsning

Fest tilmelding

Jeg står og skal holde en fest, og istedet for folk tilmelder sig pr tlf ville det være smart med en online tilmelding. Den skal bare være super simpel minus grafik or lir.
De tilmeldte skal bare vises nedenunder tilmeldingen.

Der skal stå følgende:

Navn:
Spiser:
Overnatter:

[Tilmeld fest]

Hvordan laver jeg dette simpelt, er blank...
Avatar billede dcheng Novice
24. august 2006 - 14:16 #1
Hvor ligger dit niveau? mht. HTML, PHP & MySQL?
Avatar billede coderdk Praktikant
25. august 2006 - 16:08 #2
Her er en lille ting jeg lavede for lang tid siden, da jeg skulle bruge noget lignende:

<?php

$udfil = "tilmeldte.txt"; // SKAL VÆRE SKRIVBAR!

session_start();

function getComments()
{
    if (!file_exists($udfil))
    {
        touch($udfil);
    }
    $cmnts = unserialize( file_get_contents( $udfil ) );
    if ( !empty( $cmnts) && count( $cmnts ) > 0 )
    {
        $cnt = "";
        foreach ( $cmnts as $cmnt )
        {
            $cnt = "<div class='navn'>&raquo; <b>$cmnt[name]</b> (overnatter";
            if ( $cmnt['overnatter'] == 0 ) $cnt .= "ikke";
            $cnt .= ") skrev $cmnt[date]</div><div class='cmnt'>$cmnt[post]</div>\n" . $cnt;
        }
        echo $cnt;
    }
    else
    {
        echo "<p><b>Der er ingen kommentarer endnu! Vær den første! ;)</b></p>\n";
    }

    $navn = ( empty( $_COOKIE['navn'] ) ? '' : " value='$_COOKIE[navn]'" );

    echo "<form action='index.php' method='post'><b>Navn: <input name='navn' type='text' maxlength='20' size='20'$navn><br>\n<b><input name='overnat' type='checkbox' value='1'> Overnatter<br>\n<b>Kommentar:</b><br><textarea name='post' style='width: 400px; height: 75px'></textarea><input type='submit' value='Fyr den af'></form>";
}



function head()
{
?>
<html>
    <head>
        <title>Fest</title>
        <style>
            body {
                background-color: white;
                color: black;
                font-family: verdana, arial, helvetica, sans-serif;
                font-size: 12px;
                text-align: center;
            }
            #cont {
                margin: auto;
                width: 700px;
                padding: 10px;
                border: 1px solid #522;
                text-align: left;
                background-color: #fff;
            }
            .navn {
                border: 1px dotted #5a5;
                margin-top: 5px;
                background-color: #eef;
                padding: 5px;
            }
            .cmnt {
                background-color: #eee;
                margin-bottom: 15px;
                padding: 5px;
                border-left: 1px dotted #bbb;
                border-right: 1px dotted #bbb;
                border-bottom: 1px dotted #bbb;
            }
            textarea, input {
                border: 1px solid #ccc;
            }
            textarea:hover, input:hover {
                background-color: #ffc;
            }
            button {
                border: 1px solid black;
            }
        </style>
    </head>
    <body>
        <div id="cont">
<?
}

function foot()
{
?>
        </div>
    </body>
</html>
<?
}

if ( empty( $_SESSION['grl'] ) && empty( $_POST['postpass'] ) )
{
    head();
?>
    <form method="post">
        Indtast password
        <input name="postpass" id="postpass" type="password" maxlength="10" style="width: 100px">
        <button>Vis</button>
    </form>
    <script type="text/javascript">
        document.getElementById("postpass").focus();
    </script>
<?
    foot();
    exit;
}
if ( empty( $_SESSION['grl'] ) && !empty( $_POST['postpass'] ) && strtolower( $_POST['postpass'] ) == 'grl' )
{
    $_SESSION['grl'] = 1;
    header("location: index.php");
    exit;
}
elseif ( empty( $_SESSION['grl'] ) )
{
    head();
    echo "<h1>Du skal indtaste den korrekte kode!</h1><p>Tryk tilbage!</p>";
    foot();
    exit;
}

if ( !empty( $_POST['post'] ) )
{
    if (!file_exists($udfil))
    {
        touch($udfil);
    }
    $navn = $_COOKIE['navn'] = $_POST['navn'];
    $cmnts = unserialize( file_get_contents( $udfil ) );
    $cmnts[] = array( 'name' => $_POST['navn'], 'date' => date( "Y/m/d H:i" ), 'post' => $_POST['post'], 'overnatter' => ( !empty( $_POST['overnat'] ) ? 1 : 0 ) );
    if ( $fp = fopen( $udfil, "w" ) )
    {
        if ( flock( $fp, LOCK_EX ) )
        {
            fwrite( $fp, serialize( $cmnts ) );
            flock( $fp, LOCK_UN );
            fclose( $fp );
            header('location: index.php');
            exit;
        }
        else
        {
            head();
            echo "<h1>Fejl!</h1><p>Det lykkedes ikke at smide beskeden, tryk reload og sig ja til at sende informationen igen!</p>";
            foot();
            exit;
        }
    }
    else
    {
        head();
        echo "<h1>Fejl!</h1><p>Det lykkedes ikke at smide beskeden, tryk reload og sig ja til at sende informationen igen!</p>";
        foot();
        exit;
    }
}

head();

?>
<h1>Festen!</h1>

<p>Her kan du skrive lidt ;-)</p>
<?

getComments();

foot();

?>
Avatar billede coderdk Praktikant
25. august 2006 - 16:09 #3
Skal lige siges at man skal skrive en kode "grl" uden gåseøjne for at komme til at se og kommentere siden - Det kan fjernes hvis det ikke er nødvendigt for dig ;)
Avatar billede genixdk Nybegynder
25. august 2006 - 16:34 #4
Perfekt det var lige hvad jeg skulle bruge...

Men får:
Warning: touch(): Unable to create file because No such file or directory in /home/sites/site5/web/fest/index.php on line 11

Udfil tilmeldte.txt er tilstede og chmod til 777
Avatar billede coderdk Praktikant
25. august 2006 - 21:35 #5
Ah,

function getComments()
{

Skal vist være:

function getComments()
{
  global $udfil;

Eller også skal $udfil laves som en define (jeg havde bare et filnavn alle steder)...
Avatar billede coderdk Praktikant
25. august 2006 - 21:35 #6
Du får lige et svar også ;)
Avatar billede genixdk Nybegynder
25. august 2006 - 22:29 #7
Hehe nu virker det, men filen ser bare sådan ud:
a:4:{i:0;a:4:{s:4:"name";s:5:"kjklk";s:4:"date";s:16:"2006/08/25 16:31";s:4:"post";s:3:"jkl";s:10:"overnatter";i:1;}i:1;a:4

Så jeg kan jo ikke rigtig se hvem der har tilmeldt sig, på siden vises kun den sidste kommentar
Avatar billede coderdk Praktikant
26. august 2006 - 00:05 #8
Vises kun den sidste?! Det er en eller anden fejl... Kigger lige på det!
Avatar billede coderdk Praktikant
26. august 2006 - 00:19 #9
Ok, omstrukturerede en smule, her er resultatet:

<?php

$udfil = "tilmeldte.txt"; // SKAL VÆRE SKRIVBAR!

session_start();

function getComments()
{
    global $udfil;
    if (!file_exists($udfil))
    {
        touch($udfil);
    }
    $cmnts = unserialize( file_get_contents( $udfil ) );
    if ( !empty( $cmnts ) && count( $cmnts ) > 0 )
    {
        $cnt = "";
        foreach ( $cmnts as $cmnt )
        {
            $cnt = "<div class='navn'>&raquo; <b>$cmnt[name]</b> (overnatter"
                . ( $cmnt['overnatter'] == 0 ? " <i>ikke</i>" : '' ) .
                ") skrev $cmnt[date]</div><div class='cmnt'>" .
                "$cmnt[post]</div>\n" . $cnt;
        }
        echo $cnt;
    }
    else
    {
        echo "<p><b>Der er ingen kommentarer endnu! Vær den første! ;)</b></p>\n";
    }

    $navn = ( empty( $_COOKIE['navn'] ) ? '' : " value='$_COOKIE[navn]'" );

    echo "<form action='$_SERVER[PHP_SELF]' method='post'><b>Navn: <input name='navn' type='text' maxlength='20' size='20'$navn><br>\n<b><input name='overnat' type='checkbox' value='1'> Overnatter<br>\n<b>Kommentar:</b><br><textarea name='post' style='width: 400px; height: 75px'></textarea><input type='submit' value='Fyr den af'></form>";
}



function head()
{
?>
<html>
    <head>
        <title>Fest</title>
        <style>
            body {
                background-color: white;
                color: black;
                font-family: verdana, arial, helvetica, sans-serif;
                font-size: 12px;
                text-align: center;
            }
            #cont {
                margin: auto;
                width: 700px;
                padding: 10px;
                border: 1px solid #522;
                text-align: left;
                background-color: #fff;
            }
            .navn {
                border: 1px dotted #5a5;
                margin-top: 5px;
                background-color: #eef;
                padding: 5px;
            }
            .cmnt {
                background-color: #eee;
                margin-bottom: 15px;
                padding: 5px;
                border-left: 1px dotted #bbb;
                border-right: 1px dotted #bbb;
                border-bottom: 1px dotted #bbb;
            }
            textarea, input {
                border: 1px solid #ccc;
            }
            textarea:hover, input:hover {
                background-color: #ffc;
            }
            button {
                border: 1px solid black;
            }
        </style>
    </head>
    <body>
        <div id="cont">
<?
}

function foot()
{
?>
        </div>
    </body>
</html>
<?
}

if ( empty( $_SESSION['grl'] ) && empty( $_POST['postpass'] ) )
{
    head();
?>
    <form method="post">
        Indtast password
        <input name="postpass" id="postpass" type="password" maxlength="10" style="width: 100px">
        <button>Vis</button>
    </form>
    <script type="text/javascript">
        document.getElementById("postpass").focus();
    </script>
<?
    foot();
    exit;
}
if ( empty( $_SESSION['grl'] ) && !empty( $_POST['postpass'] ) && strtolower( $_POST['postpass'] ) == 'grl' )
{
    $_SESSION['grl'] = 1;
    header("location: $_SERVER[PHP_SELF]");
    exit;
}
elseif ( empty( $_SESSION['grl'] ) )
{
    head();
    echo "<h1>Du skal indtaste den korrekte kode!</h1><p>Tryk tilbage!</p>";
    foot();
    exit;
}

if ( !empty( $_POST['post'] ) )
{
    if (!file_exists($udfil))
    {
        touch($udfil);
    }
    $navn = $_COOKIE['navn'] = $_POST['navn'];
    $cmnts = unserialize( file_get_contents( $udfil ) );
    $cmnts[] = array( 'name' => $_POST['navn'], 'date' => date( "Y/m/d H:i" ), 'post' => $_POST['post'], 'overnatter' => ( !empty( $_POST['overnat'] ) ? 1 : 0 ) );
    if ( $fp = fopen( $udfil, "w" ) )
    {
        if ( flock( $fp, LOCK_EX ) )
        {
            fwrite( $fp, serialize( $cmnts ) );
            flock( $fp, LOCK_UN );
            fclose( $fp );
            header("location: $_SERVER[PHP_SELF]");
            exit;
        }
        else
        {
            head();
            echo "<h1>Fejl!</h1><p>Det lykkedes ikke at smide beskeden, tryk reload og sig ja til at sende informationen igen!</p>";
            foot();
            exit;
        }
    }
    else
    {
        head();
        echo "<h1>Fejl!</h1><p>Det lykkedes ikke at smide beskeden, tryk reload og sig ja til at sende informationen igen!</p>";
        foot();
        exit;
    }
}

head();

?>
<h1>Festen!</h1>

<p>Her kan du skrive lidt ;-)</p>
<?

getComments();

foot();

?>
Avatar billede genixdk Nybegynder
27. august 2006 - 14:09 #10
Perfekt. Tænkte nok der var en der havde haft samme ide engang...
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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