Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   validar cantidad de producto con ajax (https://www.clubdelphi.com/foros/showthread.php?t=52181)

richy08 12-01-2008 20:22:17

validar cantidad de producto con ajax
 
Buenos dias compañeros tengo el siguiente problema, quiero validar en un form que cuando un usuario eliga un producto al poner la cantidad del producto que quiera la pagina verifique en la base de datos si la cantidad tecleada es menor o igual al stock, lo quiero hacer con ajax, pero por mas que busco en foros y foros no encuentro ni una pista de como lograrlo, alguien me puede dar una manita de antemano gracias por cualquier comentario

dec 12-01-2008 20:52:53

Hola,

Si no sabes lo que es el objeto XMLHttpRequest, en este artículo de la Wikipedia se explica más o menos. Para trabajar con este objeto, personalmente, desde que descubrí jQuery no he descubierto cosa mejor. Con jQuery puedes tratar con el objeto susomentado de forma transparente y bastante sencilla. Tienes cierta documentación de jQuery en Visual jQuery. Fíjate que hay un apartado dedicado a "AJAX". Si tienes algún problema avisa.

droguerman 13-01-2008 07:08:13

yo uso esta libreria, es bastante fácil para lo que necesitas:
http://www.marciobarrios.com/ejemplo-ajax

básicamente lo que tienes que hacer es que tu página validadora (existe esa palabra?) escriba un valor cualquiera (puede ser por ejemplo 1 si hay stock o 0 si no lo hay) leer ese valor y obrar según sea necesario


saludos

jfontane 14-01-2008 23:10:58

Cualquier cosa pone algo de codigo para ver cual es el problema que tenes. Es dificil arrancar pero despues uno se acostumbra con el ajax.
Lo que estas planteando no es muy complicado asi que esperamos que expongas algo para poder ayudarte.


salu2

richy08 14-01-2008 23:15:29

gracias jfontane espero y me acostumbre rapido y pronto es pondre algun avamce

Emilio 14-01-2008 23:28:50

Cita:

Empezado por richy08 (Mensaje 257767)
lo quiero hacer con ajax, pero por mas que busco en foros y foros no encuentro ni una pista de como lograrlo, alguien me puede dar una manita de antemano gracias por cualquier comentario

Hace unos días puse un pequeño ejemplo, sólo tendrías que adaptarlo un poco olvidándote del HTML que contiene, dejando los scripts y hacer algo así...

Código PHP:

<input type="text" name="cantidad" onkeyup="stock(this.value)"

La función stock() lanzaría el objeto Ajax, luego sólo es cuestión de colocar un letrerillo que diga "No hay stock" en caso de sobrepasarlo.

También podrías hacerlo sin Ajax si puedes recoger el valor del stock al realizar la consulta para mostrar los artículos, simplemente comprobando si el valor de text es mayor que el valor guardado en un campo oculto.

Yo creo que eso lo puedes hacer de muchas formas.

richy08 17-01-2008 17:40:33

buenos dias compañeros debido al poco tiempo libre que tengo me tarde en contestar pero aqui tengo un ejemplo que baje de la web que trate de adaptar como dios me dio a entender:p expongo el codigo para ver si alguien me puede ayudar con el error estuve tratandolo de corre con una libreria 0.5 beta pero debido a que me marcaba un error al querer mandar llamar este metodo $xajax->processRequests(); opte por usar una libre ria mas vieja que es estable que es la 2.0.3 el codigo es el siguiente
Código PHP:

<?php
require ('xajax/xajax.inc.php');
?>

<?php
//conecto con la base de datos
$connectid mysql_connect("localhost""root""") OR die(mysql_error());
mysql_select_db("companyweb");
function 
validar_pais($nombre_pais)
{
   if (
strlen($nombre_pais)<2)
   {
      
$campo_validacion "Debes escribir al menos dos letras del campo país.";
   }else
    {
      
$ssql "select * from sitiempleados where sFirstName like '%$nombre_pais%'";
      echo 
$ssql;
      
$rs mysql_query($ssql);
      if (
mysql_num_rows($rs)==0)
      {
         
$campo_validacion "No he encontrado países con ese nombre";
      }else
       {
         
$campo_validacion "<i>Se encontraron " mysql_num_rows($rs) . " posibles países.</i>";
         
$campo_validacion .= '<div style="margin:3px;">';
         while (
$fila mysql_fetch_object($rs))
         {
            
$campo_validacion .= "<a style='cursor:pointer;text-decoration:underline; color:#0000ff;' onclick='selecciona_pais(\"" $fila->nombre_pais "\");'>";
            
$campo_validacion .= $fila->nombre_pais '</a><br>';
         }
         
$campo_validacion .= '</div>';
      }
   }
   
$campo_validacion '<div style="border: 2px solid #0000cc; font-size: 8pt; padding:5px; margin-top:10px; width: 300px;">' $campo_validacion '</div>';
   
$respuesta = new xajaxResponse();
   
$respuesta->addAssign("validador_pais","innerHTML",$campo_validacion);
   return 
$respuesta;
}

function 
procesar_formulario($formulario)
{
   
$respuesta = new xajaxResponse();
   if (!isset(
$formulario["nombre_validado"]))
   {
      
$respuesta->addAssign("validador_pais","innerHTML",'<div style="border: 2px solid #cc0000; font-size: 8pt; padding:5px; margin-top:10px; width: 300px;">Tienes que validar el país.</div>');
   }else{
      
$respuesta->addAssign("todo_formulario","innerHTML",'Todo correcto!');
   }
   return 
$respuesta;
}

//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
//$xajax->debugon()

//registramos funciones
$xajax->registerFunction("validar_pais");
$xajax->registerFunction("procesar_formulario");
//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequests();
?>
 
 

<html>
<head>
   <title>Validador campo formulario online</title>
   <?php
   
//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
   
$xajax->printJavascript("xajax/");
   
?>
   <script>
   function selecciona_pais(nombre){
      document.f1.nombre_pais.value=nombre
      document.getElementById("validador_pais").innerHTML='<div style="border: 2px solid #00cc00; font-size: 8pt; padding:5px; margin-top:10px; width: 300px;">Validado correctamente</div>';
      document.getElementById("input_pais").innerHTML='<input type="hidden" name="nombre_validado" value="' + nombre + '">' + nombre
   }
   </script>
</head>
<body style="font-family: arial, verdana;">
<div id="todo_formulario">
   <form action="#" method="post" name="f1" id="f1">
   <div id="input_pais">
      Nombre país: <input type="text" name="nombre_pais"> <a style='cursor:pointer;text-decoration:underline; color:#0000ff;' onclick="xajax_validar_pais(document.f1.nombre_pais.value);">Validar pais</a>
   </div>
   <div id="validador_pais"></div>
   <p>
   Año de visita: <input type="text" name="ano" size="8">
   <p>
   <input type="button" onclick="xajax_procesar_formulario(xajax.getFormValues('f1'))" value="Enviar">
   </form>
</div>
<?php
?>
</body>
</html>

con la nueva libreria me dejo de marcar el error no se por que pero ahora me tira el siguiente error alguien me puede decir por que de antemano gracias:)
---------------------------
Microsoft Internet Explorer
---------------------------
Error: the server returned the following HTTP status: 404
Received:
No input file specified.
---------------------------
OK
---------------------------


La franja horaria es GMT +2. Ahora son las 07:11:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi