18.02.2017, 08:12
Код:
forward bool:checkmail(mail[]); public bool:checkmail(mail[]) { // la query mide 47 bytes, y 128 es el tamano maximo de inputtext. podes achicarlo pero deberas chequear el len de inputtext en ondialogresponse new consulta[47+128]; mysql_format(base_datos, consulta, sizeof(consulta), "SELECT `mail` FROM `usuarios` WHERE `mail` = '%e'", mail); new Cache:cache = mysql_query(base_datos, consulta, true); // con el tercer parametro "true" le indicamos a la funcion que guarde resultado en cache. nos retorna el identificador del cache para despues liberar la memoria new resultado = cache_num_rows(); // guardamos el numero de filas devueltas para poder borrar el cache antes de retornar el resultado de la funcion cache_delete(cache); // liberamos la memoria que ocupo el cache if(resultado > 0) return false; // si la query nos devolvio algun resultado, el mail ya esta registrado, retornamos false (mail inutilizable) else return true; // de lo contrario, true (mail ok) }
if(!checkmail(inputtext)) return ShowPlayerDialog(playerid, IDDETUDIALOGO, DIALOG_STYLE_MSGBOX, "blabla", "el mail ya esta registrado", "volver a intentar", "");// (previamente habiendo chequeado que sea un mail valido)
no lo probe, y hace bastante tiempo que no programo en pawn. pero deberia funcionar. en cualquier caso avisame y lo arreglamos.
EDIT: tene en cuenta que debes cambiar algunas cosas en el codigo de la funcion. `mail` cambialo por el nombre del campo de mail en tu base de datos, lo mismo con `usuarios`. base_datos cambialo por el handle de tu base de datos en tu gamemode. y IDDETUDIALOGO cambialo por el id del dialogo donde el user ingresa su email.