Avatar billede bas Forsker
03. februar 2004 - 19:46 Der er 11 kommentarer og
1 løsning

gæstebog på to sider ?

Jeg vil gerne lave en gæstebog, som falder i to adskilte dele.
På den ene side skal formen være, og når man klikker på submit knappen skal man komme til en ny side, hvor resultaterne vises.

Jeg kan godt få det til at virke med at resultaterne vises
på samme side som formen, men det er ikke det jeg vil.

Jeg har en fil, som jeg har det i to:

http://www.detour.dk/blog1.phps

http://www.detour.dk/blog1.phps

På forhånd tak.

Hilsen Martin
Avatar billede bas Forsker
03. februar 2004 - 19:47 #1
Den anden filer hedder blog2 og ikke blog1

http://www.detour.dk/blog2.phps

/Martin
Avatar billede detox Nybegynder
03. februar 2004 - 19:52 #2
I 'blog2.php' mangler du selve <table> </table> tagsene.
Avatar billede detox Nybegynder
03. februar 2004 - 20:01 #3
Jeg vil mene det skal være noget i den her stil:

blog1.php:
----------

<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>BLOG</title>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
</head>
<body>

<form action="blog2.php" method="post">
<table>
<tr>
    <td></td>
    <td><input type="hidden" name="skriv" VALUE=1></td>
</tr>
<tr>
    <td>Navn:</td>
    <td><input type=text name="navn"></td>
</tr>
<tr>
    <td>E-mail:</td>
    <td><input type=text name="email"></td>
</tr>
<tr>
    <td Valign="top">Besked:</td>
    <td><textarea name="besked"  cols="30" rows="5"></textarea></td>
</tr>
<tr>
    <td></td>
    <td><input type=submit VALUE="Send"></td>
</tr>
</table><br /><br />
</form>
</body>
</html>

blog2.php:
----------

<?php
include ('conn.php');
if(isset($_POST['skriv'])) {
    $besked = nl2br($besked);
    $dato_array = getdate();
    $dato = $dato_array["mday"]. "/".$dato_array["mon"]. "-".$dato_array["year"];
    mysql_query("INSERT INTO bog(navn, email,dato, besked) VALUES('$navn' , '$email', '$dato', '$besked')");
}

$foresp = mysql_query("SELECT navn, email, dato, besked FROM bog ORDER BY nr DESC");
$out = "<table>\n";
while($data = mysql_fetch_row($foresp)) {
    $out .= "<tr><td Valign=top>";
    $out .= "fra:<a href=\"mailto:".$data[1]."\">".$data[0]."</a>";
    $out .= "<br />".$data[2];
    $out .= "</td><td Valign=top>".$data[3]."</td></tr>";
}
$out .= "</table>\n";
echo $out;
?>
Avatar billede detox Nybegynder
03. februar 2004 - 20:04 #4
Men det er ikke optimalt at du har valgt at bruge det datoformat du gør. Det havde været bedre at bruge fx et felt af typen TIMESTAMP, så indsætter den automatisk tidspunkt for indsættelse og du kan så formatere til det ønskede format ved udtræk. Det giver samtidig mulighed for at bruge alle MySQL's indbyggede dato/tid funktioner.
Avatar billede detox Nybegynder
03. februar 2004 - 20:14 #5
En lidt mere 'fremtidssikret' version, der tager højde for register_globals kan være off. Og som først bytter \n ud med <br /> ved udskrivningen:

<?php
include ('conn.php');
if(isset($_POST['skriv'])) {
    $besked = $_POST['besked'];
    $email = $_POST['email'];
    $navn = $_POST['navn'];
    $dato_array = getdate();
    $dato = $dato_array["mday"]. "/".$dato_array["mon"]. "-".$dato_array["year"];
    mysql_query("INSERT INTO bog(navn, email,dato, besked) VALUES('$navn' , '$email', '$dato', '$besked')");
}

$foresp = mysql_query("SELECT navn, email, dato, besked FROM bog ORDER BY nr DESC");
$out = "<table>\n";
while($data = mysql_fetch_assoc($foresp)) {
    $out .= "<tr><td Valign=top>";
    $out .= "fra:<a href=\"mailto:".$data['email']."\">".$data['navn']."</a>";
    $out .= "<br />".$data['dato'];
    $out .= "</td><td Valign=top>".nl2br($data['besked'])."</td></tr>";
}
$out .= "</table>\n";
echo $out;
?>
Avatar billede bas Forsker
03. februar 2004 - 20:51 #6
Til detox

Mange tak for det - det virker !

Du skal nok få points, men kan du henvise mig til en side, hvor der står
noget om datoformater ?

Jeg kan vel bare ændre feltet til timestamp.

/Martin
Avatar billede detox Nybegynder
03. februar 2004 - 21:00 #7
Ja, hvis du ændrer typen til TIMESTAMP, kan du helt undlade at smide datoen ind. Så skal du bare sørge for at formatere udtrækket vha. MySQL's indbyggede funktion: DATE_FORMAT(). I dit tilfælde i den her stil:

$foresp = mysql_query("SELECT navn, email, DATE_FROMAT(dato, '%d/%m-%Y') AS dato, besked FROM bog ORDER BY nr DESC");

Du kan læse meget mere om de forskellige funktioner i manualen:
http://www.mysql.com/doc/en/Date_and_time_functions.html
Avatar billede detox Nybegynder
03. februar 2004 - 21:03 #8
DATE_FROMAT == DATE_FORMAT ;o)
Avatar billede detox Nybegynder
03. februar 2004 - 21:05 #9
Ellers er der osse en gennemgang her på dansk:
http://mbn.dk/?aid=28&lang=dk
Avatar billede bas Forsker
03. februar 2004 - 21:12 #10
ok tak for det.

Jeg er pludseligt blevet lidt forvirret.
Hvorfor virker det, når der ikke er en INSERT forespørgsel
i den fil, hvor formen er ?

- jeg tænker i blog1.php

hvordan ved den, at den skal sætte data ind i databasen ??

/Martin
Avatar billede detox Nybegynder
03. februar 2004 - 22:34 #11
Det foregår i 'blog2.php', som jo er action i din form.
Avatar billede bas Forsker
03. februar 2004 - 22:35 #12
ok, det er indbygget i blog2.php

- fandt det lige.

Ganske smart synes jeg.

/Martin
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