Form... giudizio, consigli, errori, possibili miglioramenti....

  • Creatore Discussione Creatore Discussione idkfa46
  • Data di inizio Data di inizio

idkfa46

Utente Attivo
17 Ott 2010
40
0
0
Buongiorno a tutti,
vi posto il codice del mio form per avere una vostra opinione, giudizio, consiglio per migliorare il codice che lo genera...
e rinnovare un paio di domande che sono state malposte qualche giorno fa.
Potete vedere un'anteprima a questo link: http://www.matteomosconi.com/timber2/

index:
PHP:
<!DOCTYPE html>
<html>
    <head>
        <title>Licenze</title>
	<meta http-equiv="Content- Type" content="text/html; charset=iso-8859-1">
	<link rel="stylesheet" type="text/css" href="css/layout.css">

        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
	<script type="text/javascript" src="script.js"></script>

	<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"></script> 
	<script type="text/javascript" src="validation_reg.js"></script> 
    </head>

    <body>

<div class="colonna_SX">
<form name="form" id="form" method="post" action="riepilogo.php" >
   <fieldset>
	<legend>Informazioni personali </legend>
	<div>
            <label for="user">Nome: </label>
            <input id="user" name="user">
        </div>
        <div>
            <label for="address">Email: </label>
            <input id="address" name="address">
        </div>
        <div>
            <label for="city">Città: </label>
            <input id="city" name="city">
        </div>
	<div>
           <label for="nazione">Nazionalità:<b>*</b></label>
            <select id="nazione" name="nazione">
                <option>Seleziona</option>
                <option value="italia">Italia</option>
                <option value="estero">Estero</option>
            </select>
        </div>
        <div>
            <label for="professione">Professione:<b>*</b></label>
            <select id="professione" name="professione">
                <option value="1">Azienda</option>
                <option value="0">Ingegnere</option>
                <option value="0">Architetto</option>
                <option value="2">Studente</option>
                <option value="2">Privato</option>
            </select>
        </div>
        <div>
            <label for="licenze">Numero di licenze:<b>*</b></label>
            <select id="licenze" name="licenze">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
            </select>
        </div>
        <div>
	    <p>I campi contrassegnati con <b>*</b> sono obbligatori</p>
	    <input type="submit" id="go" value="Conferma" />
        </div>

   </fieldset>
   </form>
</div>


   <div class="colonna_DX">
   <form>
       <fieldset>
	   <legend>Calcolo del prezzo </legend>
		<div>
            	   <label for="costo">Costo licenze: </label>
            	   <input type="text" id="costo" size="5" readonly="readonly" /> €
        	</div>
		<div>
            	   <label for="cnpaia">Contributo cnpaia: </label>
            	   <input type="text" id="cnpaia" size="5" readonly="readonly" /> €
        	</div>
		<div>
            	   <label for="iva">IVA: </label>
            	   <input type="text" id="iva" size="5" readonly="readonly" /> €
       		</div>
		<div>
            	   <label for="ritenuta">Ritenuta: </label>
            	   <input type="text" id="ritenuta" size="5" readonly="readonly" /> €
        	</div>
		<div>
            	   <label for="totale">Totale: </label>
            	   <input type="text" id="totale" size="5" readonly="readonly" /> €
        	</div>
		<div>
		</br>
        	</div>

       </fieldset>
   </form>
   </div>

   </body>
</html>

