Hola, muchachos, no soy programador asi que necesito una mano por que este script esta muuy lejos de mis capacidades
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)
Se puede o me busco otro?