Este script esta diseñado para procesar un form que tiene un monton de valores, por lo que quiero separarlo. esto lo hago en una plantilla que usa smarty, y a traves de un foreach, pero hasta ahí llega mi genialidad
Dividí el form en paginas, ej: pagina1 para editar los datos de ingreso, como mail usuario y contraseña. Y en la pagina2 el nombre apellidos y telefonos.
Pero si quiero editar los valores de la pagina2, este script arroja un error porque los valores de la pagina1, que son obligatorios (o requeridos) no se han enviado, y por supuesto que no se envian porque no están incluidos en la pagina2
Como puedo hacer que compruebe los datos requeridos incluidos en cada pagina, y no los de otra? o sea, que compruebe solo, y solo si el valor a sido enviado?.
este es el codigo:
Código PHP:
$defnsbyname = $this->GetPropertyDefns();
// Get member groups
$groups = $this->GetMemberGroupsArray($uid);
// Get group property relations into a union.
$properties = array();
{
$tmp = array();
foreach( $groups as $onegroup )
{
$proprelations = $this->GetGroupPropertyRelations( $onegroup['groupid'] );
$tmp = RRUtils::array_merge_by_name_required( $tmp, $proprelations );
uasort( $tmp, array('cge_array','compare_elements_by_sortorder_key') );
}
$properties = cge_array::to_hash($tmp,'name');
}
// do validation of the fields.
foreach( $properties as $propname => $prop )
{
$fldtype = $defnsbyname[$propname]['type'];
$required = ($prop['required'] == 2);
switch( $fldtype )
{
case '0': /* text */
if( $required )
{
if( !isset($params['feu_input_'.$propname]) ||
empty($params['feu_input_'.$propname]) )
{
$params['error'] = 1;
$params['message'] = $this->Lang('error_invalidemailaddress').' '.$result[1];
$this->Redirect( $id, 'changesettings', $returnid, $params );
}
}
break;
case '2': /* email */
if( $required )
{
if( !isset($params['feu_input_'.$propname]) )
{
$params['error'] = 1;
$params['message'] = $this->Lang('error_invalidemailaddress').' '.$result[1];
$this->Redirect( $id, 'changesettings', $returnid, $params );
}
else
{
$result = $this->IsValidEmailAddress( $params['feu_input_'.$propname], $uid );
if( $result[0] == false )
{
$params['error'] = 1;
$params['message'] = $this->Lang('error_invalidemailaddress').' '.$result[1];
$this->Redirect( $id, 'changesettings', $returnid, $params );
}
}
}
break;
y asi sigue para cada cosa (area de texto, listas, radio botones, check box, etc)