Riepilogo.php
PHP:
<!DOCTYPE html>
<html>
    <head>

        <title>Riepilogo</title>

	<meta http-equiv="Content- Type" content="text/html; charset=iso-8859-1">
	<link rel="stylesheet" type="text/css" href="css/layout.css">

    </head>

    <body>
	<?PHP 	include "functions/conto.php" ;	?>

	<fieldset>
	<legend>Riepilogo </legend>
	<div>
            <label for="user">Nome: </label>
            <input type="text" name="user" value="<?php echo $user; ?>" size="20" readonly="readonly" />
        </div>
        <div>
            <label for="address">Email: </label>
            <input type="text" name="address" value="<?php echo $address; ?>" size="20" readonly="readonly" />
        </div>
        <div>
            <label for="city">Città: </label>
            <input type="text" name="city" value="<?php echo $city; ?>" size="20" readonly="readonly" />
        </div>
        <div>
            <label for="licenze">Numero di licenze:<b>*</b></label>
	    <input type="text" name="licenze" value="<?php echo $licenze; ?>" size="10" readonly="readonly" />
        </div>
        <div>
            <label for="totale">Imponibile:<b>*</b></label>
	    <input type="text" name="totale" value="<?php echo $totale; ?>" size="10" readonly="readonly" /> €
        </div>
        <div>
            <label for="pagamento">Metodo di pagamento<b>*</b></label>
	    <input type="text" name="pagamento" value="Paypal" size="10" readonly="readonly" />
        </div>

	</fieldset>

<form action="https://www.paypal.com/it/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="<?php echo $paypal; ?>">
<input type="hidden" name="item_name" value="Nome dell'oggetto">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="amount" value="<?php echo $totale; ?>">
<input type="image" src="https://www.paypalobjects.com/it_IT/IT/i/btn/btn_paynow_LG.gif" border="0" 
name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!">
</form>


   </body>
</html>

script.js
PHP:
//////////////////////////////////////////////////////////////////////
//                       PARAMETRI MODIFICABILI                     //
//////////////////////////////////////////////////////////////////////

p1=350;		//Prezzo pieno licenza
p2=250;		//Prezzo scontato licenza
n=5;		//Numero di licenze minimo per prezzo scontato
ax=4;		//Aliquota CNPAIA
ay=21;		//Aliquota IVA
az=20;		//Aliquota Ritenuta

//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////



$(document).ready(function() {
    		pieno    = p1;			
    		scontato = p2;

    		$("#licenze, #nazione, #professione").change(function() {
        	var num = parseInt($("#licenze").val());

        	if (num > (n-1)) {
           	var costo = scontato * num;
        	} else {
            	var costo = pieno * num;
        	}

        	if ($("#professione").val() != "0" || $("#nazione").val() == "estero") {
            	var cnpaia = (costo / 100) * ax ;
        	} else {
            	var cnpaia = 0 ;
        	}

        	if ($("#nazione").val() == "italia") {
            	var iva = ((costo + cnpaia) / 100) * ay;
        	} else {
            	var iva = 0;
        	}

        	if ($("#professione").val() == "2" || $("#nazione").val() == "estero") {
            	var ritenuta = 0 ;
        	} else {
            	var ritenuta = (costo / 100) * az ;
        	}

        	var totale = costo + cnpaia + iva -ritenuta;
        	var totale = totale.toFixed(2);

        	$("#costo").val(costo);
        	$("#cnpaia").val(cnpaia);
        	$("#iva").val(iva);
        	$("#ritenuta").val(ritenuta);
        	$("#totale").val(totale);
    		});
	});

validation_reg.js

PHP:
$(document).ready(function()
{
	// my method for validate username
	$.validator.addMethod("username_regex", function(value, element) { 
		return this.optional(element) || /^[a-z0-9\.\-_]{3,30}$/i.test(value); 
		}, "Please choise a username with only a-z 0-9.");
		
	$("#form").validate(
	{
        rules:{
		'user':{
			required: true,
			minlength: 3,
			username_regex: true,
			},

		'address':{
			required: true,
			email: true,
			},

		'city':{
			required: true,
			minlength: 3,
			username_regex: true,
			},

		'nazione':{
			required: true,
			username_regex: true,
			},

		'professione':{
			required: true,
			},

		'licenze':{
			required: true,
			},

		},

        messages:{
		'user':{
			required: "Il campo username è obbligatorio!",
			minlength: "Errore",
			username_regex: "Hai utilizzato caratteri non validi. Sono consentiti solo lettere numeri!",
			},

		'address':{
			required: "Il campo email è obbligatorio!",
			email: "Inserisci un valido indirizzo email!",
			},

		}
	});
});

