Avatar billede hewa Nybegynder
11. februar 2007 - 12:51 Der er 34 kommentarer og
2 løsninger

Validering af felter

Hej.

Hvis jeg har en form, med en submit knap, og når der bliver trykket på den, skal den lige tjekke, om der er noget i tre felter. Det skal bare være helt enklt, at uanset om et, to eller tre felter er tomme, skal dem melde ud og sige, "Du mangler at udfylde et felt!"

Hvis der er noget i alle felter, sendes man videre til en anden side.

Vil det ikke være at fortrække at lave i php fremfor javascript?
Og hvordan gør jeg det?
Avatar billede mccookie Seniormester
11. februar 2007 - 13:39 #1
Jeg ville bruge php og det er af princip, her er det mig der suverænt bestemmer! Så slipper jeg for at skulle tage stilling til om brugeren har deaktiveret javascript mv.

function check_form() {
if(!isset($_REQUEST['felt1'] return false;
if(!isset($_REQUEST['felt2] return false;
if(!isset($_REQUEST['felt3] return false;
else return true;
}

if(!check_form() == true) { echo "Du har desværre ikke udfyldt alle felterne"; }
Avatar billede hewa Nybegynder
11. februar 2007 - 13:56 #2
Tak for dit kode mccookie. Det er lige sådan en enkel ting jeg har brug for, men jeg kan ikke få den til at virke... er den sat forkert ind?

function check_form() {
if(!isset($_REQUEST['lsoverskrift'] return false;
if(!isset($_REQUEST['lovestory'] return false;
if(!isset($_REQUEST['lsalias'] return false;
else return true;
}

if(!check_form() == true) { echo "Du har desværre ikke udfyldt alle felterne"; }

$_SESSION['lsoverskrift'] = stripslashes(htmlentities($_POST['lsoverskrift']));
$_SESSION['lovestory'] = stripslashes(htmlentities($_POST['lovestory']));
$_SESSION['lsalias'] = stripslashes(htmlentities($_POST['lsalias']));

        echo "<meta http-equiv='Refresh' content='0;url=?mode=se_historie'>";

}

echo "<h3>Fortæl din historie</h3><br><br>
<form action='' method='POST'>
<b>Overskrift:</b><br>
<input type='text' name='lsoverskrift' size='68'><br><br>
<b>Din historie:</b><br>
<textarea name='lovestory' style='width: 100%;' rows='22'></textarea><br><br>
<b>Dit navn eller et alias:</b><br>
<input type='text' name='lsalias' size='40'><br><br>
<input type='submit' value='Vis historie' name='opret'>
</form>";
}
Avatar billede hewa Nybegynder
11. februar 2007 - 13:56 #3
Hov, hen over det hele ligger dennne:
if(isset($_POST['opret'])) {
Avatar billede hewa Nybegynder
11. februar 2007 - 13:59 #4
Den får resten af siden til at stoppe - selvom det vist ikke lige er de rigtige variabler, der bliver brugt, det skal være med $_post foran.
Avatar billede hewa Nybegynder
11. februar 2007 - 14:09 #5
der var glemt "))" i de tre sætninger, så nu kan siden ses, men den virker alligevel ikke...

Jeg har også prøvet med:
if(!isset($_REQUEST['".$_POST['lsoverskrift']."')) return false; - det får også siden til at dø. Nogen bud?
Avatar billede mccookie Seniormester
11. februar 2007 - 14:15 #6
Du skal lige slette det der else..... det var en fejl!
Avatar billede mccookie Seniormester
11. februar 2007 - 14:16 #7
SJUSK.... McCookie

function check_form() {
if(!isset($_REQUEST['felt1'])) return false;
if(!isset($_REQUEST['felt2'])) return false;
if(!isset($_REQUEST['felt3'])) return false;
return true;
}

if(!check_form() == true)) { echo "Du har desværre ikke udfyldt alle felterne"; }
Avatar billede hewa Nybegynder
11. februar 2007 - 14:18 #8
Sådan har jeg også rettet den til, men det virker ikke. skal felt1 ikke erstattes af feltnavnet?
Avatar billede hewa Nybegynder
11. februar 2007 - 14:19 #9
Og har jeg ikke lagt den det rigtige sted?
Avatar billede mccookie Seniormester
11. februar 2007 - 14:20 #10
Jow.... kan du smide den html kode med din formular? Bare lige for at se den....
Avatar billede mccookie Seniormester
11. februar 2007 - 14:21 #11
Hov var lidt for hurtigt.... ser lige dit tidligere paste
Avatar billede hewa Nybegynder
11. februar 2007 - 14:22 #12
Sådan ser den helt nøjagtigt ud nu:

if(isset($_POST['opret'])) {

function check_form() {
if(!isset($_REQUEST['lsoverskrift'])) return false;
if(!isset($_REQUEST['lovestory'])) return false;
if(!isset($_REQUEST['lsalias'])) return false;
return true;
}

if(!check_form() == true) { echo "Du har desværre ikke udfyldt alle felterne"; }

$_SESSION['lsoverskrift'] = stripslashes(htmlentities($_POST['lsoverskrift']));
$_SESSION['lovestory'] = stripslashes(htmlentities($_POST['lovestory']));
$_SESSION['lsalias'] = stripslashes(htmlentities($_POST['lsalias']));

        echo "<meta http-equiv='Refresh' content='0;url=?mode=se_historie'>";

}

echo "<h3>Fortæl din historie</h3><br><br>
<form action='' method='POST'>
<b>Overskrift:</b><br>
<input type='text' name='lsoverskrift' size='68'><br><br>
<b>Din historie:</b><br>
<textarea name='lovestory' style='width: 100%;' rows='22'></textarea><br><br>
<b>Dit navn eller et alias:</b><br>
<input type='text' name='lsalias' size='40'><br><br>
<input type='submit' value='Vis historie' name='opret'>
</form>";
Avatar billede mccookie Seniormester
11. februar 2007 - 14:22 #13
Har du sat en action på dit script??

<?php echo $_SERVER['PHP_SELF']; ?>

Så kalder den sig selv ;)
Avatar billede mccookie Seniormester
11. februar 2007 - 14:22 #14
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='POST'>
Avatar billede hewa Nybegynder
11. februar 2007 - 14:24 #15
Nej det har jeg ikke, men det er vel heller ikke nødvendigt?
- det har jeg aldrig gjort før, når det kører på samme side :)
Avatar billede mccookie Seniormester
11. februar 2007 - 14:25 #16
Prøv lige....engang..... det andet er lidt banditstreg....
Avatar billede hewa Nybegynder
11. februar 2007 - 14:28 #17
Jeg har lige prøvet, men så dur den slet ikke, da der er flere if-sætnigner, hvis sådan i adresselinjen, så vises der noget i det område og hvis sådan, så vises der noget andet. Forstår du hvad jeg mener?
Avatar billede hewa Nybegynder
11. februar 2007 - 14:31 #18
Jeg har lige prøvet at lave hele stien i action, men det resulterer i, der stadig drøner videre i koden og overser fuldstændig den kode jeg fik fra dig.
Men har jeg lagt koden rigtigt og erstattet felt1, felt2 og felt3 af det rigtige??
Avatar billede mccookie Seniormester
11. februar 2007 - 14:32 #19
Virker:


<?php

if(isset($_POST['opret'])) {

function check_form() {
if(!isset($_REQUEST['lsoverskrift'])) return false;
if(!isset($_REQUEST['lovestory'])) return false;
if(!isset($_REQUEST['lsalias'])) return false;
return true;
}

if(!check_form() == true) { echo "Du har desværre ikke udfyldt alle felterne"; } else { echo "OK"; }

$_SESSION['lsoverskrift'] = stripslashes(htmlentities($_POST['lsoverskrift']));
$_SESSION['lovestory'] = stripslashes(htmlentities($_POST['lovestory']));
$_SESSION['lsalias'] = stripslashes(htmlentities($_POST['lsalias']));

      echo "<meta http-equiv='Refresh' content='0;url=?mode=se_historie'>";

}

echo "<h3>Fortæl din historie</h3><br><br>
<form action='" . $_SERVER['PHP_SELF'] . "' method='POST'>
<input type=\"hidden\" name=\"opret\" value=\"VAERDI\">
<b>Overskrift:</b><br>
<input type='text' name='lsoverskrift' size='68'><br><br>
<b>Din historie:</b><br>
<textarea name='lovestory' style='width: 100%;' rows='22'></textarea><br><br>
<b>Dit navn eller et alias:</b><br>
<input type='text' name='lsalias' size='40'><br><br>
<input type='submit' value='Vis historie'>
</form>";

?>

Se her: www.pcproblemer.dk/exp761871
Avatar billede mccookie Seniormester
11. februar 2007 - 14:33 #20
Du bør altid fortælle din form hvilket script den skal kalde ;)
Avatar billede hewa Nybegynder
11. februar 2007 - 14:36 #21
Den virker da ikke :)
Prøv at trykke på knappen UDEN der er noget i felterne, så skal den melde ud, du har ikke udfyldt alle felteren - det gør den ikke, den siger ok og viser formen igen :))
Avatar billede mccookie Seniormester
11. februar 2007 - 14:38 #22
er lige igang med at finde fejlen.... ;)
Avatar billede mccookie Seniormester
11. februar 2007 - 14:41 #23
Prøv denne:

<?php

session_start();

function check_form() {
if(empty($_REQUEST['lsoverskrift'])) return false;
elseif(empty($_REQUEST['lovestory'])) return false;
elseif(empty($_REQUEST['lsalias'])) return false;
else return true;
}



if(isset($_POST['opret'])) {

if(!check_form() == true) { echo "Du har desværre ikke udfyldt alle felterne"; } else { echo "OK"; }

$_SESSION['lsoverskrift'] = stripslashes(htmlentities($_POST['lsoverskrift']));
$_SESSION['lovestory'] = stripslashes(htmlentities($_POST['lovestory']));
$_SESSION['lsalias'] = stripslashes(htmlentities($_POST['lsalias']));

  //    echo "<meta http-equiv='Refresh' content='0;url=?mode=se_historie'>";

}

echo "<h3>Fortæl din historie</h3><br><br>
<form action='" . $_SERVER['PHP_SELF'] . "' method='POST'>
<input type=\"hidden\" name=\"opret\" value=\"VAERDI\">
<b>Overskrift:</b><br>
<input type='text' name='lsoverskrift' size='68'><br><br>
<b>Din historie:</b><br>
<textarea name='lovestory' style='width: 100%;' rows='22'></textarea><br><br>
<b>Dit navn eller et alias:</b><br>
<input type='text' name='lsalias' size='40'><br><br>
<input type='submit' value='Vis historie'>
</form>";

?>
Avatar billede mccookie Seniormester
11. februar 2007 - 14:45 #24
Har testet den i IE og FF og den virker perfekt ;)
Avatar billede mccookie Seniormester
11. februar 2007 - 14:47 #25
Løsning kan testes her: www.pcproblemer.dk/exp761871/
Avatar billede hewa Nybegynder
11. februar 2007 - 14:54 #26
Ja, det virker... men det der er skrevet i felterne forsvinder - det ville være ret uheldigt, hvis man bare mangler at skrive et alias på og en laaaang historie så er væk :)
Avatar billede hewa Nybegynder
11. februar 2007 - 14:55 #27
Kan jeg ikke lave et mix af din $_REQUEST og den session der bliver lavet, så felterne bliver udfyldt igen?
Avatar billede mccookie Seniormester
11. februar 2007 - 15:00 #28
Jowda......

Gi' mig lige et øjeblik....
Avatar billede hewa Nybegynder
11. februar 2007 - 15:02 #29
Ellers har jeg lavet en redigeringsside, jeg vel kan sende folk videre til... der skal din kode jo også på for at tjekke det igen, inden de gemmer det.
Avatar billede mccookie Seniormester
11. februar 2007 - 15:11 #30
Prøv at kigge nu... virker på den første
Avatar billede hewa Nybegynder
11. februar 2007 - 15:17 #31
Det gør det sga da vist osse :)))
Avatar billede mccookie Seniormester
11. februar 2007 - 15:29 #32
www.pcproblemer.dk/exp761871/

Så er den iorden ;)

<?php
session_start();

function check_form1() {
if(empty($_REQUEST['lsoverskrift'])) return false;
$_SESSION['lsoverskrift'] = stripslashes(htmlentities($_POST['lsoverskrift']));
return true;
}

function check_form2() {
if(empty($_REQUEST['lovestory'])) return false;
$_SESSION['lovestory'] = stripslashes(htmlentities($_POST['lovestory']));
return true;
}

function check_form3() {
if(empty($_REQUEST['lsalias'])) return false;
$_SESSION['lsalias'] = stripslashes(htmlentities($_POST['lsalias']));
return true;
}



if(isset($_POST['opret'])) {

if(!check_form1() == true) { echo "Mangler værdi 1"; } else { echo "OK"; }
if(!check_form2() == true) { echo "Mangler værdi 2"; } else { echo "OK"; }
if(!check_form3() == true) { echo "Mangler værdi 3"; } else { echo "OK"; }

  echo "<meta http-equiv='Refresh' content='3;url=?mode=se_historie'>";

}

echo "<h3>Fortæl din historie</h3><br><br>";
echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='POST'>";
echo "<input type=\"hidden\" name=\"opret\" value=\"VAERDI\">";
echo "<b>Overskrift:</b><br>";
echo "<input type='text' name='lsoverskrift' size='68'";
if(isset($_SESSION['lsoverskrift'])) { echo "value=\"" . $_SESSION['lsoverskrift'] . "\""; }
echo "><br><br>";
echo "<b>Din historie:</b><br>";
echo "<textarea name='lovestory' style='width: 100%;' rows='22'>";
if(isset($_SESSION['lovestory'])) { echo $_SESSION['lovestory']; }
echo "</textarea><br><br>";
echo "<b>Dit navn eller et alias:</b><br>";
echo "<input type='text' name='lsalias' size='40'";
if(isset($_SESSION['lsalias'])) { echo "value=\"" . $_SESSION['lsalias'] . "\""; }
echo "><br><br>";
echo "<input type='submit' value='Vis historie'>";
echo "</form>";

/* Kildekoden er: */

?> <a href="http://www.eksperten.dk/spm/761871">Se dialogen fra spørgsmålet på Eksperten.dk</a> <br /> <br />

<?php
highlight_file($_SERVER['DOCUMENT_ROOT'] . "/exp761871/index.php");

?>
Avatar billede hewa Nybegynder
11. februar 2007 - 15:31 #33
Kanon, kanon, kanon!! 1000 tak for hjælpen!! ;-)
Avatar billede mccookie Seniormester
11. februar 2007 - 15:37 #34
Velbekommen ;)
Avatar billede mccookie Seniormester
11. februar 2007 - 15:39 #35
Og karma tak skal du have ;) og god eftermiddag...
Avatar billede hewa Nybegynder
11. februar 2007 - 15:46 #36
Ja, og karma blev det også til :)
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