you have to depthsort.
it looks bad because if you draw a quad here and then another quad a bit farther behind, this will appear broken.
the z-buffer in fact decides if a fragment can pass or is to be discarded.
the best way is to depth sorth in back to front order the alpha blended primitives, or else in front to back order but with depth buffer test disabled.
it all depends on what you have to do with these quads.
another way could be to use the alpha test capability of gl.
polygons will appear broken the same, but this way is less noticeable.
to activate alpha test, do:
fragments with a alpha component of 0 won’t be rendered, so the completely transparent parts of your textures (if you’re using texturing, of course) will be invisible.