Controle radiobuttons

Status
Niet open voor verdere reacties.

jeanmi

Gebruiker
Lid geworden
24 aug 2001
Berichten
262
Ik heb een bestelformulier gemaakt die voor 99% goed werkt, behalve dat ik de controle over de radiobuttons "Opsturen" of "Afhalen" niet onder controle krijg. De bedoeiling is dat de afzender eerst een keuze moet maken tussen de twee en indien hij dit niet doet hierover een foutmelding krijgt. Ook krijg ik het niet voor elkaar om de keuze in de mail zelf te maten verschijnen.
Hierbij de ganse code. Wie helpt mij aan de oplossing. Bedankt op voorhand
Mvg,

PHP:
<?php 
// Variabelen:
$voornaam   = "";	 //Voornaam van de afzender
$naam       = "";    // Naam van de afzender
$emailadres = "";    // E-mailadres van de afzender
$straat		= "";	 //Straat en nummer van de afzender
$pc			= "";	 //Postcode van de afzender
$gemeente	= "";	 //Gemeente of stad van de afzender
$tel		= "";	 //Telefoon van de afzender
$tekst      = "";    // Tekst van het e-mailbericht
$getal		= "";	 //keuze van de afzender
$vervuild   = FALSE; // TRUE als het formulier geen fouten bevat
$verzonden  = FALSE; // TRUE als het e-mailbericht is verzonden
$melding    = "";    // String voor (fout)meldingen

// Formulier alleen verwerken als er op een knop met de naam 'submit' is geklikt ...
if (isset($_POST['submit'])) {
    // ... en deze knop de waarde 'Verzenden' heeft:
    if ($_POST['submit'] == "Verzenden") {
        $voornaam 	= $_POST['v'];                  
		$naam       = $_POST['n'];
        $emailadres = $_POST['e'];
		$straat		= $_POST['s'];
		$pc			= $_POST['p'];
		$gemeente	= $_POST['g'];
		$tel		= $_POST['a'];
        $tekst		= $_POST['t'];
		$getal		= $_POST['rb'];

        // HTML-tags en PHP-code verwijderen:
        $voornaam 	= strip_tags($voornaam);
		$naam       = strip_tags($naam);
        $emailadres = strip_tags($emailadres);
		$straat	    = strip_tags($straat);
		$pc			= strip_tags($pc);
		$gemeente	= strip_tags($gemeente);
		$tel		= strip_tags($tel);
        $tekst      = strip_tags($tekst);
		$getal		= strip_tags($getal);

        // Spaties en andere witruimte verwijderen uit de naam en het e-mailadres,
        // maar niet uit de tekst van het bericht:
        $voornaam 	= trim($voornaam);
		$naam       = trim($naam);
        $emailadres = trim($emailadres);
		$straat		= trim($straat);
		$pc			= trim($pc);
		$gemeente	= trim($gemeente);
		$tel		= trim($tel);

		if (strlen($voornaam) < 1) {
            $melding  .= "Voer uw <strong>Voornaam</strong> in. ";
            $vervuild  = TRUE;
        }
        if (strlen($naam) < 1) {
            $melding  .= "Voer uw <strong>Achternaam</strong> in. ";
            $vervuild  = TRUE;
        }
		
		if (strlen($straat) < 1) {
            $melding  .= "Voer uw <strong>Straatnaam en nummer</strong> in. ";
            $vervuild  = TRUE;
        }
		
		if (strlen($pc) < 1) {
            $melding  .= "Voer uw <strong>Postcode</strong> in. ";
            $vervuild  = TRUE;
        }
		
		if (strlen($gemeente) < 1) {
            $melding  .= "Voer uw <strong>Woonplaats</strong> in. ";
            $vervuild  = TRUE;
        }
		
		if (strlen($tel) < 1) {
            $melding  .= "Voer uw <strong>Telefoonnumer</strong> in. ";
            $vervuild  = TRUE;
        }

        if (strlen($emailadres) < 1) {
            $melding  .= "Voer uw <strong>e-mailadres</strong> in. ";
            $vervuild  = TRUE;
        } else {
            require_once('is_email.inc.php');
            if (!is_email($emailadres)) {
                $melding  .= "<strong>" . htmlentities($emailadres) . "</strong> is geen geldig e-mailadres. ";
                $vervuild  = TRUE;
            }
        }
        
        if (strlen($tekst) < 1) {
            $melding  .= "U moet nog uw <strong>Bestelling</strong> opgeven ";
            $vervuild  = TRUE;
        }
		
		if (strlen($getal)==1){
		echo("mijn artikel wordt opgestuurd");}
		elseif($getal==2){
		echo("ik haal artikel zelf af, na afspraak");}
		else("u moet nog een keuze maken");}

        // E-mailbericht verzenden als de gegevens niet vervuild zijn:
        if (!$vervuild) {
            // Constante voor het e-mailadres van de ontvanger:
            define("AAN", "hier staat mijn mailadres");
            // Constante voor het onderwerp:
            define("ONDERWERP", "Bestelformulier");
            // Headers met de naam en het e-mailadres van de gebruiker:
            $headers  = "From: \"$naam\" <$emailadres>\r\n";
            $headers .= "Reply-To: \"$naam\" <$emailadres>\r\n";
            // Naam en e-mailadres toevoegen aan de tekst:
            $tekst .= "\r\n\r\v$voornaam";
			$tekst .= "\r\n\r\n$naam";
            $tekst .= "\r\n<$emailadres>";
			$tekst .= "\r\n\r\s$straat";
			$tekst .= "\r\n\r\p$pc";
			$tekst .= "\r\n\r\g$gemeente";
			$tekst .= "\r\n\r\a$tel";
            if (mail(AAN, ONDERWERP, $tekst, $headers)) {
                $verzonden  = TRUE;
                $melding    = "Hartelijk dank voor uw reactie. ";
                $melding   .= "U ontvangt zo snel mogelijk antwoord. ";
            } else {
                $verzonden  = FALSE;
                $melding    = "Uw bericht kon niet worden verzonden. ";
                $melding   .= "Wijzig het e-mailadres of probeer het later nog een keer. ";
            }
        }
    }


