Avatar billede raan Nybegynder
11. oktober 2005 - 20:35 Der er 35 kommentarer og
1 løsning

Opslagstavle i php

Hej.

Jeg søger en Opslagstavle eller hvad man skal kalde det?
Sådan en som de har hos http://www.gruppeeksamen.dk/.

Hvor man skriver sit navn, også går det ned og ligger sig i en boks.

En der kan lave eller finde en system der ligner det meget?
Avatar billede jakobdo Ekspert
12. oktober 2005 - 08:03 #1
Jeg kan godt lave det! :o)
Men vil du ikke hellere selv lave det?
Avatar billede nizo Nybegynder
12. oktober 2005 - 16:17 #2
Det er egentlig meget simpelt..

Du smider nogle oplysninger ind i en database, ved hjælp af en form.. og lister den paa siden med et udtræk fra databasen..
Avatar billede jakobdo Ekspert
12. oktober 2005 - 17:04 #3
Ja, du kan evt tage udgangspunkt i en tagwall.
Avatar billede raan Nybegynder
12. oktober 2005 - 21:00 #4
Jo ville jeg gerne hvis jeg kunne . :)
Men det kan jeg ikke.
Gider du hjælpe?
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:03 #5
Kan du selv kode php og html?
Jeg vil helst ikke give færdige koder! (nogle gange smutter det dog) :o)
Avatar billede raan Nybegynder
12. oktober 2005 - 21:14 #6
Kan godt html, og er begyndt og læse lidt på php.
Men kan ikke så godt php. :s
Avatar billede jakobdo Ekspert
12. oktober 2005 - 21:28 #7
Ok!
Jeg vil gerne tage det step by step!
(det bliver dog når jeg har tid) :o)

Men du skal starte med at lave den form du gerne vil have!
F.eks.
input = navn
input = email
input = alder
textarea = besked

Eller hvad du kunne finde på, når den er på plads, så skal vi have designet en database.

Og tilsidst noget php kode som smider indholdet fra formen i databasen og endvidere viser den til folket.
Avatar billede raan Nybegynder
12. oktober 2005 - 23:00 #8
<input type="text" name="navn" size="20"> <br>
  <br>
 
  <input type="text" name="email" size="20"><br>

  <br>

  <input type="text" name="alder" size="20"><br>

  <br>
 
  <input type="text" name="alder" size="20"><br>

  <br>

  <textarea name="besked<BR>" rows="1" cols="20"></textarea>

  <br>

<input type="submit" value="Send">

Sådan f.eks ?
Avatar billede jakobdo Ekspert
13. oktober 2005 - 08:09 #9
Jep!

Så skal du lige huske <form action="action.php" method="post">
i toppen og </form> under!
Så sker der det, at når du trykker SEND, smider den alle data til siden: action.php
Avatar billede raan Nybegynder
13. oktober 2005 - 18:43 #10
<form action="action.php" method="post">
<body>
<input type="text" name="navn" size="20"> <br>
  <br>
 
  <input type="text" name="email" size="20"><br>

  <br>

  <input type="text" name="alder" size="20"><br>

  <br>
 
  <input type="text" name="alder" size="20"><br>

  <br>

  <textarea name="besked<BR>" rows="1" cols="20"></textarea>

  <br>

<input type="submit" value="Send">
</body>

Sådan . :)
Avatar billede jakobdo Ekspert
13. oktober 2005 - 21:05 #11
Smukt! :o)

Så skal vi lave en tabel (går ud fra du har adgang til en mysql-database)

tabelnavn: opslagstavle
id mediumint (autoincrement)
navn varchar(50)
email varchar(255)
alder tinyint -unsigned (går ikke ud fra nogle bliver mere end 255)
besked text

PS: Du har 2 alder i din form...
Avatar billede raan Nybegynder
13. oktober 2005 - 22:06 #12
SQL-forespørgsel : [Ret] [Fremstil PHP-kode]
CREATE TABLE `opslagstavle` (
`id` MEDIUMINT NOT NULL ,
`navn` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
`alder` TINYINT UNSIGNED NOT NULL ,
`besked` TEXT NOT NULL
);

Sådan?
Avatar billede jakobdo Ekspert
14. oktober 2005 - 06:22 #13
Husk autoincrement på dit ID, du finder det under funktion/function.
Een ellers ser det korrekt ud! :o)
Avatar billede jakobdo Ekspert
14. oktober 2005 - 06:22 #14
Een = Men
Avatar billede raan Nybegynder
14. oktober 2005 - 16:30 #15
SQL-forespørgsel : [Ret] [Fremstil PHP-kode]
CREATE TABLE `opslagstavle` (
`id` MEDIUMINT NOT NULL AUTO_INCREMENT ,
`navn` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 225 ) NOT NULL ,
`alder` TINYINT UNSIGNED NOT NULL ,
`besked` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);

Sådan? :)
Avatar billede jakobdo Ekspert
14. oktober 2005 - 16:53 #16
Så skal vi have gang i php kode! :o)

Du kan starte med at oprette filen: action.php
Og smide dette indhold i den:

<?php
echo "<pre>\n";
print_r($_POST);
echo "</pre>\n";
?>

Og prøv så at udfyld din form og tryk SEND
Avatar billede raan Nybegynder
14. oktober 2005 - 17:15 #17
Så kommer dette:

Array
(
    [navn] => Rasmus
    [email] => rasmus@randersen.dk
    [alder] => 0
    [besked] => Test
)
Avatar billede jakobdo Ekspert
14. oktober 2005 - 22:25 #18
Lækkert!
Så retter du aktion.php til:
<?php
include("connect.php");
$navn = mysql_escape_string($_POST["navn"]);
$email = mysql_escape_string($_POST["email"]);
$alder = mysql_escape_string($_POST["alder"]);
$besked = mysql_escape_string($_POST["besked"]);
mysql_query("INSERT INTO opslagstavle(id,navn,email,alder,besked) VALUES ('','".$navn."','".$email."',".$alder.",'".$besked."')") or die("Invalid query: " . mysql_error());
header("location: " . $_SERVER["HTTP_REFERER"]);
?>
Avatar billede jakobdo Ekspert
14. oktober 2005 - 22:38 #19
PS: Den sidste kode her ovenover, er dog ikke helt fuldendt!
Vi vil nemlig godkende en email som f.eks. email.dk
Hvilket jo ikke er en korrekt email.
Så det må vi kigge på senere... :o)
Avatar billede raan Nybegynder
14. oktober 2005 - 23:15 #20
Invalid query: Access denied for user: 'randersen.dk@localhost' (Using password: NO)

Okay, det lyder lækkert.
Avatar billede raan Nybegynder
14. oktober 2005 - 23:32 #21
Fandt selv ud af det. :)
Så skal jeg bare vide hvordan man "Printer" det ud fra databasen? :)
Avatar billede jakobdo Ekspert
15. oktober 2005 - 09:50 #22
Du kan lave det på siden med din form på.
Så alt evt står under eller over.

Du kan ihf bruge denne kode:

<?php
include("connect.php");
$query = mysql_query("SELECT * FROM opslagstavle ORDER BY id");
if(mysql_num_rows($query)>0)
{
while($row = mysql_fetch_assoc($query))
{
echo $row["navn"] . " - " . $row["email"] . " - " . $row["alder"] . "<hr>";
echo $row["besked"] . "<hr>";
}
}
else
{
echo "Ingen opslag...";
}
?>

Du skal no overveje at gemme emailen, så den ikke er offentlig tilgængelig! (så bliver dine brugere bare misbrugt til spam)

Vi kan evt også overveje at tilføje et datetime felt i din tabel, så kan du se hvornår et opslag er lavet.
Avatar billede raan Nybegynder
15. oktober 2005 - 13:32 #23
Virker fint.
Hvordan gemmer jeg så emailen?
Kan man ikke også godt smække en ip på, så man kan ban' en hvis det er? . :)
Avatar billede jakobdo Ekspert
15. oktober 2005 - 13:45 #24
Ip og tid = jep! :o)

Så retter du scriptet:

<?php
include("connect.php");
$navn = mysql_escape_string($_POST["navn"]);
$email = mysql_escape_string($_POST["email"]);
$alder = mysql_escape_string($_POST["alder"]);
$besked = mysql_escape_string($_POST["besked"]);
mysql_query("INSERT INTO opslagstavle(id,navn,email,alder,besked) VALUES ('','".$navn."','".$email."',".$alder.",'".$besked."')") or die("Invalid query: " . mysql_error());
header("location: " . $_SERVER["HTTP_REFERER"]);
?>

til:

