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

PHP & Base de données Discussion :

Pas de données vers ma base de données


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 63
    Par défaut Pas de données vers ma base de données
    Bonsoir,

    j'ai un problème que je n'arrive pas à comprendre:
    Lorsque je fait le "submit", aucune donnee ne va vers ma base de donnée!
    Ce code m'a été gentillement proposé pour qu'il soit plus "propre" que celui que j'avais fait!
    J'ai rajouté le if(isset($_POST['Valider'])) et le closeCursor()
    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
     <?php
        require_once('connect.php');
        require_once('forminsc.php');
     
    $erreurs = [];
    if(isset($_POST['Valider']))
    {
      if(empty($_POST['pseudo']))   
    {
        $erreurs[] = "Le champ pseudo a été omis";
    } 
        else 
    {
        $sth = $bdd->prepare('SELECT COUNT(*) FROM validation WHERE pseudo = :pseudo');
        $sth->execute(['pseudo' => $_POST['pseudo']]);
            if ($sth->fetchColumn()/* != 0*/) 
     
    {
            $erreurs[] = "Ce pseudo est déjà pris, choisissez un autre pseudo!";
    }
    }
    }
    if(empty($_POST['passe']) || empty($_POST['passe2'])) 
    {
        $erreurs[]= "Le champ mot de passe et/ou sa confirmation ont été omis";    
    }
     
    else if ($_POST['passe'] != $_POST['passe2']) 
    {
        $erreurs[] = "Vos 2 mots de passe ne correspondent pas, veuillez recommencer";
    } 
        if($erreurs)
    {
        echo 'Veuillez corriger les erreurs suivantes :<br/>';
        foreach ($erreurs as $erreur) 
    {
        echo $erreur, '<br/>';
    }
    } 
        else 
    {
        $sth = $bdd->prepare('INSERT INTO validation (nom, prenom, pseudo, passe, email) VALUES (:nom, :prenom, :pseudo, :passe, :email)');
        $sth->bindValue(':nom', $_POST['nom']);
        $sth->bindValue(':prenom', $_POST['prenom']);
        $sth->bindValue(':pseudo', $_POST['pseudo']);
        $sth->bindValue(':passe', password_hash($_POST['passe'], PASSWORD_ARGON2ID));
        $sth->bindValue(':email', $_POST['email']);
        $sth->execute();
        $sth->closeCursor();
    }
    ?>
    Merci de votre aide

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 524
    Par défaut
    Salut,

    Avec bindValue tu dois mettre le Troisième paramètre, voir bindValue.

    Il y'a aussi bindParam qui lie une variable PHP à un marqueur nommé ou interrogatif correspondant dans une requête SQL utilisée pour préparer la requête. Contrairement à PDOStatement::bindValue(), la variable est liée en tant que référence et ne sera évaluée qu'au moment de l'appel à la fonction PDOStatement::execute().

    Sinon essaies de passer le tableau directement dans execute :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sth->execute([
         ":nom"=>$_POST["nom"],
         ":prenom"=>$_POST['prenom'],
         ":pseudo"=>$_POST['pseudo'],
         ":passe"=>password_hash($_POST['passe'], PASSWORD_ARGON2ID),
         ":email"=>$_POST['email']
    ]);

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 63
    Par défaut
    Bonjour,

    J'ai ajouté les PDO::PARAM_STR, cela n'a rien changé; j'ai essayé de mette le tableau dans $execute mais là aussi cela n'a rien changé!
    Il n'ajoute rien à ma base de données.
    Ce pourrait-il que le nombre de champs de mon formulaire qui n'est pas égal au nombre de colonne de ma base de données, fasse qu'il ne prenne pas ma requête?
    Si oui, puis-je faire un champ caché au visiteur qui resterait vide? Comme cela il y aurait le même nombre de champ que de colonne!
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Quelle est la structure exacte de la table sql "validation" ?

    2- Les majuscules/minuscules sont-elles respectées ?

    3- Il manque la vérification des nom / prénom (obligatoires ?) et de l'email (validité)

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 63
    Par défaut
    Salut

    Table validation= id - nom - prenom - pseudo - passe - email - Val ( Le passe est haché)
    Mais dans la requête je ne fais pas allusion à Val.

    Je respecte les majuscules et minuscules.

    Je ne pense pas que le nom et le prenom et le mail doivent être vérifiés car s'il me donne un pseudo non pris je vérifie s'il fait bien partie du club, si c'est un nom, prenom ou mail bidon je ne lui donne pas accès!
    Merci d'avance

  6. #6
    Invité
    Invité(e)
    Par défaut
    Peut-on voir le formulaire ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 63
    Par défaut
    Voilà:
    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
    <table width="518" height="858" border="5" align="center">
      <tr>
        <th width="528" height="395" bgcolor="#FFFF00" scope="col"><h2>INSCRIPTION</h2>
        <p>
          </p><form action="giraud.php" method="post">
            <Label for="nom">Votre nom:</Label>
          <input name="nom" type="text" placeholder="Indiquez votre nom:" id="nom" size="40">
          <p>
            <Label for="prenom">Votre prenom:</Label>
            <input name="prenom" type="text" placeholder="Indiquez votre prenom:" id="prenom" size="40">
          </p><p>
          <label for="pseudo">Votre pseudo:</label>
          <input name="pseudo" type="text" placeholder="Indiquez votre pseudo:" id="pseudo" size="40">
        </p>
        <p>
          <label for="passe">Votre mot de passe</label>
          <input name="passe" type="password" placeholder="Indiquez votre mot de passe:" id="passe" size="40">
        </p>
        <p>
          <label for="passe2">Confirmez votre mot de passe</label>
          <input name="passe2" type="password" placeholder="reintroduisez votre mot de passe:" id="passe2" size="40">
        </p>
        <p>
          <label for="email">Votre e-mail:</label>
          <input name="email" type="text" placeholder="Introduisez votre e-mail:" id="email" size="40">
        </p>
        <p>
          <input type="submit" name="Valider" id="Valider" value="Enregistrer">
        </p>
        <p>ATTENTION!!!!</p>
        <p>1) les champs &quot;nom&quot; et &quot;prenom&quot;  doivent être ceux du joueur ou de la licence récréative!</p>
        <p>2) dès que vous êtes &quot;enregistrer&quot; envoyer un mail à l'administrateur <a href="mailto:af050943@gmail.com">af050943@gmail.com </a>demandant </p>
        <p>la validation de votre  inscription!</p>
        <p>3) Dans ce mail, précisez:</p>
        <p>-Je suis joueur du RTT ANS    </p>
        <p>- J'ai la licence récréative</p>
        <p>Si mineur:</p>
        <p>- Je suis le père du joueur</p>
        <p>-Je suis la mère du joueur</p>
          </form></th>
      </tr>
    </table>
    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bon...

    1- le code HTML est vraiment...... (utilisation d'une <table>, balises imbriquées n'importe comment,...)
    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
    <div style="width:50%; min-width:480px; border:5px solid grey; text-align:center; margin:0 auto; background-color:#f9e79f ;">
    	<form action="" method="post">
    		<h2>INSCRIPTION</h2>
    		<p>
    			<label for="nom">Votre nom:</Label>
    			<input name="nom" type="text" placeholder="Indiquez votre nom:" id="nom" size="40">
    		</p>
    		<p>
    			<Label for="prenom">Votre prenom:</Label>
    			<input name="prenom" type="text" placeholder="Indiquez votre prenom:" id="prenom" size="40">
    		</p>
    		<p>
    			<label for="pseudo">Votre pseudo:</label>
    			<input name="pseudo" type="text" placeholder="Indiquez votre pseudo:" id="pseudo" size="40">
    		</p>
    		<p>
    			<label for="passe">Votre mot de passe</label>
    			<input name="passe" type="password" placeholder="Indiquez votre mot de passe:" id="passe" size="40">
    		</p>
    		<p>
    			<label for="passe2">Confirmez votre mot de passe</label>
    			<input name="passe2" type="password" placeholder="reintroduisez votre mot de passe:" id="passe2" size="40">
    		</p>
    		<p>
    			<label for="email">Votre e-mail:</label>
    			<input name="email" type="text" placeholder="Introduisez votre e-mail:" id="email" size="40">
    		</p>
    		<p>
    			<input type="submit" name="Valider" id="Valider" value="Enregistrer">
    		</p>
    	</form>
    	<hr/>
    	<div>
    		<p>ATTENTION!!!!</p>
    		<p>1) les champs "nom" et "prenom"  doivent être ceux du joueur ou de la licence récréative!</p>
    		<p>2) dès que vous êtes "enregistrer" envoyer un mail à l'administrateur <a href="mailto:af050943@gmail.com">af050943@gmail.com </a>demandant </p>
    		<p>la validation de votre  inscription!</p>
    		<p>3) Dans ce mail, précisez:</p>
    		<p>-Je suis joueur du RTT ANS    </p>
    		<p>- J'ai la licence récréative</p>
    		<p>Si mineur:</p>
    		<p>- Je suis le père du joueur</p>
    		<p>-Je suis la mère du joueur</p>
    	</div>
    </div>
    2- quant au code PHP, une fois CORRECTEMENT INDENTE, ça donne :
    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
    <?php
    require_once('connect.php');
    require_once('forminsc.php');
     
    $erreurs = [];
    if(isset($_POST['Valider']))
    {
    	if(empty($_POST['pseudo']))   
    	{
    		$erreurs[] = "Le champ pseudo a été omis";
    	} 
    	else 
    	{
    		$sth = $bdd->prepare('SELECT COUNT(*) FROM validation WHERE pseudo = :pseudo');
    		$sth->execute(['pseudo' => $_POST['pseudo']]);
    		if ($sth->fetchColumn()/* != 0*/) 
    		{
    			$erreurs[] = "Ce pseudo est déjà pris, choisissez un autre pseudo!";
    		}
    	}
    }
    // --------
    if(empty($_POST['passe']) || empty($_POST['passe2'])) 
    {
    	$erreurs[]= "Le champ mot de passe et/ou sa confirmation ont été omis";    
    }
    else if ($_POST['passe'] != $_POST['passe2']) 
    {
    	$erreurs[] = "Vos 2 mots de passe ne correspondent pas, veuillez recommencer";
    } 
    // --------
    if($erreurs)
    {
    	echo 'Veuillez corriger les erreurs suivantes :<br/>';
    	foreach ($erreurs as $erreur) 
    	{
    		echo $erreur, '<br/>';
    	}
    } 
    else 
    {
        echo 'ENREGISTREMENT EN BDD';
        $sth = $bdd->prepare('INSERT INTO validation (nom, prenom, pseudo, passe, email) VALUES (:nom, :prenom, :pseudo, :passe, :email)');
        $sth->bindValue(':nom', $_POST['nom']);
        $sth->bindValue(':prenom', $_POST['prenom']);
        $sth->bindValue(':pseudo', $_POST['pseudo']);
        $sth->bindValue(':passe', password_hash($_POST['passe'], PASSWORD_ARGON2ID));
        $sth->bindValue(':email', $_POST['email']);
        $sth->execute();
        $sth->closeCursor();
    }
    ?>
    Tu peux constater qu'une accolade n''est pas fermée au bon endroit.
    Celle de la ligne 21 devrait être ligne 52.
    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
    <?php
    require_once('connect.php');
    require_once('forminsc.php');
     
    $erreurs = [];
    if(isset($_POST['Valider']))
    {
    	if(empty($_POST['pseudo']))   
    	{
    		$erreurs[] = "Le champ pseudo a été omis";
    	} 
    	else 
    	{
    		$sth = $bdd->prepare('SELECT COUNT(*) FROM validation WHERE pseudo = :pseudo');
    		$sth->execute(['pseudo' => $_POST['pseudo']]);
    		if ($sth->fetchColumn()/* != 0*/) 
    		{
    			$erreurs[] = "Ce pseudo est déjà pris, choisissez un autre pseudo!";
    		}
    	}
    	// --------
    	if(empty($_POST['passe']) || empty($_POST['passe2'])) 
    	{
    		$erreurs[]= "Le champ mot de passe et/ou sa confirmation ont été omis";    
    	}
    	else if ($_POST['passe'] != $_POST['passe2']) 
    	{
    		$erreurs[] = "Vos 2 mots de passe ne correspondent pas, veuillez recommencer";
    	} 
    	// --------
    	if($erreurs)
    	{
    		echo 'Veuillez corriger les erreurs suivantes :<br/>';
    		foreach ($erreurs as $erreur) 
    		{
    			echo $erreur, '<br/>';
    		}
    	} 
    	else 
    	{
    		echo 'ENREGISTREMENT EN BDD';
    		$sth = $bdd->prepare('INSERT INTO validation (nom, prenom, pseudo, passe, email) VALUES (:nom, :prenom, :pseudo, :passe, :email)');
    		$sth->bindValue(':nom', $_POST['nom']);
    		$sth->bindValue(':prenom', $_POST['prenom']);
    		$sth->bindValue(':pseudo', $_POST['pseudo']);
    		$sth->bindValue(':passe', password_hash($_POST['passe'], PASSWORD_ARGON2ID));
    		$sth->bindValue(':email', $_POST['email']);
    		$sth->execute();
    		$sth->closeCursor();
    	}
    	// --------
    }
    ?>
    3- Une fois cette erreur corrigée... il semble que le code fonctionne correctement, et qu'on arrive jusqu'à l'INSERT.
    Dernière modification par Invité ; 09/02/2020 à 16h06.

  9. #9
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 63
    Par défaut
    Salut

    Non je n'ai toujours pas accès à la bdd!! Ma BD comporte 6 champs (nom,prenom,pseudo,passe,email,Val) alors que mon formulaire n'en compte que 5 (nom,prenom,pseudo,passe,email)!
    Le fait qu'il y a un champ de moins cela peut-il rendre la requête inactive?
    Parce que le formulaire s'affiche bien, je le remplis et j'envoie et il me dit enregistrement BDD or quand je vais voir l'enregistrement n'y est pas!

  10. #10
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 63
    Par défaut
    OK c'était mon champ Val qui était mis à not null

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/08/2006, 17h03
  2. conversion access vers autre base de données
    Par Anthony17 dans le forum Access
    Réponses: 1
    Dernier message: 16/06/2006, 13h50
  3. [Access 2002] Exporter des données vers une base Access 2.0
    Par SamLeChiseuji dans le forum Access
    Réponses: 27
    Dernier message: 01/06/2006, 11h41
  4. [XML] [EXPAT] D'un document Xml vers une base de données
    Par AlphonseBrown dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 07/12/2005, 12h15
  5. Extraction information *.txt vers une base de données
    Par Mr Capone dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 12/01/2005, 11h26

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