Avatar billede hobbittend Novice
13. april 2008 - 19:25 Der er 16 kommentarer og
2 løsninger

Rækkefølge på actions

Jeg har et lille problem med den her gæstebog/kommentar funktion.

Når man trykker på "skriv kommentar" så brokker den sig allerede over at man ikke har udfyltet feltet "navn"...

Det bør den jo først gøre når man har trykket ok.

Nogen der kan hjælpe?


Site: http://hobbit.freehostia.com

Kode:

<a href="index.php?valg=skriv">Skriv en kommentar</a> - <a href="index.php?valg=kig">Kig i gæstebogen</a><br><br>

<?php // PHP starter.
if($_GET[valg] == "skriv") {
?>


<form action="index.php?valg=skriv" method="POST">
<b>Navn:</b> <br>
<input type="text" name="navn" size="20" />
<br>
<b>Kommentar:</b><br>
<textarea name="besked" rows="7" cols="24"></textarea><br>
<input type="submit" value="Komment&eacute;r">
</form>

<?php
}
if($_GET[valg] == "skriv") {


if($_POST[navn] == "") {
echo("Du skal udfylde feltet <b>Navn</b>");
} else { //

if($_POST[besked] == "") {
echo("Du skal skrive en kommentar ");
} else { //

$dato = date('d/m/Y H:i:s');
$ip = $_SERVER[REMOTE_ADDR];
$navn = htmlspecialchars($_POST[navn]); //
$besked = htmlspecialchars($_POST[besked]); //

if(!get_magic_quotes_gpc()) { // Vi laver en sikkerheds foranstaltning. Den vil jeg ikke til at fortælle om, hvis du er interesseret i at vide hvad den gør kan du søge på php.net
$navn = addslashes($navn);
$besked = addslashes($besked);
}

include("db_connection.php"); // Vi inkludere php filen db_connection.php i vores fil, den sørge for der er forbindelse til databasen.
mysql_query("INSERT INTO gaestbog (dato, ip, navn, besked) VALUES ('$dato', '$ip', '$navn', '$besked')") or die(mysql_error()); // Vi sætter alle brugerens POSTER ind i databasen.
echo("Tak for din kommentar!");
}
}
} // Vi afslutter alle vores '{' med '}'

if($_GET[valg] == "kig") {

include("db_connection.php");
$hent = mysql_query("SELECT * FROM gaestbog ORDER BY id DESC") or die(mysql_error()); // vi henter dataene fra databasen
if(mysql_num_rows($hent)) { // tester om der er noget i databasen.
while($vis = mysql_fetch_array($hent)) { // vi bruger while til at sørge for at den henter ALLE dataene ud fra databasen, vi gemmer alle dataene i virablen $vis
?>
<table border="0" width="100%">
<tr>
<td>
<table border="0" width="100%">
<tr>
<td><b><? echo $vis[navn]; ?></b> Skriver den. <i><? echo $vis[dato]; ?></i> :</td>
</tr>
<tr>
<td><? echo nl2br($vis[besked]); ?></td>
</tr>
</table>
</td>
</tr>
</table>
<hr style="border: 1px dotted #000080" color="#000080">
<?
}
} else {
echo("Der blev intet fundet i databasen.");
}
}
?>
Avatar billede w13 Novice
13. april 2008 - 19:33 #1
Du skal vel rette:

<form action="index.php?valg=skriv" method="POST">

til:

<form action="index.php?valg=gem" method="POST">

og:

