Bonjour tout le monde!

J'ai un problème sur une page de mon site, elle gère les inscriptions sur le site en question... Jusque là, tout va bien, sauf que!
J'ai mis des conditions (un peu partout je l'avoue) qui ne font pas leur travail... (du moins, celui espéré)

Voici le code de la page :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
<?php 
try
{
	$bdd = new PDO('mysql:host=localhost;dbname=asbl;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
//En cas d'erreur, on affiche un message et on arrête tout
	die('Erreur : '.$e->getMessage());
}
 
// Si la bd s'ouvre, on continue
// Vérification de la validité des informations
if(isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['mail']) AND isset($_POST['pass']) AND isset($_POST['pass2']))
{
	$mail = htmlspecialchars($_POST['mail']);
	$nom = htmlspecialchars($_POST['nom']);
	$prenom = htmlspecialchars($_POST['prenom']);
	$pass = htmlspecialchars($_POST['pass']);
	$pass2 = htmlspecialchars($_POST['pass2']);
 
	if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail']))
    {
        $reponse = $bdd->prepare('SELECT email FROM membres WHERE email = :mail');
 
		if(!$reponse->execute(array( 'mail' => $mail)))
		{
				//echo "L'adresse email saisie existe déjà";
				header('Location: connexion.php?error=existEmail');
		}
 
		if($_POST['pass'] == $_POST['pass2'])
		{
			// Hachage du mot de passe
			$pass_hache = sha1($_POST['pass']);
 
			// Insertion
			$req = $bdd->prepare('INSERT INTO membres(nom, prenom, email, pass, membreASBL) VALUES(:nom, :prenom, :mail, :pass, 0)');
			$req->execute(array(
   				'nom' => $nom,
   				'prenom' => $prenom,
   				'mail' => $mail,
   				'pass' => $pass_hache));
		}
		else
		{
			//echo "Les mots de passe ne sont pas identiques";
			header('Location: inscription.php?error=passwordMismatch');
		}
   }
   else
   {
       //echo "L'adresse " . $_POST['mail'] . " n'est pas valide, recommencez !";
       header('Location: inscription.php?error=invalidEmail');
   }
 
	//Inscription réussie
	header('Location: accueil.php?error=InscripOK');
}
else // Il manque des paramètres, on avertit le visiteur
{
	//echo 'Veuillez remplir tous les champs du formulaire';
	header('Location: inscription.php?error=emptyField');
}
J'ai des problèmes pour plusieurs choses comme le fait que si tous les champs ne sont pas remplis, je n'est pas de message d'erreur (ligne 15), la page continue de s'exécuter, si l'email existe déjà (ligne 27), je ne suis pas redirigé non plus, si les mots de passe ne coïncident pas (ligne 33)...
Je ne sais pas si le problème vient du code en lui-même ou si ca vient de la base de données :/