funzione di controllo calcolo del totale
conto.php

PHP:
<?php

//////////////////////////////////////////////////////////////////////
//                       PARAMETRI MODIFICABILI                     //
//////////////////////////////////////////////////////////////////////

$paypal = "mydangerousmind84@hotmail.com";

$p1 =	350 ;		//Prezzo pieno licenza
$p2 =	250 ;		//Prezzo scontato licenza
$n  =	5 ;		//Numero di licenze minimo per prezzo scontato
$ax =	4 ;		//Aliquota CNPAIA
$ay =	21 ;		//Aliquota IVA
$az =	20 ;		//Aliquota Ritenuta


//////////////////////////////////////////////////////////////////////
//                    PARAMETRI DA NON MODIFICARE                   //
//////////////////////////////////////////////////////////////////////

$professione = $_POST['professione'];
$nazione = $_POST['nazione'];
$num = $_POST['licenze'];
$user = $_POST['user'];
$address = $_POST['address'];
$city = $_POST['city'];

//////////////////////////////////////////////////////////////////////
//                          Validazione Dati                        //
//////////////////////////////////////////////////////////////////////

function validateName($user){  
        if(strlen($user) < 4)  
            return false;  
        else  
            return true;  
    	}  
function validateEmail($address){  
        return ereg("^[a-zA-Z0-9]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$", $address);  
    	} 

//////////////////////////////////////////////////////////////////////

//Calcolo del costo Licenza

    	if ($num > ($n - 1)) {
	$costo = $p2 * $num ;
    	} else { 
	$costo = $p1 * $num ;
	}

//Calcolo del contributo CNPAIA

        if ($professione != "0" || $nazione == "estero") {
	$cnpaia = ($costo / 100) * $ax ;
        } else {
        $cnpaia = 0 ;
	}

//Calcolo dell'aliquota IVA

	if ($nazione == "italia") {
        $iva = (($costo + $cnpaia) / 100) * $ay;
        } else {
        $iva = 0;
        }

//Calcolo della Ritenuta

       	if ($professione == "2" || $nazione == "estero") {
      	$ritenuta = 0 ;
      	} else {
       	$ritenuta = ($costo / 100) * $az ;
       	}

//Calcolo del Totale

	$totale = $costo + $cnpaia + $iva - $ritenuta ;

//echo "Nazionalità: 	= $nazione <br />";
//echo "Professione: 	= $professione <br />";
//echo "Quantità: 	= $num <br />";

//echo "Costo Licenze: 	= $costo Euro<br /><br />"; 
//echo "CNPAIA: 		= $cnpaia Euro<br />";
//echo "IVA: 		= $iva Euro<br />";
//echo "Ritenuta: 	= $ritenuta Euro<br />";
//echo "TOTALE: 		= $totale Euro<br /><br />";

?>

I problemi che vi evidenzio subito sono:
- impaginazione con i css:
PHP:
div.colonna_SX{
width: 340px;
padding: 1px 1px;
float:left; 
margin: 0px;
text-align:left;
}

div.colonna_DX {
width: 340px;
padding: 1px 1px;
float:rigth;
margin: 0px;
text-align:left;
}
con il segiente css l'impaginazione su due colonne viene visualizzata correttamente con Firefox ma non con Explorer

-il controllo di validazione dei dati sul menu a scelta Nazionalità non è corretto infatti mi permettere di procedere anche se il calpo presenta la dicitura: "seleziona"

