Avatar billede webweaver Praktikant
15. juli 2005 - 19:51 Der er 15 kommentarer og
1 løsning

Validering af form

Hejsa..

Jeg har en form som jeg gerne vil lave noget validering på. Altså dvs. den skal tjekke fx om felterne er tomme og et kodeord er rigtigt. Men jeg kan desværre ikke selv bikse noget sammen som virker ordentligt :'( Så jeg håbede at du kunne! :)

Her kan du se mit script, som det er fra start af:

http://pastebin.com/314037

Og her kan du se det, som jeg har prøvet at lave det med validering på:

http://pastebin.com/314041

Men det virker nu ikke ordentlig! Fejlene er der fra start af, fordi felterne jo er tomme fra start af.?

Håber du kan hjælpe mig. Tak for din hjælp! :)
Avatar billede sukos Juniormester
15. juli 2005 - 21:33 #1
if(empty(trim($_POST["formnavn"])) {
echo"Ikke udfyldt!";
}

Så kan du jo lave et array med fejl, så hvis et felt er tomt, så lægges der en til array'et, så hvis array'et ikke er 0, jamen så er det ikke godt! :O)

Men er det 0, så tjek om $dinvar == $_POST["varnavn"] og er det tilfældet, jamen så kører det jo! ;O)
Avatar billede tfswebguy Nybegynder
16. juli 2005 - 00:20 #2
if(!$_POST['navn']){
$fejl = "intet navn";
}
if(!$_POST['pass']){
$fejl = "$fejl<br>intet pass";
}
if($_POST['pass'] != $_POST['pass1']){
$fejl = "$fejl<br>De to pass er ikke ens";
}
if(!$fejl){
mysql_query...
}else{
print "$fejl";
}
Avatar billede webweaver Praktikant
16. juli 2005 - 01:04 #3
Tak for svarene.. :) Jeg kigger lige på det, og vender tilbage :) ...
Avatar billede webweaver Praktikant
16. juli 2005 - 12:41 #4
Hej tfswebguy.

Jeg har brugt dit eksempel og tilpasset det til mig selv, og det virker også fint nok. Men der er stadig et problem, som jeg har haft hele tiden. Den udfører if sætningen med det samme, altså lige så snart man loader siden, og på det tidspunkt har man jo ikke udfyldt felterne endnu, så den starter med fejl-beskeder til at starte med. Hvordan kan jeg undgå det? Mange tak :) Altså if sætningen skal jo først "aktiveres" når der er klikket submit. Men altså det virker ikke når man laver en if sætning hvor submit er sat til TRUE eller FALSE...

I kan se eksempel af problemet her:

http://www.webweaver.dk/opretlink.php

Og I kan se scriptet her:

http://pastebin.com/314407

Mange tak for hjælpen :)

Med venlig hilsen Lasse Jensen
Avatar billede mysli Nybegynder
16. juli 2005 - 13:44 #5
Lav en hidden input med vlaue true og indsæt så valideringen i

if (isset($_POST['hiddenvalue'])){
//Validering
}
Avatar billede tfswebguy Nybegynder
16. juli 2005 - 15:52 #6
<?
if($_POST['doopret']){
den jeg smed
}
?>
<form method='post'>
...
<input type='submit' name='doopret' value='Opret'>
</form>
Avatar billede webweaver Praktikant
16. juli 2005 - 21:41 #7
Hej igen :D

Hehe, jaah.. Det går da fremad langsomt ;) Men altså nu burde jeg have fået kodet noget som jeg mener virker, via af Jeres hjælp. Men nu hvor jeg så har kodet det, så får jeg en fejl på scriptet. Jeg kan ikke selv få øje på hvor fejlen ligger. Desværre.

Fejlen:

Parse error: parse error, unexpected $ in /hsphere/local/home/webster/webweaver.dk/opretlink.php on line 212

I linie 212 står der: </html>, så det er self. ikke der fejlen ligger :P Det er et sted i scriptet..

Her har i den nyeste udgave af scriptet:

http://pastebin.com/314575

Mange tak for hjælpen igen :D

Mvh. Lasse Jensen
Avatar billede mysli Nybegynder
17. juli 2005 - 02:46 #8
Den fejl betyder somregel der er en tuborgklamme som mangler en partner.

Og det kan jeg, hvis mine trætte øjne fortæller sandheden, se at der gør i linie 30. Som hører til den allerførste if i linie 6
Avatar billede webweaver Praktikant
17. juli 2005 - 10:55 #9
Nej jeg tror desværre det er dine øjne som er trætte ;) Fordi den mangler ikke nogen partner den første if sætning. Jeg slutter den bare længere nede end linie 30.

Gør det nogen forskel?
Avatar billede webweaver Praktikant
17. juli 2005 - 10:59 #10
Jeg kan se det ikke nogen forskel gør.. Har lige prøvet at flytte den op.

Så fejlen må ligge et andet sted. Men hvor mon? Hmm..
Avatar billede nielle Nybegynder
17. juli 2005 - 11:27 #11
Hvis det du har postet er al din kode så mangler du en afsaluttende tuborg et eller andet sted. Du kan selv se at den afsluttende '}' ikke er helt tilbage i niveau 0:

<?               
$password = *********;
$showform = TRUE;

if (isset($_POST['opret']))
{
    if (!$_POST['kodeord'])
    {
        $fejl = "Du mangler at udfylde kodeord.";
    }

    if (!$_POST['linket'])
    {
        $fejl = "$fejl<br>Du mangler at udfylde link.";
        $showform = TRUE;
    }

    if (!$_POST['link_navn'])
    {
        $fejl = "$fejl<br>Du mangler at udfylde link navnet.";
        $showform = TRUE;
    }

    if (!$_POST['beskrivelse'])
    {
        $fejl = "$fejl<br>Du mangler at udfylde beskrivelse.";
        $showform = TRUE;
    }

    if ($_POST['kodeord'])
    {
        if ($_POST['kodeord'] != $password)
        {
            $fejl = "$fejl<br>Kodeordet er forkert.";
            $showform = TRUE;
        }
    }
               
    if (!$fejl)
    {
        $db = mysql_connect("***********", "************", "**********") or die(mysql_error());
        mysql_select_db("***********", $db) or die(mysql_error());
       
        $maaned = date("F");
        $maaned = str_replace("January", "Januar", $maaned);
        $maaned = str_replace("February", "Februar", $maaned);
        $maaned = str_replace("March", "Marts", $maaned);
        $maaned = str_replace("April", "April", $maaned);
        $maaned = str_replace("May", "Maj", $maaned);
        $maaned = str_replace("June", "Juni", $maaned);
        $maaned = str_replace("July", "Juli", $maaned);
        $maaned = str_replace("August", "August", $maaned);
        $maaned = str_replace("September", "September", $maaned);
        $maaned = str_replace("October", "Oktober", $maaned);
        $maaned = str_replace("November", "November", $maaned);
        $maaned = str_replace("December", "December", $maaned);
       
        $ip = $_SERVER["REMOTE_ADDR"];
        $time = time();
        $dato = $dato = strftime( "%d. $maaned - %Y" );
        $tid = date("H:i:s");
        $sti = $_SERVER["PHP_SELF"];
        $link = "http://$linket";

        $beskrivelse = nl2br(htmlentities($_POST["beskrivelse"]));
         
        if (!get_magic_quotes_gpc())
        {
            $beskrivelse = addslashes($beskrivelse);
        }
       
        mysql_query("INSERT INTO links (kategori, link, link_navn, beskrivelse, dato, ip, time, tid) VALUES ('$kategori', '$link', '$link_navn', '$beskrivelse', '$dato', '$ip', '$time', '$tid')") or die(mysql_error());
        echo "<p class=\"text-style\" align=\"center\">Hej Lasse, linket er nu blevet tilføjet til oversigten...</p>";
        echo "<br>";
        echo "<p class=\"text-style\" align=\"center\"><a class=\"text-style\" href=\"http://www.webweaver.dk/opretlink.php\">Tilføj link</a> | <a class=\"text-style\" href=\"http://www.webweaver.dk/links.php\">Link oversigt</a></p>";
        $showform = FALSE;
    }

    if ($showform)
    {
        print "$fejl";
?>

<div align="center">
<table>
<tr>
    <td class="formular" align="left">
        <form method=post action=<?php echo $_SERVER['PHP_SELF'];?>>
        <input type="hidden" name="opret" value="1">
        Kodeord:<br>
        <input type="password" name="kodeord" size="30" value="<? echo $_POST[kodeord] ?>"><br>
        Link: (Uden http://)<br>
        <input type="text" name="linket" size="30" value="<? echo $_POST[linket] ?>"><br>
        Link navn:<br>
        <input type="text" name="link_navn" size="30" value="<? echo $_POST[link_navn] ?>"><br>
        Kategori:<br>
        <select name="kategori" size="1">
        <option <? if ($_POST[kategori]=="HTML/XHTML") { echo "SELECTED"; } ?>>HTML/XHTML</option>
        <option <? if ($_POST[kategori]=="CSS") { echo "SELECTED"; } ?>>CSS</option>
        <option <? if ($_POST[kategori]=="PHP") { echo "SELECTED"; } ?>>PHP</option>
        <option <? if ($_POST[kategori]=="ASP") { echo "SELECTED"; } ?>>ASP</option>
        <option <? if ($_POST[kategori]=="SSI") { echo "SELECTED"; } ?>>SSI</option> 
        <option <? if ($_POST[kategori]=="SQL") { echo "SELECTED"; } ?>>SQL</option>
        <option <? if ($_POST[kategori]=="JavaScript") { echo "SELECTED"; } ?>>JavaScript</option>
        <option <? if ($_POST[kategori]=="Photoshop") { echo "SELECTED"; } ?>>Photoshop</option>
        <option <? if ($_POST[kategori]=="Flash") { echo "SELECTED"; } ?>>Flash</option>
        <option <? if ($_POST[kategori]=="PERL") { echo "SELECTED"; } ?>>PERL</option>
        <option <? if ($_POST[kategori]=="LUA") { echo "SELECTED"; } ?>>LUA</option>
        <option <? if ($_POST[kategori]=="Python") { echo "SELECTED"; } ?>>Python</option>
        <option <? if ($_POST[kategori]=="Diverse") { echo "SELECTED"; } ?>>Diverse</option>
        <option <? if ($_POST[kategori]=="Webhoteller") { echo "SELECTED"; } ?>>Webhoteller</option>
        </select><br>
        Beskrivelse:<br>
        <textarea name="beskrivelse" rows="8" cols="35"><? echo $_POST[beskrivelse] ?></textarea><br>
        <br>
        <input type="submit" value="Tilføj link">
        </form>
    </td>
</tr>
</table>
</div>
               
<?
    }
?>
Avatar billede webweaver Praktikant
17. juli 2005 - 11:37 #12
Sådan, nu har jeg fundet fejlen :) Ja der manglede skam en } et sted. Kan egentlig slet ikke forstå hvordan jeg kunne overse den! Da den var mere end indlysende! Hehe..

Men nu virker det da :D

Mange tak for hjælpen til Jer alle!! :o)
Avatar billede mysli Nybegynder
17. juli 2005 - 12:31 #13
Nu kender du så til fejlen. Har du ikke en editor der oplyser partneren når du er ved siden af en editor? I så fald burde du få en;)
Avatar billede tfswebguy Nybegynder
17. juli 2005 - 14:41 #14
Kan varmt anbefale UltraEdit :)
Avatar billede webweaver Praktikant
17. juli 2005 - 15:03 #15
Hehe okay jeg vil undersøge det nærmere :)
Avatar billede mysli Nybegynder
17. juli 2005 - 16:04 #16
UltraEdit er en editor der bare bør prøves ja:) Selv om den nogen gange kan være irriterende >:(
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