Try changing:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surface->w,surface->h, 0, GL_RGB,GL_UNSIGNED_BYTE,surface->pixels);
To (if surface has alpha):
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surface->w,surface->h, 0, GL_RGBA,GL_UNSIGNED_BYTE,surface->pixels);
Or (if surface doesn't have alpha):
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, surface->w,surface->h, 0, GL_RGB,GL_UNSIGNED_BYTE,surface->pixels);