check boxen en PHP_SELF

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Danny

Danny

07/12/2004 13:27:00
Quote Anchor link
ik ben als newbie een pagina aan het maken waarbij gegevens moeten worden ingegeven en gecontroleerd worden of de data valid is.
Ik post dus de gegevens naar dezelfde pagina (het formulier behoud de ingegeven data) zodat deze daar gecontroleerd worden , eventueel foutmeldingen weergeeft en dan (bij de volgende post als alles in orde is) worden de gegevens opgeslagen. Dit alles werkt perfect zolang ik met textboxen werk. Met checkboxen weet ik niet hoe ik juist checkbox kan checken als deze aangevinkt was. (value attribuut doorgeven werkt niet)
Deel van de code:

<form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $_SERVER['PHP_SELF'];?>
" method="post">

<INPUT name ="email" type="text" size ="20" maxlength="20" value ="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$email?>
" >

<INPUT name ="mailinfo" type="checkbox" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$mailinfo?>
">
etc..

</FORM>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php


if (!isset($geladen)){
//als we hier komen is de data ingegeven en moete ze gecontroleerd worden.
    
    if (trim($email) =="") {
    echo "<FONT color='red'>email is niet ingevuld!<BR></FONT>";
    };

etc
 
PHP hulp

PHP hulp

13/01/2025 07:12:06
 
Niels

Niels

07/12/2004 15:58:00
Quote Anchor link
Je vult de waarden van het form verkeerd in.
Als je checkbox name="mailinfo" geeft, en value is (bij aanvinken) "1" gaat het wel.
Dus: name="mailinfo" value="1".

Php maakt hier zelf van $mailinfo = "1"

Je moet dan nog wel maken dat als de waarde niet "1" is, hij dan bijv. "0" is.

Dit werk iig, maar ik weet niet wat je precies wil.

Cheers
 
Danny

Danny

07/12/2004 18:55:00
Quote Anchor link
Dat is nu net het probleem: Als ik het formulier herlaad door php_self wil ik de vorige waarde van de checkbox terug toekennen via value. Bij textboxen gaat dit rechtstreeks in de HTML , bij die checkboxen niet en ik heb al vanalles geprobeerd maar niets wil werken.

greetz
 
Niels

Niels

07/12/2004 19:05:00
Quote Anchor link
veel voorkomend probleem, dat als je refreshed hij de data nog een keer verstuurd ed.

Probeer in je if(isset($submit.... (als je dat gebruikt) de volgende code in te bouwen:

echo 'Updaten...<br>';
echo '<META HTTP-EQUIV=Refresh CONTENT="2; URL='.$_SERVER['PHP_SELF'].'">';

Hij ververst dan zelf en op die manier heeft het later met de hand refreshen geen effect op het script.

Cheers, Niels
 
Danny

Danny

07/12/2004 19:39:00
Quote Anchor link
ik snap het plaatje, alleen had ik een eigen variabele gebruikt ipv $submit.
Met $submit krijg ik het niet aan de praat.
(wordt niet true)

<INPUT type = "submit" value = "Bevestig">
in dezelfde form zou die variabele toch moeten setten denk ik. Ik mis nog iets denk ik

greetz
 
Niels

Niels

07/12/2004 19:56:00
Quote Anchor link
wat werkt r nog niet dan?
 
Danny

Danny

07/12/2004 19:57:00
Quote Anchor link
Gevonden: name attribuut niet ingevuld van de submit button

Maar dan doet hij niet wat ik wil, bij het refreshen worden alle velden geledigd in het formulier.

greetz

Danny
 
Niels

Niels

07/12/2004 20:11:00
Quote Anchor link
Je moet wel submit klikken, en niet refresh.
Heb je mijn regels r al in staan?

Pass je script maares
 
Danny

Danny

07/12/2004 20:25:00
Quote Anchor link
Door het drukken op submit word de pagina toch gerefreshed met uw regels erbij?

<form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $_SERVER['PHP_SELF'];?>
" method="post">


<table width="37%" border="0">
<tr>
<td width="48%">Naam* :</td>
<td width="52%"><input name ="user" type="text" size="20" maxlength="20" value ="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$user?>
" ></td>
</tr>
<tr>


etc etc


</FORM>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
require('configuratie.php');

echo $mailinfo;

$fout=false;


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

echo 'Updaten...<br>';
echo '<META HTTP-EQUIV=Refresh CONTENT="2; URL='.$_SERVER['PHP_SELF'].'">';



//als we hier komen is de data ingegeven en moete ze gecontroleerd worden.
    
    if (trim($user) =="") {
    echo "<FONT color='red'>Naam is niet ingevuld!<BR></FONT>";
    $fout=true;
    };

    
    if (strlen(trim($password))<6){
    echo "<FONT color='red'>Paswoord moet minimum 6 karakters zijn!<BR></FONT>";
    $fout=true;
    };


    if (trim($password)!=trim($password2) ){
    echo "<FONT color='red'>Paswoord komt niet overeen!<BR></FONT>";    
    $fout=true;
    };

    
    if (!eregi("^.[a-zA-Z0-9_.\.-]+@[a-z0-9_]+\\.[a-z]+",trim($email))){
    echo "<FONT color='red'>Foutieve email<BR></FONT>";
    $fout=true;
    };


if ($fout==true){
exit();
};


//als er geen fouten zijn; boeltje opslaan in database
 
Niels

Niels

07/12/2004 22:24:00
Quote Anchor link
Nee, let op volgende script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

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

if (trim($user) =="") {
    echo "<FONT color='red'>Naam is niet ingevuld!<BR></FONT>";
    $fout=true;
    }

    
    if (strlen(trim($password))<6){
    echo "<FONT color='red'>Paswoord moet minimum 6 karakters zijn!<BR></FONT>";
    $fout=true;
    }


    if (trim($password)!=trim($password2) ){
    echo "<FONT color='red'>Paswoord komt niet overeen!<BR></FONT>";    
    $fout=true;
    }

    
    if (!eregi("^.[a-zA-Z0-9_.\.-]+@[a-z0-9_]+\\.[a-z]+",trim($email))){
    echo "<FONT color='red'>Foutieve email<BR></FONT>";
    $fout=true;
    }


    else {
    //boeltje opslaan in database en:

    echo 'Updaten...<br>';  
echo '<META HTTP-EQUIV=Refresh CONTENT="2; URL='.$_SERVER['PHP_SELF'].'">';
    }
}

// laatste } was je vergeten, van de if(isset())
?>


Je gebruikt pas die tag refresh als je daadwerkelijk alles opslaat in de database. Als ie namelijk alleen een fout teruggeeft hoeft ie niet te refreshen.
Let op je parameters!

Dit script kun je helemaal gebruiken, maak nu nog de tag "boeltje opslaan in database"

Cheers
Gewijzigd op 07/12/2004 22:25:00 door Niels
 
Danny

Danny

07/12/2004 23:07:00
Quote Anchor link
Ok, alvast bedankt , men script ziet er al veel beter uit. Alleen zit ik nu nog altijd met het probleem waar het allemaal mee begon (misschien dat ik het nu wat duidelijker kan uitleggen). Bij een fout worden alle inhoud van de tekst velden behouden (wat goed is ), alleen die checkbox neemt zijn waarde niet terug (gecheckt of niet).


greetz
 
Niels

Niels

07/12/2004 23:14:00
Quote Anchor link
aha, nu snap ik wat jij bedoelt!
Je wilt dat de gegevens niet verloren gaan als r een foutmelding is geweest.
In de meeste gevallen gaat inderdaad de hele invoer weg.
Oplossing, ik zal s rondkijken...

Cheers
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.