if($_GET[valg] == "skriv") {


if($_POST[navn] == "") {

til:

if($_GET[valg] == "gem") {


if($_POST[navn] == "") {
Avatar billede hobbittend Novice
14. april 2008 - 10:23 #2
Neej, nu siger den slet ikke noget når man trykker
Avatar billede w13 Novice
14. april 2008 - 10:31 #3
Ok, så ret tilbage, men ret så:

if($_GET[valg] == "skriv") {


if($_POST[navn] == "") {

til:

if($_GET[valg] == "skriv" && $_POST[save] != "") {


if($_POST[navn] == "") {

Og så ret:

<input type="submit" value="Komment&eacute;r">

til:

<input type="submit" name="save" value="Komment&eacute;r">
Avatar billede hobbittend Novice
14. april 2008 - 11:06 #4
Desværre... Heller ikke..
Avatar billede w13 Novice
14. april 2008 - 11:12 #5
Hvad sker der da?
Avatar billede hobbittend Novice
14. april 2008 - 11:45 #6
Det samme som før. Ikke noget...Den ryder bare felterne..
Avatar billede dkfire Nybegynder
14. april 2008 - 12:38 #7
Vis din kode, så kan det være vi kan finde fejlen.
Avatar billede dkfire Nybegynder
14. april 2008 - 12:38 #8
Altså din rettede kode.
Avatar billede hobbittend Novice
14. april 2008 - 12:48 #9
<a href="index.php?valg=skriv">Skriv en kommentar</a> - <a href="index.php?valg=kig">Kig i gæstebogen</a><br><br>

<?php // PHP starter.
if($_GET[valg] == "skriv") { // Vi tester med if om brugeren har trykket på 'skriv i gæstebogen' hvis brugeren ikke har det viser den ikke.
// afslutter PHP, nu kan vi skrive html igen
?>

<!--
Her laver vi en html form, hvor action er = index.php?valg=skrivok
Når brugeren har trykket på submit knappen går den til index.php?valg=skrivok
Og vi laver sådan at når brugeren trykker kommer den hen til en $_GET ligesom ovenover.
-->
<form action="index.php?valg="skriv" method="POST">
<b>Navn:</b> <br>
<input type="text" name="navn" size="20" />
<br>
<b>Kommentar:</b><br>
<textarea name="besked" rows="7" cols="24"></textarea><br>
<input type="submit" name="save" value="Komment&eacute;r">
</form>

<?php
}
if($_GET[valg] == "skriv" && $_POST[save] != "") {


if($_POST[navn] == "") {
echo("Du skal udfylde feltet <b>Navn</b>");
} else { //

if($_POST[besked] == "") {
echo("Du skal skrive en kommentar ");
} else { //

$dato = date('d/m/Y H:i:s');
$ip = $_SERVER[REMOTE_ADDR];
$navn = htmlspecialchars($_POST[navn]); //
$besked = htmlspecialchars($_POST[besked]); //

if(!get_magic_quotes_gpc()) { // Vi laver en sikkerheds foranstaltning. Den vil jeg ikke til at fortælle om, hvis du er interesseret i at vide hvad den gør kan du søge på php.net
$navn = addslashes($navn);
$besked = addslashes($besked);
}

include("db_connection.php"); // Vi inkludere php filen db_connection.php i vores fil, den sørge for der er forbindelse til databasen.
mysql_query("INSERT INTO gaestbog (dato, ip, navn, besked) VALUES ('$dato', '$ip', '$navn', '$besked')") or die(mysql_error()); // Vi sætter alle brugerens POSTER ind i databasen.
echo("Tak for din kommentar!");
}
}
} // Vi afslutter alle vores '{' med '}'

if($_GET[valg] == "kig") {

include("db_connection.php");
$hent = mysql_query("SELECT * FROM gaestbog ORDER BY id DESC") or die(mysql_error()); // vi henter dataene fra databasen
if(mysql_num_rows($hent)) { // tester om der er noget i databasen.
while($vis = mysql_fetch_array($hent)) { // vi bruger while til at sørge for at den henter ALLE dataene ud fra databasen, vi gemmer alle dataene i virablen $vis
?>
<table border="0" width="100%">
<tr>
<td>
<table border="0" width="100%">
<tr>
<td><b><? echo $vis[navn]; ?></b> Skriver den. <i><? echo $vis[dato]; ?></i> :</td>
</tr>
<tr>
<td><? echo nl2br($vis[besked]); ?></td>
</tr>
</table>
</td>
</tr>
</table>
<hr style="border: 1px dotted #000080" color="#000080">
<?
}
} else {
echo("Der blev intet fundet i databasen.");
}
}
?>
Avatar billede dkfire Nybegynder
14. april 2008 - 13:09 #10
Ret:
if($_GET[valg] == "skriv" && $_POST[save] != "") {
til:
if($_GET['valg'] == "skriv" && isset($_POST['submit']) ) {
Avatar billede hobbittend Novice
14. april 2008 - 13:48 #11
Det ændrer ummidelbart ikke på noget..
Avatar billede w13 Novice
14. april 2008 - 14:45 #12
dkfire>> Submitten hedder jo save og ikke submit (da "submit" ikke er en gyldig "name"-værdi):

<input type="submit" name="save" value="Komment&eacute;r">
Avatar billede dkfire Nybegynder
14. april 2008 - 15:52 #13
så da
if($_GET['valg'] == "skriv" && isset($_POST['save']) ) {

Mente bare at submit også bliver sat, selv om det ikke er noget navn.
Avatar billede dkfire Nybegynder
14. april 2008 - 15:54 #14
Ja og vi har vist overset en meget stor fejl.
Ret:
<form action="index.php?valg="skriv" method="POST">
til:
<form action="index.php?valg=skriv" method="POST">
Avatar billede w13 Novice
14. april 2008 - 16:19 #15
Ups, ja. =S
Avatar billede hobbittend Novice
16. april 2008 - 13:35 #16
Arh hvor godt :) Nu virker det sgu :)
Tak for hjælpen alle 3 :)

Hvem vil have pointene? :)
Avatar billede w13 Novice
16. april 2008 - 13:36 #17
Vi kan vel dele, går jeg ud fra?
Avatar billede hobbittend Novice
16. april 2008 - 21:31 #18
og hvordan er det lige at jeg giver 10 til hver :P ?
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