I am making a 3d walkaround in OpenGL...and some of the classes are not working right...

Code:
struct FACE {

	GLuint *myTexture;
	double myX[4], myY[4], myZ[4];
	double myRGB[3];
	bool doesExist;

	FACE ( )
	{
		for(int x = 0; x < 4; x++)
		{
			myX[x] = 0;
			myY[x] = 0;
			myZ[x] = 0;
			if(x < 3) myRGB[x] = 0;
		}		
		myTexture = NULL;
		doesExist = true;
	}

	void DrawFace ( void )
	{		
		glNormal3f( 0.0f, 0.0f, 1.0f);					// Normal Pointing Towards Viewer
		glTexCoord2f(myX[0], myY[0]); glVertex3f(myX[0], myY[0], myZ[0]);	// Point 1 
		glTexCoord2f(myX[1], myY[1]); glVertex3f(myX[1], myY[1], myZ[1]);	// Point 2 
		glTexCoord2f(myX[2], myY[2]); glVertex3f(myX[2], myY[2], myZ[2]);	// Point 3 
		glTexCoord2f(myX[3], myY[3]); glVertex3f(myX[3], myY[3], myZ[3]);	// Point 4 
	}		

};


struct BLOCK_DTP
{
	FACE *myFace[6];		
	ifstream myLoad;	

	BLOCK_DTP ( ) 
	{
		for(int x = 0; x < 6; x++)
		{
			myFace[x] = new FACE;
		}
	}

	void LoadFaces ( char *filename )
	{
		myLoad.open(filename);		

		for(int x = 0; !myLoad.eof(); x++)
		{
			myLoad	>> myFace[x]->myX[0]
					>> myFace[x]->myX[1]
					>> myFace[x]->myX[2]
					>> myFace[x]->myX[3];
			myLoad	>> myFace[x]->myY[0]
					>> myFace[x]->myY[1]
					>> myFace[x]->myY[2]
					>> myFace[x]->myY[3];
			myLoad	>> myFace[x]->myZ[0]
					>> myFace[x]->myZ[1]
					>> myFace[x]->myZ[2]
					>> myFace[x]->myZ[3];
		}
	}

	void DisplayFaces ( void )
	{
		for(int x = 0; x < 6; x++)
		{
			if(myFace[x]->doesExist)
			{
				myFace[x]->DrawFace();
			}
		}
	}
	
};
Assume that all texture loading and glBegin and glEnd happen OUTSIDE of any and all of the drawing functions. For some reason it is only drawing 3 faces of the cube that it is supposed to draw, and it is not even drawing those correctly. It is loading the texture 4 times onto 1 face, and then the other 2 faces are an odd distortion of the texture.