IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Aucun enregistrement en BDD et aucune erreur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Aucun enregistrement en BDD et aucune erreur
    Bonjour,
    J'ai un petit souci avec un script tout simple!
    Après envoie du formulaire, j'arrive bien à "Inscription réussi" sauf que je n'ai rien d'enregistré.
    Voici donc 3 scripts:
    Ma connexion à la BDD
    Code php : 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
     
    if ($_SERVER['SERVER_NAME'] == 'localhost') {
    	$HOST = 'localhost';
    	$USER = 'site';
    	$PASSWORD = 'password';
    	$DB = 'site';
     
    }
    else {
    	$HOST = 'localhost';
    	$USER = 'site';
    	$PASSWORD = 'password';
    	$DB = 'site';
    }
     
    	try {
    		$connexion = new PDO('mysql:host'.$HOST.';dbname='.$DB , $USER , $PASSWORD);
     
    	}
    	catch (Exception $erreur) {
    		echo 'Erreur : '.$erreur->getMessage().'<br />';
            echo 'N° : '.$erreur->getCode();
     
    	}

    Ma BDD:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TABLE IF NOT EXISTS `membres` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `pseudo` varchar(20) NOT NULL,
      `password` varchar(40) NOT NULL,
      `email` varchar(50) NOT NULL,
      `date` datetime NOT NULL,
      `ip` varchar(15) NOT NULL,
      `ip_inscription` varchar(15) NOT NULL,
      `rang` varchar(20) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

    Et enfin mon script d'inscription
    Code php : 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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    <div id="left">
    			<h2><a href="#">Inscription</a></h2>
     
    			<p>Vous souhaitez donc vous inscrire sur le site <?php echo ucfirst($NOMDUSITE); ?> ce qui &agrave; notre go&ucirc;t est une tr&egrave;s bonne chose.</p>
    			<p>En faisant ceci, vous pourrez participer &agrave; la vie du site, poster des commentaires, &eacute;crire des articles, traduire des phrases ou tout simplement être inform&eacute; de l'&eacute;volution de ce site!</p>
    			<p>En route pour l'aventure!</p>
    			<?php if($inscription_open) { ?>
    				<form method="POST" action="#">
    				<?php 
    				require_once('./fonctions/general.php');
     
     
     
     
     
    				if (!empty($_POST['pseudo']) AND !empty($_POST['password1']) AND !empty($_POST['password2']) AND !empty($_POST['email'])) {
    						$i = 0;
     
    						//qq verifications de routines
    						if (strlen($_POST['password1']) < 6 ) { echo '<p class="error">Le password doit avoir une longeur supérieur à 6</p>'; $i++;  }
    						$password1 = sha1($_POST['password1']);
    						$password2 = sha1($_POST['password2']);	
    						if (strlen($_POST['pseudo']) < 3 ) { echo '<p class="error">Le pseudo doit être supérieur ou égal à 3 caractères</p>'; $i++; }
    						if (strlen($_POST['pseudo']) >= 17 ) { echo '<p class="error">Le pseudo doit être inférieur ou égal à 17 caractères</p>'; $i++; }
    						if ($password1 != $password2) { echo '<p class="error">Les passwords doivent être identique</p>'; $i++;}
    						if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { echo '<p class="error">L\'email est invalide</p>'; $i++;} //attention admin@localhost est valide!
     
    						//on vérifie si le membre existe
     
     
    						$requete = $connexion->prepare('SELECT COUNT(*) AS pseudo FROM membres WHERE pseudo = :pseudo');
     
    						$requete->execute(array('pseudo' => $_POST['pseudo']));
     
    						$donnees = $requete->fetch();
    						if ($donnees['pseudo'] != 0) { echo '<p class="error">Ce pseudo est déjà pris</p>'; $i++;}
    						$requete->closeCursor();
     
    						//s'il n'y aucune erreur
    						if ($i == 0) {
     
    							try {
    						 // on essaie de se connecter et d'envoyer la requete
    							$requete2 = $connexion->prepare('INSERT INTO membres(pseudo,password,email,date,ip,ip_inscription,rang) VALUES(:pseudo,:password,:email,NOW(),:ip,:ip_inscription,:rang)');
    							$requete2->execute(array(
    									'pseudo'		=>$_POST['pseudo'],
    									'password'		=>$password1,
    									'email' 		=>$_POST['email'],
    									'ip' 			=>get_ip(),
    									'ip_inscription'=>get_ip(),
    									'rang' 		=>$rangdefaut
    									));	
     
     
     
     
    							//successs !!!
    							echo '<p class="succes">Inscription réussi!</p>';
    							echo '<p class="succes">Vous allez bientôt recevoir un mail</p>'; 
    							}
     
    							catch (Exception $erreur) {
    								echo 'Erreur : '.$erreur->getMessage().'<br />';
    								echo 'N° : '.$erreur->getCode();
     
    							}
     
     
     
    						}
    						else { //sinon on affiche le nombre d'erreur
     
    								echo '<p class="error">Vous avez '.$i.' erreur'.(($i > 1) ? 's' : '').'</p>';
     
    						}
     
     
     
    				}
    				else { ?>
    					<p>Tous les champs doivent &ecirc;tre remplis</p>
    					<label for="pseudo">Pseudo:</label><input type="text" id="pseudo" name="pseudo" /><br />
    					<label for="password1">Password:</label><input type="password" id="password1" name="password1"/><br />
    					<label for="password2">V&eacute;rification du Password:</label><input type="password" id="password2" name="password2"/><br />
    					<label for="email">Email :</label><input type="text" id="email" name="email" /><br />
    					<label for="captcha">Captcha &agrave; recopier:</label><input type="text" id="captcha"><br />
    					<input type="submit" value="Valider"/>
    				</form>
    				<?php } // fermeture du else si aucun champs rempli?>
    			<?php } // fermeture de la balise $inscription_close
    			else { //si $inscription_close = TRUE; les inscriptions sont fermées donc message
    				echo '<p>Désole mais les inscriptions sont fermées momentannement. Si vous souhaitez vous inscrire, merci de nous joindre sur notre page <a href="contact.html">contact</a></p>';
    			} ?>
    		</div>

    A savoir que si je fais un echo de $_POST['pseudo'], $password1, get_ip(), $_POST['email'] > tous s'affiche bien

    Si qqun à une email, merci

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    je ne vois pas de

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete->execute();

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Salut,
    En effet j'ai du le virer en faisant des test, je l'ai rajouté ...
    sauf que cela ne change rien à $requete2 :'(

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Peut etre que les types de champs donnés sont différents en base ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    C'est à dire?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Le code est peut être incomplet et on ignore si l'attribut PDO::ATTR_ERRMODE a été ou non redéfini à la valeur PDO::ERRMODE_EXCEPTION (via la méthode setAttribute ou le constructeur - 4e paramètre). Sans cela, votre gestion des erreurs par exception ne ferait office que de décoration : les blocs try/catch ne serviraient strictement à rien et toute erreur resterait invisible en l'état (c'est le comportement par défaut de PDO).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Il semblerait que ma connexion se fasse mal!
    J'ai donc modifié qq trucs dans mon code et tout est opérationnel
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur d'execution 3021 : Aucun enregistrement
    Par fisio dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/06/2009, 12h27
  2. [Erreur 3021] aucun enregistrement
    Par osia1 dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/05/2008, 12h40
  3. Erreur " 3021 Aucun enregistrement en cours"
    Par Secco dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/04/2008, 15h46
  4. [MySQL] Insertion dans la BDD inexistant, aucune erreur donnée
    Par Alcolyte dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/04/2008, 20h05
  5. Erreur aucun enregistrement
    Par squall62 dans le forum VBA Access
    Réponses: 10
    Dernier message: 22/02/2008, 20h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo