Toon posts:

[PHP] Forms en fout-markeringen

Pagina: 1
Acties:

Verwijderd

Topicstarter
vraagske...

ik heb een PHP script geschreven, waarbij ik een include met function gebruik die diverse checks uitvoert (bijv of velden alpa, alpha-num, of numeriek zijn zoals het hoort) etc etc...

Nu gaan ze waarde voor waarde door de function heen.
Bij een error kapt ie meteen, en geeft ie een foutmelding.
Nu wil ik, dat het field dat fout is rood gemarkeerd wordt wanneer de HTML weer geladen wordt (include)

voorbeeld:
<input type="text" STYLE="Color : YELLOW ; Background-Color : RED ;" name="FORM_firstname" size="40" value="BLABLA">

Snappen jullie?
Maar hoe doe ik dit NETJES, zodat alleen het foute veld een markering krijgt bij een return, en niet elk veld... En hoe laat ik de function weten dat, wanneer ie terug keert, WELKE field ie moet hebben...

PHP lukt me nu aardig... Hier kwam ik alleen niet uit en heb er lang over zitten denken... Ben het ook nog niet tegen gekomen....

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Het makkelijkste is om een soort foutwaarde te definieren die aangeeft wat er precies foutgegaan is. In je 'html' zet je vervolgens een check op die waarde. Dat ifstatmentje zet in dat geval of iets wel of niet rood moet worden. Verder lijkt het me wel handig waneer alle velden gecontroleerd worden vordat je wat teruggeeft zodat alle velden die fout zijn rood zijn ipv alleen het eerste foute veld.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
ik heb nu zeg maar zoiets:
(schema vorm)

main script
PHP:
1
2
3
4
function_name($FORM_firstname);
if(IsSset($returnerror)) {
   $firstname_td = '"STYLE="Color : YELLOW ; Background-Color : RED ;"';
}


include met function
PHP:
1
2
3
4
5
6
7
8
function function_name($check_field)

 global $returnerror;
 if(blablablabla) {
 blablabla
 $returnerror = "1";
 return $returnerror;
}


de HTML print
PHP:
1
print "<input type=\"text\" $fistname_td name=\"FORM_firstname\" size=\"40\" value=\"BLABLA\">";


maar ik wil dat ie dat zeg maar "automatisch" doet en ZELF uitvogelt WELK field fout is,
zodat ik niet voor ELK veld die check hoef te doen... KEN DET?

  • Norjee
  • Registratie: April 2000
  • Niet online
Ja dit is smerig.. maar het werkt wel :|

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?
if ($_GET[process] == 1)
    {
    $error = array();
    if (length($_POST[naam]) <  2) $error[naam] = 1;
    /* check om te zien of naam bestaan */ $error[naam] = 3;
    
    // idem voor ander check
    
    if (count($error)!=0)
        {
        while (list($k, $v) = each($error))
            {
            $errorInsertCode[$k] = "" '"STYLE="Color : YELLOW ; Background-Color : RED ;"';
            }       
        }
    else
        {
        // process stuff
        
        
        }
    }





?>
<html>
<head></head>
<body>
<form>
<table>
<tr>
    <td>
    Naam
    </td>
    <td>
    <input name=naam value=$_POST[naam] <?=$errorInsertCode[naam]?>>
    </td>
    <?
    if ($error[naam])
        {
    ?>
        <td>
        <?
        if ($error[naam] == 1) echo "Je naam is te kort";
        if ($error[naam] == 3) echo "Je naam bestaat al";
        ?>
        </td>
    <?
        }
    ?>
</tr>
<tr>
    <td>
    Naam
    </td>
    <td>
    <input name=sex value=$_POST[sex]>
    </td>
    <?
    if ($error[sex])
        {
    ?>
        <td>
        <?
        if ($error[sex] == 2) echo "Je sex ongeldig";       
        ?>
        </td>
    <?
        }
    ?>
</tr>
</table>
</form>
</body>
</html>

  • PowerFlower
  • Registratie: Juni 2001
  • Laatst online: 28-08 01:25

PowerFlower

être diable et jouer fleur

Beetje flauw in deze context maar... form validation (en zeker zoals jij dat wil) is écht veel makkelijker te regelen met Javascript... Ik laat Javascript starten als actie bij "submit", die loopt alle velden af, checkt ze, maakt de tekst rood als het niet klopt, focussed op het veld, en geeft een alert "klopt niet". Kan niet in PHP... (Ik laat PHP voor de zekerheid een aantal dingen weer opnieuw checken die echt belangrijk zijn)

Verwijderd

PowerFlower schreef op 03 november 2002 @ 02:05:
Beetje flauw in deze context maar... form validation (en zeker zoals jij dat wil) is écht veel makkelijker te regelen met Javascript... Ik laat Javascript starten als actie bij "submit", die loopt alle velden af, checkt ze, maakt de tekst rood als het niet klopt, focussed op het veld, en geeft een alert "klopt niet". Kan niet in PHP... (Ik laat PHP voor de zekerheid een aantal dingen weer opnieuw checken die echt belangrijk zijn)
JavaScript check is leuk speelgoed... Maar je MOET ALLES ook in php checken, aangezien JS makkelijk uitgezet kan worden. Javascript zijn nut ligt het dan vooral in het ontlasten van serverload, maar de check die er voor zorgt dat alles goed opgeslagen wordt zit in php

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Precies.. ik deed vroeger ook alles in Javascript... maar omdat je alles serverside toch weer moet checken heb ik de javascript-zut er maar uitgegooid anders ben je de hele tijd dubbel bezig ;) In sommige gevallen is het nog wel eens handig en kan het ECHT bandbreedte schelen, zoals een simpele extensie check op file-uploads e.d. Al is dat uiteraard niet veilig ;)

Maar goed.. gewoon bijhouden welke veldnamen een foutmelding opleverden (dus NIET direct stoppen na een melding zoals je nu doet). En achteraf met bijvoorbeeld in_array() kijken of een veld rood of gewoon zwart aangegeven moet worden...

Uiteraard liefst gebruikmakende van CSS-classes ipv iedere keer de style weg te schrijven...
Pagina: 1