-vorrei eliminare la pagina di riepilogo e inserire direttamente il bottone paypal come submit del form... ho fatto un paio di esperimenti a riguardo ma trovo difficoltà ad inserire il suddetto bottone in modo corretto (soprattutto per fargli avviare il file conto.php, il quale genera le varibiali tra le quali $totale che vengono passate a paypal

Vi ringrazio anticipatamente per la vostra disponibilità
e mi scuso se il post riporta una parte di domanda gia fatta ma, questa volta, spero di essermi spiegato in modo più chiaro

Matteo.
 
ciao
così ad una prima occhiata superficiale:
i controlli con js sono comodi perchè evidenziano subito l'errore ma possono essere facilmente aggirati, , fai gli stessi controlli lato server
eregi è deprecato
poi con calma se vedo altre cose te le segnalo
 
Grazie borgo!
ho seguito il tuo consiglio ed ho impostato i controlli anche server side

ho modificato il file riepilogo.php che è diventato cosi:
PHP:
<!DOCTYPE html>
<html>
    <head>

        <title>Riepilogo</title>
	<meta http-equiv="Content- Type" content="text/html; charset=iso-8859-1">
	<link rel="stylesheet" type="text/css" href="css/layout.css">
    </head>

    <body>
	<?PHP 	
		include "functions/conto.php";
		require_once "functions/formvalidator.php";

		$show_form=false;
		if(isset($_POST['Submit']))
		{
    			$validator = new FormValidator();
    			$validator->addValidation("user","req","Il nome è obbligatorio");
    			$validator->addValidation("user","minlen=3","Il nome è troppo corto");


    			$validator->addValidation("address","req","Il nome è obbligatorio");
    			$validator->addValidation("address","email","Indirizzo email non  corretto");
    			
    			$validator->addValidation("city","req","Il nome è obbligatorio");
    			$validator->addValidation("city","minlen=3","Il nome è troppo corto");

    			$validator->addValidation("nazione","req","Il nome è obbligatorio");
    			$validator->addValidation("professione","req","La professione è obbligatorio");
    			$validator->addValidation("licenze","req","Il numero licenze è obbligatorio");


    			if($validator->ValidateForm())
    			{
        		echo "<h2>Validation Success!</h2>";
        		$show_form=true;
    			}
    		else
    			{
        		echo "<B>Validation Errors: <A HREF=\"index.php\">GO BACK</A></B>";
        		$error_hash = $validator->GetErrors();
        		foreach($error_hash as $inpname => $inp_err)
        		{
          		echo "<p>$inpname : $inp_err</p>\n";
        		}
    		}
	}
	if(true == $show_form)
	{
	?>

	<fieldset>
	<legend>Riepilogo </legend>
	<div>
            <label for="user">Nome: </label>
            <input type="text" name="user" value="<?php echo $user; ?>" size="20" readonly="readonly" />
        </div>
        <div>
            <label for="address">Email: </label>
            <input type="text" name="address" value="<?php echo $address; ?>" size="20" readonly="readonly" />
        </div>
        <div>
            <label for="city">Città: </label>
            <input type="text" name="city" value="<?php echo $city; ?>" size="20" readonly="readonly" />
        </div>
        <div>
            <label for="licenze">Numero di licenze:<b>*</b></label>
	    <input type="text" name="licenze" value="<?php echo $num; ?>" size="10" readonly="readonly" />
        </div>
        <div>
            <label for="totale">Imponibile:<b>*</b></label>
	    <input type="text" name="totale" value="<?php echo $totale; ?>" size="10" readonly="readonly" /> €
        </div>
        <div>
            <label for="pagamento">Metodo di pagamento<b>*</b></label>
	    <input type="text" name="pagamento" value="Paypal" size="10" readonly="readonly" />
        </div>

	</fieldset>

<form action="https://www.paypal.com/it/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="<?php echo $paypal; ?>">
<input type="hidden" name="item_name" value="Nome dell'oggetto">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="amount" value="<?php echo $totale; ?>">
<input type="image" src="https://www.paypalobjects.com/it_IT/IT/i/btn/btn_paynow_LG.gif" border="0" 
name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!">
</form>

	<?PHP
		}	//true == $show_form
	?>


   </body>
</html>

e questo è il relativo formvalidator.php

PHP:
<?PHP

class ValidatorObj
{
	var $variable_name;
	var $validator_string;
	var $error_string;
}


class CustomValidator 
{
	function DoValidate(&$formars,&$error_hash)
	{
		return true;
	}
}

/** Default error messages*/
define("E_VAL_REQUIRED_VALUE","Please enter the value for %s");
define("E_VAL_MAXLEN_EXCEEDED","Maximum length exceeded for %s.");
define("E_VAL_MINLEN_CHECK_FAILED","Please enter input with length more than %d for %s");
define("E_VAL_ALNUM_CHECK_FAILED","Please provide an alpha-numeric input for %s");
define("E_VAL_ALNUM_S_CHECK_FAILED","Please provide an alpha-numeric input for %s");
define("E_VAL_NUM_CHECK_FAILED","Please provide numeric input for %s");
define("E_VAL_ALPHA_CHECK_FAILED","Please provide alphabetic input for %s");
define("E_VAL_ALPHA_S_CHECK_FAILED","Please provide alphabetic input for %s");
define("E_VAL_EMAIL_CHECK_FAILED","Please provide a valida email address");
define("E_VAL_LESSTHAN_CHECK_FAILED","Enter a value less than %f for %s");
define("E_VAL_GREATERTHAN_CHECK_FAILED","Enter a value greater than %f for %s");
define("E_VAL_REGEXP_CHECK_FAILED","Please provide a valid input for %s");
define("E_VAL_DONTSEL_CHECK_FAILED","Wrong option selected for %s");
define("E_VAL_SELMIN_CHECK_FAILED","Please select minimum %d options for %s");
define("E_VAL_SELONE_CHECK_FAILED","Please select an option for %s");
define("E_VAL_EQELMNT_CHECK_FAILED","Value of %s should be same as that of %s");
define("E_VAL_NEELMNT_CHECK_FAILED","Value of %s should not be same as that of %s");


class FormValidator 
{
	var $validator_array;
    var $error_hash;
	var $custom_validators;
	
	function FormValidator()
	{
		$this->validator_array = array();
        $this->error_hash = array();
		$this->custom_validators=array();
	}
	
	function AddCustomValidator(&$customv)
	{
		array_push($this->custom_validators,$customv);
	}

	function addValidation($variable,$validator,$error)
	{
		$validator_obj = new ValidatorObj();
		$validator_obj->variable_name = $variable;
		$validator_obj->validator_string = $validator;
		$validator_obj->error_string = $error;
		array_push($this->validator_array,$validator_obj);
	}
    function GetErrors()
    {
        return $this->error_hash;
    }

	function ValidateForm()
	{
		$bret = true;

		$error_string="";
		$error_to_display = "";

        
		if(strcmp($_SERVER['REQUEST_METHOD'],'POST')==0)
		{
			$form_variables = $_POST;
		}
		else
		{
			$form_variables = $_GET;
		}

        $vcount = count($this->validator_array);
        

		foreach($this->validator_array as $val_obj)
		{
			if(!$this->ValidateObject($val_obj,$form_variables,$error_string))
			{
				$bret = false;
                $this->error_hash[$val_obj->variable_name] = $error_string;
			}
		}

		if(true == $bret && count($this->custom_validators) > 0)
		{
            foreach( $this->custom_validators as $custom_val)
			{
				if(false == $custom_val->DoValidate($form_variables,$this->error_hash))
				{
					$bret = false;
				}
			}
		}
		return $bret;
	}


	function ValidateObject($validatorobj,$formvariables,&$error_string)
	{
		$bret = true;

		$splitted = explode("=",$validatorobj->validator_string);
		$command = $splitted[0];
		$command_value = '';

		if(isset($splitted[1]) && strlen($splitted[1])>0)
		{
			$command_value = $splitted[1];
		}

		$default_error_message="";
		
		$input_value ="";

		if(isset($formvariables[$validatorobj->variable_name]))
		{
		 $input_value = $formvariables[$validatorobj->variable_name];
		}

		$bret = $this->ValidateCommand($command,$command_value,$input_value,
									$default_error_message,
									$validatorobj->variable_name,
									$formvariables);

		
		if(false == $bret)
		{
			if(isset($validatorobj->error_string) &&
				strlen($validatorobj->error_string)>0)
			{
				$error_string = $validatorobj->error_string;
			}
			else
			{
				$error_string = $default_error_message;
			}

		}//if
		return $bret;
	}
    	
	function validate_req($input_value, &$default_error_message,$variable_name)
	{
	  $bret = true;
      	if(!isset($input_value) ||
			strlen($input_value) <=0)
		{
			$bret=false;
			$default_error_message = sprintf(E_VAL_REQUIRED_VALUE,$variable_name);
		}	
	  return $bret;	
	}

	function validate_maxlen($input_value,$max_len,$variable_name,&$default_error_message)
	{
		$bret = true;
		if(isset($input_value) )
		{
			$input_length = strlen($input_value);
			if($input_length > $max_len)
			{
				$bret=false;
				$default_error_message = sprintf(E_VAL_MAXLEN_EXCEEDED,$variable_name);
			}
		}
		return $bret;
	}

	function validate_minlen($input_value,$min_len,$variable_name,&$default_error_message)
	{
		$bret = true;
		if(isset($input_value) )
		{
			$input_length = strlen($input_value);
			if($input_length < $min_len)
			{
				$bret=false;
				$default_error_message = sprintf(E_VAL_MINLEN_CHECK_FAILED,$min_len,$variable_name);
			}
		}
		return $bret;
	}

	function test_datatype($input_value, $reg_exp)
		{
		if(preg_match(‘/’ . $reg_exp . ‘/’, $input_value))
		{
		return false;
		}
	return true;
	}

	function validate_email($email)
		{		
		return filter_var($email, FILTER_VALIDATE_EMAIL);
	}

	function validate_for_numeric_input($input_value,&$validation_success)
	{
		
		$more_validations=true;
		$validation_success = true;
		if(strlen($input_value)>0)
		{
			
			if(false == is_numeric($input_value))
			{
				$validation_success = false;
				$more_validations=false;
			}
		}
		else
		{
			$more_validations=false;
		}
		return $more_validations;
	}

	function validate_lessthan($command_value,$input_value,
                $variable_name,&$default_error_message)
	{
		$bret = true;
		if(false == $this->validate_for_numeric_input($input_value,
                                    $bret))
		{
			return $bret;
		}
		if($bret)
		{
			$lessthan = doubleval($command_value);
			$float_inputval = doubleval($input_value);
			if($float_inputval >= $lessthan)
			{
				$default_error_message = sprintf(E_VAL_LESSTHAN_CHECK_FAILED,
										$lessthan,
										$variable_name);
				$bret = false;
			}//if
		}
		return $bret ;
	}

	function validate_greaterthan($command_value,$input_value,$variable_name,&$default_error_message)
	{
		$bret = true;
		if(false == $this->validate_for_numeric_input($input_value,$bret))
		{
			return $bret;
		}
		if($bret)
		{
			$greaterthan = doubleval($command_value);
			$float_inputval = doubleval($input_value);
			if($float_inputval <= $greaterthan)
			{
				$default_error_message = sprintf(E_VAL_GREATERTHAN_CHECK_FAILED,
										$greaterthan,
										$variable_name);
				$bret = false;
			}//if
		}
		return $bret ;
	}

    function validate_select($input_value,$command_value,&$default_error_message,$variable_name)
    {
	    $bret=false;
		if(is_array($input_value))
		{
			foreach($input_value as $value)
			{
				if($value == $command_value)
				{
					$bret=true;
					break;
				}
			}
		}
		else
		{
			if($command_value == $input_value)
			{
				$bret=true;
			}
		}
        if(false == $bret)
        {
            $default_error_message = sprintf(E_VAL_SHOULD_SEL_CHECK_FAILED,
                                            $command_value,$variable_name);
        }
	    return $bret;
    }

	function validate_dontselect($input_value,$command_value,&$default_error_message,$variable_name)
	{
	   $bret=true;
		if(is_array($input_value))
		{
			foreach($input_value as $value)
			{
				if($value == $command_value)
				{
					$bret=false;
					$default_error_message = sprintf(E_VAL_DONTSEL_CHECK_FAILED,$variable_name);
					break;
				}
			}
		}
		else
		{
			if($command_value == $input_value)
			{
				$bret=false;
				$default_error_message = sprintf(E_VAL_DONTSEL_CHECK_FAILED,$variable_name);
			}
		}
	  return $bret;
	}



	function ValidateCommand($command,$command_value,$input_value,&$default_error_message,$variable_name,$formvariables)
	{
		$bret=true;
		switch($command)
		{
			case 'req':
						{
							$bret = $this->validate_req($input_value, $default_error_message,$variable_name);
							break;
						}

.....
}

?>

Nessun consiglio invece in merito al problema ???
vorrei eliminare la pagina di riepilogo e inserire direttamente il bottone paypal come submit del form... ho fatto un paio di esperimenti a riguardo ma trovo difficoltà ad inserire il suddetto bottone in modo corretto (soprattutto per fargli avviare il file conto.php, il quale genera le varibiali tra le quali $totale che vengono passate a paypal

Grazie, Matteo
 
Eccomi ancora qui... ho notato un altro errore:

sbaglio qualcosane nel controllo di validazione dei select... il modulo viene spedito alla pagina di riepilogo anche se non viene scelta la nazionalità!

in jquery ho messo

PHP:
...
        'nazione':{
            required: true,
            username_regex: true,
            },
...

e il relativo form:

PHP:
<div>
           <label for="nazione">Nazionalità:<b>*</b></label>
            <select id="nazione" name="nazione">
                <option>Seleziona</option>
                <option value="italia">Italia</option>
                <option value="estero">Estero</option>
            </select>
        </div>

Pensavo che non assegnando il campo value a "Seleziona" mi ritornasse errore ma evidentemente non è cosi...

Per ora ho provvisoriamente rimediato inserendo
<option value="italia">Seleziona</option>
cosi il calcolo del totale viene cmq fatto per il caso italiano...

Come dovrei impostare la validazione dei select in modo corretto?

Grazie
 
ciao
potresti mettere meglio
HTML:
<!-- ........ -->
<select id="nazione" name="nazione">
	<option value="">Seleziona</option>
	<option value="italia">Italia</option>
	<option value="estero">Estero</option>
</select>
<!-- ........... -->
poi per es.
PHP:
<?php
//...
if($_POST['nazione'] == ""){
	echo "nazione non selezioanata";
          //....
}
//....
?>
questo perchè se sbagli a dare il submit non ti fa il calcolo, se vuoi fare come hai detto tu ti basta
HTML:
<!-- ........ -->
<select id="nazione" name="nazione">
	<option value="italia">Italia</option>
	<option value="estero">Estero</option>
</select>
<!-- ........... -->
invii comunque italia
 
Hai ragione borgo!
La decisione di mettere la voce seleziona però... è nata dal fatto che se non imputo nessuna delle caselle a scelta multipla, il calcolo del totale con jquery nella pagina iniziale non inizia e qualcuno potrebbe procedere con il submint senza visualizzare il totale...

credo che ora opterò per un

if($_POST['nazione'] == ""){
echo "nazione non selezioanata";

anche se mi piacerebbe impostare il controllo anche in jquery... giusto per completezza

grazie!
 

Discussioni simili