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

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 = "[email protected]";

$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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

idkfa46

Utente Attivo
17 Ott 2010
40
0
0
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
 

idkfa46

Utente Attivo
17 Ott 2010
40
0
0
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

idkfa46

Utente Attivo
17 Ott 2010
40
0
0
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
Autore Titolo Forum Risposte Data
S passare un valore da un form a un file .php con metodo post PHP 4
K Form che manda dati doppi PHP 1
K Problema form update PHP 2
Elisacau [Contact form 7] Inserire Numero auto incrementante WordPress 1
K form Inserimento record mysql PHP 2
I Form con selettore HTML e CSS 0
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
D Form contatti non funzionante HTML e CSS 0
A Stampare dati da form PHP 8
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
I Form HTML e CSS 17
otto9due $_FILE non passa i dati dal form PHP 1
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
felino Form action costum e parametri in queryString WordPress 1
M Come recuperare molteplici input form PHP 1
M Collegamento tra form html e script php PHP 4
L form immagini per il database PHP 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
L inserimento form dati multipli ? PHP 0
L Problemi form Pagina php HTML e CSS 3
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
D Devo far funzionare un form di contatti PHP 4
B form gestione input PHP 2
V PHP form intersecate PHP 0
8 Javascript - PDF Form Javascript 0
J Form inserimento dati in database Ajax 1
E Gestione profilo utente tramite Form PHP 3
R [C#] Form principale si blocca mentre un altro Thread lavora .NET Framework 0
M Problema con controllo form in real time jQuery 6
D Form validazione Javascript 2
R form recovery pass PHP 0
V Symfony e i form PHP 3
M form con checkbox PHP 8
S come aggiustare un form di contatto? HTML e CSS 3
F query e form con select multipla PHP 17
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
A Inserimento dati nel database tramite form + altre operazioni PHP 18
websilvia Contact form using Bootstrap 3.3.4 PHP 8
Alex_70 Button non funziona nella form PHP 2
C Form email php su pagina index.html? PHP 21
W Rinominare Documenti Con Form Asp Classic ASP 9
S Invio email da form PHP 8
L form multipla php sql,errore in inserimento MySQL 0
L inviare i dati di un form ad un database PHP 6
L Collegare un form html ad un database access Javascript 2

Discussioni simili