Page 1 sur 1

Je n'arrive pas à envoyer les données dans la BDD

Posté : 10 oct. 2012, 18:45
par Crétinustotalus
Bonjour,

J'ai un problème. Je n'arrive pas à envoyer des données venant d'un formulaire dans ma base de données. Voici mon code :
<?php
session_start();

try
{
	$db = new PDO('mysql:host=localhost;dbname=schoolfails', 'root', 'root');
}
catch (Exception $error)
{
	die('Erreur :' . $error->getMessage());
}

require_once('recaptcha-php-1.11/recaptchalib.php');
$privatekey = 'ghdfgdgd3_gfgefsDjhjhgfli';
$resp = recaptcha_check_answer($privatekey, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']);

$requete = $db->prepare('SELECT * FROM membres WHERE email = ? AND pseudo = ?');
$requete->execute(array($_POST['email'], $_POST['pseudo']));
$donnees = $requete->fetch();

if ($requete->rowCount < 1)
{
	if (!empty($_POST['pseudo']) AND !empty($_POST['email']) AND !empty($_POST['password']) AND !empty($_POST['password_bis']) AND $_POST['sexe'] == 'Homme' OR $_POST['sexe'] == 'Femme' OR $_POST['sexe'] == 'Autre')
	{
		if (preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#', $_POST['email']))
		{
			if ($_POST['password'] == $_POST['password_bis'])
			{

				if ($resp->is_valid)
				{
  					$request = $db->prepare('INSERT INTO membres(adresse_email, pseudo, password, sexe) VALUES(?, ?, ?, ?') or die(print_r($db->errorInfo));
  					$request->execute(array($_POST['adresse_email'], $_POST['pseudo'], sha1($_POST['password']), $_POST['sexe']));

  					$_SESSION['id_membre'] = $db->lastInsertId();
  					$request->closeCursor();
				}
				else
				{
					header('Location: inscription.php?error=5');
				}
			}
			else
			{
				header('Location: inscription.php?error=4');
			}
		}
		else
		{
			header('Location: inscription.php?error=3');
		}
	}
	else
	{
		header('Location: inscription.php?error=2');
	}
}
else
{
	header('Location: inscription.php?error=1');
}

$requete->closeCursor();
?>
Je ne comprends pas, ça ne marche pas du tout !
Merci d'avance pour votre aide.

Re: Je n'arrive pas à envoyer les données dans la BDD

Posté : 10 oct. 2012, 19:11
par sirakawa
1) revoir le parenthésage. mais ces expressions booléennes complexes sont dfficiles à exprimer juste. Il faudrait en faire la table de vérité, ce que j'ai la flegme de faire...
2) Plus simple et plus facile à maîtriser
3) pour simplifier les tests, on pouaarit mettre dans le formulaire:
<label>Homme</label><input type ='radio' selected = 'selected'  value ='1' />
<label>Femme</label><input type ='radio' value ='2' />
au lieu, comme je suppose que tu as fait d'y mettre un
<input type='text' value ='' />
ce qui dispenserait du test sur le sexe... et si tu tiens au troisième sexe, tu ajoutes un
<label>Sexe indéfin</label><input type ='radio' value ='3' />
if (empty ($_POST['pseudo'])) 
{
  //message d'erreur et lien pour revenir en arrière ou die(); ou exit();
}
else
{ 
	$pseudo = $_POST['pseudo'];
	if (empty ($_POST['email'])) 
 	{
  		//message d'erreur et lien pour revenir en arrière ou die(); ou exit();
 	}
 	else
 	{
 		$email = $_POST['email'];
 	}
 	etc...

}