<?php
include("connect.php");
$navn = mysql_escape_string($_POST["navn"]);
$email = mysql_escape_string($_POST["email"]);
$alder = mysql_escape_string($_POST["alder"]);
$besked = mysql_escape_string($_POST["besked"]);
mysql_query("INSERT INTO opslagstavle(id,navn,email,alder,besked, datotid, ip) VALUES ('','".$navn."','".$email."',".$alder.",'".$besked."',NOW(),inet_aton($_SERVER["REMOTE_ADDR"]))") or die("Invalid query: " . mysql_error());
header("location: " . $_SERVER["HTTP_REFERER"]);
?>

Husk at tilføj felterne:
datotid - datotime
ip - bigint

Når du så trækker ip ud, skal du bruge:

inet_ntoa(ip) AS nyIp og så bruge: echo $row["nyIp"];
Avatar billede raan Nybegynder
15. oktober 2005 - 14:16 #25
Når jeg insætter den nye scriptet går den bare i stå.

Du kan selv se på http://www.randersen.dk/privat/test/opslag.htm


action.php ser sådan ud:

<?php
include("connect.php");
$navn = mysql_escape_string($_POST["navn"]);
$email = mysql_escape_string($_POST["email"]);
$alder = mysql_escape_string($_POST["alder"]);
$besked = mysql_escape_string($_POST["besked"]);
mysql_query("INSERT INTO opslagstavle(id,navn,email,alder,besked, datotid, ip) VALUES ('','".$navn."','".$email."',".$alder.",'".$besked."',NOW(),inet_aton($_SERVER["REMOTE_ADDR"]))") or die("Invalid query: " . mysql_error());
header("location: " . $_SERVER["HTTP_REFERER"]);
?>
Avatar billede jakobdo Ekspert
16. oktober 2005 - 13:20 #26
Prøv at slet header...
Og skriv: echo "Indsættelsen gik godt";
Avatar billede raan Nybegynder
16. oktober 2005 - 16:07 #27
den går stadig kold.
Avatar billede jakobdo Ekspert
16. oktober 2005 - 16:11 #28
Tilføj lige:

echo "<pre>";
print_r($_POST);
echo "</pre>";
exit();
under <?php
i din action.php fil.
Avatar billede raan Nybegynder
16. oktober 2005 - 16:32 #29
Er sket.
men den står bare stadig stille. :S
Avatar billede jakobdo Ekspert
16. oktober 2005 - 16:35 #30
Det "Lugter" af en eller anden fejl på siden action.php
Kan du vise mig koden på siden?
Det skal være den kode som ligger på: http://www.randersen.dk/privat/test/action.php
Avatar billede raan Nybegynder
16. oktober 2005 - 16:36 #31
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
exit();
include("connect.php");
$navn = mysql_escape_string($_POST["navn"]);
$email = mysql_escape_string($_POST["email"]);
$alder = mysql_escape_string($_POST["alder"]);
$besked = mysql_escape_string($_POST["besked"]);
mysql_query("INSERT INTO opslagstavle(id,navn,email,alder,besked, datotid, ip) VALUES ('','".$navn."','".$email."',".$alder.",'".$besked."',NOW(),inet_aton($_SERVER["REMOTE_ADDR"]))") or die("Invalid query: " . mysql_error());
echo "Indsættelsen gik godt";
?>
Avatar billede jakobdo Ekspert
16. oktober 2005 - 16:38 #32
Må jeg prøve at se din kode du bruger på siden: http://www.randersen.dk/privat/test/opslag.htm
Avatar billede raan Nybegynder
16. oktober 2005 - 16:40 #33
<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<Dette er sat sammen af Rasmus Andersen.>
<title>Bornholm</title>
</head>

<form action="action.php" method="post">
<body>
<input type="text" name="navn" size="20"> <br>
  <br>
 
  <input type="text" name="email" size="20"><br>

  <br>

  <input type="text" name="alder" size="20"><br>

  <br>

  <textarea name="besked" rows="1" cols="20"></textarea>

  <br>

<input type="submit" value="Send">
</body>

</html>
Avatar billede jakobdo Ekspert
16. oktober 2005 - 16:46 #34
Det forstår jeg godt nok ikke!
Prøv lige at fang mig på msn: jakobdo (at) hot-FJERN-mail (dot) com
Avatar billede jakobdo Ekspert
16. oktober 2005 - 18:06 #35
Et svar!
Avatar billede jakobdo Ekspert
16. oktober 2005 - 18:21 #36
takker for point!
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