// Standaardtekst voor instructies instellen als er geen foutmeldingen zijn:
if ($melding == "") {
    
	$melding = "Alle velden zijn verplicht en correct in te vullen <br>";
	$melding .= "<hr>";
}


?>
      <p><?php echo $melding; ?></p>
<?php
// Formulier weergeven als de gegevens vervuild zijn
// of het e-mailbericht niet verzonden is:
if ($vervuild or !$verzonden) {
    $voornaam 	= htmlentities($voornaam);
	$naam       = htmlentities($naam);
    $emailadres = htmlentities($emailadres);
	$straat		= htmlentities($straat);
	$pc			= htmlentities($pc);
	$gemeente	= htmlentities($gemeente);
	$tel		= htmlentities($tel);
    $tekst      = htmlentities($tekst);
	$getal		= htmlentities($getal);
?>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
  <table border="0" cellpadding="0" cellspacing="2">
    
    <tr>
      <td width="48%" height="35"><label for="v"><span class="stijl1" style="text-decoration: underline">V</span><span class="stijl1">oornaam:</span></label></td>
      <td width="52%"><input name="v" type="text" class="plaats" id="v" accesskey="v" value="<?php echo $voornaam; ?>" size="46"></td>
    </tr>
    <tr>
    
    <tr>
      <td width="48%" height="35"><label for="n"><span class="stijl1" style="text-decoration: underline">N</span><span class="stijl1">aam:</span></label></td>
      <td width="52%"><input name="n" type="text" class="plaats" id="n" accesskey="n" value="<?php echo $naam; ?>" size="46"></td>
    </tr>
    <tr>
      <td height="35" nowrap><label for="e"><span class="stijl1" style="text-decoration: underline">E</span><span class="stijl1">-mailadres:</span></label></td>
      <td><input name="e" type="text" class="plaats" id="e" accesskey="e" value="<?php echo $emailadres; ?>" size="46"></td>
    </tr>
    
   	<tr>
      <td width="48%" height="35"><label for="s"><span class="stijl1" style="text-decoration: underline">S</span><span class="stijl1">traat & Nr:</span></label></td>
      <td width="52%"><input name="s" type="text" class="plaats" id="s" accesskey="s" value="<?php echo $straat; ?>" size="46"></td>
    </tr>
    
    <tr>
      <td width="48%" height="35"><label for="p"><span class="stijl1" style="text-decoration: underline">P</span><span class="stijl1">ostcode:</span></label></td>
      <td width="52%"><input name="p" type="text" class="plaats" id="p" accesskey="p" value="<?php echo $pc; ?>" size="46"></td>
    </tr>
    
    <tr>
      <td width="48%" height="35"><label for="g"><span class="stijl1" style="text-decoration: underline">W</span><span class="stijl1">oonplaats:</span></label></td>
      <td width="52%"><input name="g" type="text" class="plaats" id="g" accesskey="g" value="<?php echo $gemeente; ?>" size="46"></td>
    </tr>
    
    <tr>
      <td width="48%" height="35"><label for="a"><span class="stijl1" style="text-decoration: underline">T</span><span class="stijl1">elefoon:</span></label></td>
      <td width="52%"><input name="a" type="text" class="plaats" id="a" accesskey="a" value="<?php echo $tel; ?>" size="46"></td>
    </tr>
    
    <tr>
      <td height="35" colspan="2">
        <label for="t" class="stijl1"><span style="text-decoration: underline">T</span>ekst van uw e-mailbericht:</label>      </td>
    </tr>
    <tr>
      <td colspan="2"><textarea name="t" cols="60" rows="12" class="plaats" id="t" accesskey="t"><?php echo $tekst; ?></textarea></td>
    </tr>
    </table>
    
    <p><input class="plaats" name="rb" type="radio" id="cb" value="1">Opsturen
        <input class="plaats" name="rb" type="radio" id="cb" value="2">Afhalen</p>
   
   <table border="0" cellpadding="0" cellspacing="2">   
      
    <tr>
      <td height="35">&nbsp;</td>
      <td align="right">
        <div align="left">
          <input class="knop" name="submit" type="submit" value="Verzenden"> 
          &nbsp;
            <input class="knop" name="submit" type="submit" value="Wissen">
          </div></td>
    </tr>
  </table>
</form>
<?php
}

?>
 
Technisch gezien moet je een <input> tag afsluiten, hoewel ik niet weet of dat hier voor problemen zorgt. Verder is het niet toegestaan om 2 elementen met dezelfde ID te hebben, dus dat zou ik ook even aanpassen als ik jou was.

Verder gebruik je voor je radiobutton controle de strlen functie die kijkt hoeveel letters in een string zitten; zowel het getal 1 als het getal 2 hebben een lengte van 1, daar zit waarschijnlijk je fout ;) Ik zou die strlen eens weghalen en kijken of het dan wel werkt :)
 
De 'else' in die controle klopt ook niet helemaal:
PHP:
        if (strlen($getal)==1){
        echo("mijn artikel wordt opgestuurd");}
        elseif($getal==2){
        echo("ik haal artikel zelf af, na afspraak");}
        else("u moet nog een keuze maken");}
Die heeft namelijk wel een sluit-accolade, maar geen begin-accolade.

@Frats, wat bedoel je precies met het afsluiten van de <input> tags? Ik zie niets wat niet klopt.
 
Technisch gezien moet je een <input> tag afsluiten, hoewel ik niet weet of dat hier voor problemen zorgt. Verder is het niet toegestaan om 2 elementen met dezelfde ID te hebben, dus dat zou ik ook even aanpassen als ik jou was.
Volgens mij moeten ze hetzelfde ID hebben, maar natuurlijk met een verschillende waarde
Verder gebruik je voor je radiobutton controle de strlen functie die kijkt hoeveel letters in een string zitten; zowel het getal 1 als het getal 2 hebben een lengte van 1, daar zit waarschijnlijk je fout ;) Ik zou die strlen eens weghalen en kijken of het dan wel werkt :)
De strlen moet juist controleren of één van de twee mogelijkheden is aangeduid. Hier zit dus nog een fout in want hij voert de controle niet uit. Het formulier wordt verzonden maar in de mail kan ik niet zien wat er eventueel is aangevinkt. Het zou hetzelfde moeten worden als bij de invoer van voornaam, naam enz. Maar dit ene lukt mijn niet.
Mvg
 
Ik zou dit is proberen:
PHP:
        if ($getal==1){
        echo("mijn artikel wordt opgestuurd");}
        elseif($getal==2){
        echo("ik haal artikel zelf af, na afspraak");}
        else {
        echo("u moet nog een keuze maken");}

weet niet of het werkt maar valt te proberen?
en waarom gebruik je overal strlen?
je kan toch makkelijker emty gebruiken?:)
 
Ik zou dit is proberen:
PHP:
        if ($getal==1){
        echo("mijn artikel wordt opgestuurd");}
        elseif($getal==2){
        echo("ik haal artikel zelf af, na afspraak");}
        else {
        echo("u moet nog een keuze maken");}

weet niet of het werkt maar valt te proberen?
en waarom gebruik je overal strlen?
je kan toch makkelijker emty gebruiken?:)

Werkt dus niet, ik heb dan maar eens de radiobuttons verwijderd. Zou ik het kunnen proberen met een droplist?
 
Laatst bewerkt:
en waarom gebruik je overal strlen?
je kan toch makkelijker emty gebruiken?:)

Het gebruik van strlen werkt perfect. Indien er iets niet correct is ingevuld verschijnt zonder probleem over welke foutmelding het gaat.
Met een droplist werkt het ook niet. Ik heb dan maar voor een andere oplossing gekozen, namelijk een tekstvak, waar de gebruiker zelf moet invullen wat hij verkiest. Dit werkt uitstekend.
Mvg :thumb:
Jeanmi
 
dat weet ik maar het was toch veel makkelijker en sneller ggeweest als je emty had gebruikt?
maarja, emty of strlen < 1 evengoede vrienden(A)
 
empty() is niet zo handig, het checkt namelijk niet of iets leeg is, maar de variabele een van deze waardes bevat:

"" (an empty string)
0 (0 as an integer)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)


Of iets leeg (echt leeg) is, check je doorgaans zo:

PHP:
if(trim($var) == ''){

// echt leeg.

}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan