Programación Web y Scripting > PHP

 Verificar Datos De Un Campo Sin Enviarlos

<< < (3/4) > >>

DigitalUser:
Gracias por el tutorial.
Lo mirare detenidamente
Respecto a "encontrado", no lo he tocado, en el archivo original viene así.

el del $ es el de la consulta de PHP
el sin Dolar es el del script de AJAX

he probado hacer muchos cambios, pero no doy con el el clavo.

Gracias!

F_Tanori:
En la pagina Comprobador PHP se hace lo siguiente:


--- Código: Text ---    &#036;buscar=&#036;_GET['buscar'];   &#036;sSQL=&#34;SELECT count(*) FROM clientes WHERE ap_pat='&#036;buscar'&#34;;    &#036;rs = mysql_db_query(&#036;bd,&#036;sSQL);        &#036;encontrado=&#34;0&#34;;    &#036;encontrado=mysql_fetch_row(&#036;rs);    echo &#036;encontrado[0];   

Tomar el valor que viene como parametro en la variable buscar para realizar una consulta se genera la consulta
en una variable ($sSQL) y se Ejecuta (mysql_db_query...) la consulta se hace con Count(Funcion de SQL) y nos devuelve
la cantidad de veces que aparece la variable buscada ($buscar) en esa tabla (clientes) sera solo un registro y un campo
(count(*))tomamos el valor de ese registro ($encontrado=mysql_fetch_row($rs)) ahora nuestra variable $encontrado es
un arreglo que contiene el registro, pero como solo es uno y un solo campo :P, tomamos la posision inicial que es 0
($encontrado[0]) y la mandamos a imprimir en la pagina (echo $encontrado[0])

Se imprimira el valor de Count, supongamos que buscamos el cliente con apellido 'Tánori' :P y este apellido existe
en nuestra tabla una vez Count devuelve 1 que sera el valor que imprimiremos al final (echo $encontrado[0])

Al devolver los resultados a la pagina del cliennte desde donde se mando llamar (comprobador.php), osea desde
onchange="comprobar('comprobador.php?buscar='+this.value) (javascript)

la funcion comprobar estaria recibiendo ajax.responseText=1 porque fue lo que imprimimos en la página desde php(echo $encontrado[0])

Funcion comprobar

--- Código: Text --- ....  if(ajax.status==200)     {        encontrado= ajax.responseText&#62;0;         SINO=&#34; &#34;;         if (!encontrado)         {     SINO=&#34; no &#34;;         }          alert(&#34;El registro&#34;+ SINO +&#34;existe&#34;);          }....  

--- Código: Text --- ajax.status==200  Indica que si se cargo correctamente la pagina y esta Lista para devolver los resultados


--- Código: Text --- ajax.responseText  Son los datos recibidos que arroja la pagina que se mando llamar (en este caso comprobador PHP)

encontrado= ajax.responseText>0;
Como responseText en este ejemplo nos devuelve 1 encontrado es verdadero al resolverse ((ajax.responseText>0)=true)


--- Código: Text --- SINO=&#34; &#34;;  
Es una bandera para mostrar la palabra no :P


--- Código: Text --- if (!encontrado){ SINO=&#34; no &#34;;}  
!encontrado es igual que hacer esto encontrado==false en este caso solamente es una negación de la condición, operador ! (NOT)

Indica que si no es encontrado coloca la variable SINO=" no " que sera usada en el mensaje


--- Código: Text ---  alert(&#34;El registro&#34;+ SINO +&#34;existe&#34;);  
Sino esta vacio el mensaje que se muestra es "El registro existe" en caso contario "El registro no existe"
si lo quieres es que no se muestre el mensaje cuando el registro no existe y te permita continuar puedes hacer esto


--- Código: Text --- ....  if(ajax.status==200)     {        encontrado= ajax.responseText&#62;0;          if (encontrado)         {      alert(&#34;El registro ya existe,por favor intente de nuevo&#34;);      return false;         }      return true;                   }....  
Saludos, espero haberte confundido :P Ayudado


Saludos

Mollense:

--- Cita de: "DigitalUser" --- Gracias por el tutorial.
Lo mirare detenidamente
Respecto a "encontrado", no lo he tocado, en el archivo original viene así
--- Fin de la cita ---
Sí, tenés razón, pero lo acabo de probar y me funciona perfecto.-

Lo único que hice fue cambiar las variables
--- Código: Text ---&#036;bd=&#34;pruebas&#34;;  &#036;host=&#34;localhost&#34;;  &#036;user=&#34;root&#34;;  &#036;password=&#34;&#34;;  y la consulta SQL.
Pero si vos hiciste esto
--- Código: Text ---&#036;encontrado=&#34;1&#34;;   //&#036;encontrado=mysql_fetch_row(&#036;rs);  y sigue diciendo que no existe el problema no debe ser ese.-

Podrías intentar con esta función:
--- Código: Text ---function NuevoAjax(){  var ajaxs = [&#34;Msxml2.XMLHTTP&#34;,&#34;Msxml2.XMLHTTP.4.0&#34;,&#34;Msxml2.XMLH TTP.5.0&#34;,&#34;Msxml2.XMLHTTP.3.0&#34;,&#34;Microsoft.XMLHTTP&#34;];  var ajax = false;  for(var i=0&#59; !ajax && i&#60;ajaxs.length&#59; i++){    try{ ajax = new ActiveXObject(ajaxs); }    catch(e) { ajax = false; }  }  if(!ajax && typeof XMLHttpRequest!='undefined') {    ajax = new XMLHttpRequest();  }  return ajax;}  en vez de la que estás usando pero tampoco creo que sea eso.-

DigitalUser:
Los cambios que yo he realizado son los siguientes


--- Código: Text ---   &#036;bd=&#34;presupuestos&#34;;  &#036;host=&#34;localhost&#34;;  &#036;user=&#34;clientes&#34;;  &#036;password=&#34;&#34;;  
--- Código: Text ---   &#036;sSQL=&#34;SELECT count(*) FROM clientes WHERE NombClie='&#036;buscar'&#34;;  

he probado sustituir la función de NuevoAjax, pero estamos en las misma.

Gracias por todos.

La explicación esta de lujo, al igual que el interés por ayudarme, muchas gracias.

DigitalUser:
La una variable en la sentencia SQL,


--- Código: Text ---   &#036;sSQL=&#34;SELECT count(*) FROM clientes WHERE NombUsua='&#036;buscar'&#34;;  
yo lo pondría mejor así, para evitar cualquier fallo.


--- Código: Text ---   &#036;sSQL=&#34;SELECT count(*) FROM clientes WHERE NombUsua='&#34;.&#036;buscar.&#34;'&#34;;  
aunque he probado el siguiente código para para ver los resultados


--- Código: Text ---&#60;?php &#036;buscar=&#34;ok&#34;;   &#036;sSQL1=&#34;SELECT count(*) FROM clientes WHERE NombUsua='&#036;buscar'&#34;;  echo &#036;sSQL1;echo &#34;&#60;br&#62;&#34;;   &#036;sSQL2=&#34;SELECT count(*) FROM clientes WHERE NombUsua='&#34;.&#036;buscar.&#34;'&#34;;  echo &#036;sSQL2;?&#62; 
y obtengo el mismo resultado.
Entonces este último no tiene nada que ver.

Me vais a tener que perdonar si os vuelvo loco un poco, pero la verdad que no se porque no me funciona como debería.

Gracias nuevamente

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa