Tema: Validacion!
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/05/2006, 10:57
Avatar de DjFaramir
DjFaramir
 
Fecha de Ingreso: febrero-2003
Ubicación: La Plata, Buenos Aires, Argentina
Mensajes: 131
Antigüedad: 21 años, 2 meses
Puntos: 0
Busqueda

veamos...

hay un codigo para manejar el objeto ajax que publicaron en uno de los post de este foro que es el que voy a usar para mostrarte una forma...

Código PHP:
function consultar(paginarespuestametodovariables){
  
// Podríamos indicar que estamos cargando los datos.... que espere
  // document.getElementById(respuesta).innerHTML = 'Cargando datos...';
  // Preparación de la variable 'pagina' en caso de que se haga uso del metodo GET
if(metodo == 'GET'){
    
pagina pagina '?' variables;
  }
  else{
    if(
metodo == ''){
      
metodo 'POST';
    }
  }
  
// Compatibilidad con FireFox, Opera y cualquier otro BUEN navegador
  
if(typeof(XMLHttpRequest) != 'undefined'){
    try{
      var 
satelite = new XMLHttpRequest();
    }
    catch(
e){ }
  }
  else{
    
// Compatibilidad para el navegador más ASQUEROSO del planeta [ IE ]
    
try{
      var 
satelite = new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch(
e){
      var 
satelite = new ActiveXObject('Msxml2.XMLHTTP');
    }
  }
  
// una vez incializado el objeto y definido en el contexto de nuestro script
  // Intentaremos abrir la conexión a la dirección indicada por la variable 'pagina'
  
try{
    
// esto bien podría cambiar a "satelite.open('GET',pagina,true);" si se desea pasar los datos mediante método GET
    
satelite.open(metodo,pagina,true);
  }
  catch(
e){
    return 
false;
  }
  
// Esta variable envía una cabecera indicando que enviaremos los datos método 'post' en forma urlencoded
  // ejemplo ("mi_variable=cosa&otra_variable=otra_cosa");
  
satelite.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
  
// Enviamos los datos 'elementos'
  
satelite.send(variables);
  try{
    
// Justo cuando el estatus de la petición cambia esperamos a que sea igual a 4 que es igual a OK.
    
satelite.onreadystatechange = function(){
      if(
satelite.readyState == 4){
        
// ¡¡¡ Listo !!!, ahora ya tenemos el resultado y podemos acceder a él desde 'satelite.responseText'
        // El resultado lo vamos a escribir en el elemento 'respuesta' ...
        
document.getElementById(respuesta).innerHTML satelite.responseText
      
}
    }
  }
  catch(
e){
    return 
false;
  }
  return 
true;

(mi conocimiento de javascript es minimo, asi que quizas son rebuscadas las soluciones, seria cuestion de limpiarlas si estas mas al tanto)

ese seria nuestro objeto el cual procesaria las variables que le envies, pero primero deberias consguir las variables que los campos... asi que una funcion chiquita...

Código PHP:
function armado(pagina,div){
_respuesta div
_pagina 
pagina
_campo1 
document.getElementById("campo1").value
_campo2 
document.getElementById("campo2").value
variables
="campo1="+_campo1+"&campo2="+_campo2

consultar
(_pagina,_respuesta,"GET",variables);
}; 
donde pagina es la pagina php que procesara los datos... y div es donde se mostrara (en este caso no seria ninguno, pero te lo paso como lo uso yo si precisas mostrar algo mas en un lugar especifico)

a esa funcion la llamas desde el onBlur... onblur='armado("validacion.php","");'

entonces en el php de validacion recibirias las variables en php para poder hacer todas las comparaciones...

Código PHP:
<?php
$campo1
=$_GET["campo1"];
$campo2=$_GET["campo2"];

$radicado=mysql_query("SELECT numero FROM planilla"
$radicado1mysql_fetch_array($radicado);                    
$radicado2$radicado1['numero'];
$largo=strlen(trim($campo1));
$campo2=trim($campo2);
if ((
$campo1 != "" ) and ($campo2 != "") and ($largo >= 6) and ($campo1  != $radicado2)){
         if (
is_int($campo1)){
               echo 
"true";
         }else{
               echo 
"false";
}else{
echo 
"false";
};
ahi ya tendriamos un resultado, el satelite.responseText devolvera el texto que salga en validacion.php... que va a ser false en caso de no cumplir los requisitos... asi que ya tendriamos sobre que trabajar...

volvamos al objeto... pero a la ultima funcion nomas...

Código PHP:
satelite.onreadystatechange = function(){
      if(
satelite.readyState == 4){
        
// ¡¡¡ Listo !!!, ahora ya tenemos el resultado y podemos acceder a él desde 'satelite.responseText'
        // El resultado lo vamos a escribir en el elemento 'respuesta' ...
        
document.getElementById(respuesta).innerHTML satelite.responseText
      
}
    } 
a esto si en vez de decirlo que lo muestre le hacemos una verificacion...

asi que en vez de
Código PHP:
document.getElementById(respuesta).innerHTML satelite.responseText 
ponemos

Código PHP:
if (satelite.respondeText == "false") {
                  
alert("DEBE CAPTURAR UN VALOR VALIDO EN '+campo2")
                  
campo1.focus()

Deberia generar el alert que estas buscando con los datos validados...


CREO que con esto ya deberia darte un resultado, lo hice recien en el momento quizas puede haber algun error de escritura en el codigo pero la logica seria esa... como no te lo podia explicar con palabras de una manera entendible lo pase en modo practico...

proba y modifica :P
__________________
See you... y Tolkien... mucho Tolkien...