I am learning OpenGL 4.0 and want to draw a simple triangle using OpenGL 4.0 and GLSL. I am using VAO with alternating arrays to do this, but the result it displays is not what I want:

Now I am sending part of my code:
void SceneBasic::setupVAOInterleavedArrays()
{
float positionAndColorData[] = {
-0.8f, -0.8f, 0.0f,1.0f, 0.0f, 0.0f,
0.8f, -0.8f, 0.0f,0.0f, 1.0f, 0.0f,
0.0f, 0.8f, 0.0f,0.0f, 0.0f, 1.0f };
GLuint vboHandle;
glGenBuffers(1,&vboHandle);
glBindBuffer(GL_ARRAY_BUFFER,vboHandle);
glBufferData(GL_ARRAY_BUFFER,18 * sizeof(float),
positionAndColorData,GL_STATIC_DRAW);
glGenVertexArrays(1,&vaoHandle);
glBindVertexArray(vaoHandle);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER,vboHandle);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,3 * sizeof(float),BUFFER_OFFSET(0));
glBindBuffer(GL_ARRAY_BUFFER,vboHandle);
glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,3 * sizeof(float),BUFFER_OFFSET(3 * sizeof(float)));
}
void SceneBasic::initScene()
{
compileAndLinkShader();
setupVAOInterleavedArrays();
}
void SceneBasic::render()
{
glClear(GL_COLOR_BUFFER_BIT);
glBindVertexArray(vaoHandle);
glDrawArrays(GL_TRIANGLES,0,3);
glBindVertexArray(0);
}
But if I do not use a striped array, the result will be right:

This is part of my code when I do not use striped arrays:
void SceneBasic::setupVAO()
{
float positionData[] = {
-0.8f, -0.8f, 0.0f,
0.8f, -0.8f, 0.0f,
0.0f, 0.8f, 0.0f };
float colorData[] = {
1.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 1.0f };
glGenBuffers(2,vboHandles);
GLuint positionBufferHandle = vboHandles[0];
GLuint colorBufferHandle = vboHandles[1];
glBindBuffer(GL_ARRAY_BUFFER,positionBufferHandle);
glBufferData(GL_ARRAY_BUFFER,9 * sizeof(float),
positionData,GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,colorBufferHandle);
glBufferData(GL_ARRAY_BUFFER,9 * sizeof(float),
colorData,GL_STATIC_DRAW);
glGenVertexArrays(1,&vaoHandle);
glBindVertexArray(vaoHandle);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER,positionBufferHandle);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,BUFFER_OFFSET(0));
glBindBuffer(GL_ARRAY_BUFFER,colorBufferHandle);
glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,0,BUFFER_OFFSET(0));
}
I am so curious why my code does not give the expected result when using alternating arrays?