Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: sirkiu en 12 Diciembre 2015, 09:44 am



Título: No permitir duplicados
Publicado por: sirkiu en 12 Diciembre 2015, 09:44 am
Estoy creando un portal de anuncios clasificados y quiero evitar que pongan anuncios duplicados, para ello no voy a permitir que ni el título, ni la descripción se puedan poner si ya existen en la bd.

Lo que he visto para hacerlo es esto http://www.forosdelweb.com/f18/prevenir-registros-duplicados-php-249081/

Alguien sabe como podría hacerlo en tiempo real, es decir, que si escribo el título, al pasar al campo siguiente me salga un mensaje avisandome que ese texto ya existe y tengo que modificarlo.


Título: Re: No permitir duplicados
Publicado por: gAb1 en 12 Diciembre 2015, 19:15 pm
Los títulos y descripción se escriben y va a ser algo dificil compararlos, más bien se podria comparar palabras, tal y como hace la web stackoverflow, cuando vas a poner el título aparecen preguntas similares. No es lo que quieres, pero de otra manera se van a subir anuncios duplicados (aunque no tengan el mismo título o descripción).

Para ello necesitarás Ajax (http://api.jquery.com/jquery.ajax/). Crea un script php que haga el select y compare (post o get). Luego haces otro script, con javascript o jquery para mandar el texto a comparar y, depende como lo quieras hacer, muestras o no el mensaje de error.

Nunca he hecho algo así en ajax, pero debe ser muy simple: El trigger podría ser el focus del campo de texto tal y como has dicho: al pasar al campo siguiente se le hace focus y puede usarse como trigger (activar el script).

Código
  1. $selector // body o parent
  2.  
  3. .on('focus.inputtext', function() {
  4.    // aquí harias el ajax request
  5.    // yo usaría post en lugar de get
  6. })
  7.  
  8. .on('otro', 'selector', function() {
  9.    // si necesitas hacer cualquier otra cosa
  10. });

Lo hago así porque si vas a trabajar con elementos dinamicos es mejor usar on() que siempre funciona.

Tendrás que pensar de que manera vas a comparar, no te recomiendo comparar solo el título entero.