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 :

Insertion d'un champ select dans BDD et erreur dans un formulaire.


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut Insertion d'un champ select dans BDD et erreur dans un formulaire.
    Bonsoir,

    Voilà le bout de code que j'aimerais insérer dans ma base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <label for="date"> Date de naissance: <em>*</em></label>
    <select name="date[]"> <?php for ($k=1 ; $k<32 ; $k++) {echo '<option value="'.$k.'">'.$k.'</option>';} ?></select>
    <select name="date[]"> <?php for ($k=1 ; $k<13 ; $k++) {echo '<option value="'.$k.'">'.$k.'</option>';} ?></select> 
    <select name="date[]"> <?php for ($k= date('Y') ; $k>1899 ; $k--) {echo '<option value="'.$k.'">'.$k.'</option>';} ?></select>
    J'aimerais pouvoir prendre que le champs année (exemple, si l'utilisateur sélectionne 1992, dans ma base de donnée j'aurais un champ année ou l'année sélectionné par l'utilisateur apparaitra).

    Aussi, voici le début de mon formulaire :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <fieldset>
    	<legend>Mes identifiants</legend>
    	<label for="pseudo">Pseudo <em>*</em></label>
    	<input type="text" name="pseudo" placeholder="Pseudo"><br>
    	<label for="mdp">Mot de passe <em>*</em></label>
    	<input type="password" name="mdp" placeholder="Mot de passe"><br>
    	<label for="mdp">Répéter mot de passe <em>*</em></label>
    	<input type="password" name="rmpd" placeholder="Mot de passe"><br>
    	<label for="email">Email <em>*</em></label>
    	<input name="email" placeholder="Mail"><br>
    </fieldset>

    J'aimerais pouvoir faire en sorte que l'utilisateur ne peut pas valider l'inscription si les champs ne sont pas remplis correctement. Dans un ancien formulaire que j'ai réalisé, j'avais effectué cette action à l'aide de regex le problème était que, si l'utilisateur avait mal rempli un champ, un message d'erreur apparaissait et il devait à nouveau remplir TOUS les champs et non pas seulement le champ où il s'était trompé.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    J'ai réussi à insérer des erreurs à l'aide du plugin Jquery validation, j'aimerais afficher les erreurs dans les champs de texte comme ici :

    http://www.noelshack.com/2014-49-1417686497-capture.png

    Le problème est je ne sais pas comment modifier le css pour.

    Voilà mon css :

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #formulaire label.error {
    color:red;
    }
    #formulaire input.error {
    border:1px solid red;
    }

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il suffit de placer l'attribut selected lorsque tu es sur la valeur selectionnée
    par exemple pour l'année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <select name="date[]">
    <?php
    for ($k= date('Y') ; $k>1899 ; $k--) {
              $selected = (isset($_POST['date'][2]) &&  $_POST['date'][2] == $k) ? ' selected="selected" ' : '';
              echo '<option value="'.$k.'"' . $selected . '>'.$k.'</option>';
    }
    ?>
    </select>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Merci sabotage pour ta réponse mais je n'ai pas très bien compris :s, dans mon fichier qui me sert d'insérer mes valeurs dans la base de données j'ai ça :

    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
    <?php
    include "BDD/identifiant.php"; 
    if(isset($_POST['submit']))
    {
    	//Connexion au serveur
    	$connexion=mysqli_connect($SERVER,$USER,$PASSWORD);
     
    	//Vérification de la connexion
    	if(mysqli_connect_errno())
    	{
    		printf("Echec de la connexion", mysqli_connect_error());
    		exit();
     
    	}else echo '<center><p>Inscription réussi.</center></p>';
     
     	$pseudo = htmlentities($_POST['pseudo']);
    	$mdp = htmlentities($_POST['mdp']);
    	$email = htmlentities($_POST['email']);
    	$nom = htmlentities($_POST['nom']);
    	$prenom = htmlentities($_POST['prenom']);
    	$adresse = htmlentities($_POST['adresse']);
    	$cp = htmlentities($_POST['cp']);
    	$ville = htmlentities($_POST['ville']);
    	$telephone = htmlentities($_POST['telephone']);
    	$categorie = htmlentities($_POST['categorie']);
    	$club = htmlentities($_POST['club']);
    	$licence = htmlentities($_POST['licence']);
     
     
     
     	$sql = "INSERT INTO `bdd`.`inscription` (`id`, `pseudo`, `mdp`, `email`, `nom`, `prenom`, `adresse`, `cp`, `ville`, `telephone`, `categorie`, `club`, `licence`) VALUES ('', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
     	$stmt = mysqli_prepare($connexion, $sql);
     
    	//Paramètres : chaines de caractères dans l'ordre
    	mysqli_stmt_bind_param($stmt, 'ssssssssssss', $pseudo , $mdp, $email, $nom, $prenom, $adresse, $cp, $ville, $telephone, $categorie, $club, $licence);	//Permet de renseigner les paramètres repéré par les "?" dans l'ordre.
     
    	//Exécution
    	mysqli_stmt_execute($stmt);																																//Execute la requête.
    }
    C'est ici que j'aimerais insérer l'année de naissance de l'utilisateur le problème est que comme ce n'est pas un input mais une sélection.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Bon j'ai simplifié mon formulaire pour faire en sorte qu'il y es que l'année de naissance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label for="date"> Année de naissance: <em>*</em></label>
    	<select name="date[]"> <?php for ($k= date('Y') ; $k>1899 ; $k--) {echo '<option value="'.$k.'">'.$k.'</option>';} ?></select>
    J'ajoute à mon insertion de base de donnée cette ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = ($_POST['date']);
    Au final j'ai une erreur php :

    Notice: Array to string conversion in C:\Program Files (x86)\wamp\www\Site\bdd\connexion.php on line 41
    Ma ligne 41 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_stmt_execute($stmt);

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ben oui, tu demandes bien que $_POST['date'] soit un tableau...
    Ceci dit, je ne comprends pas trop pourquoi tu utilises cette syntaxe. Si c'est que l'année, appelle-le annee, ce sera plus simple et mieux compréhensible.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Merci de ta réponse Bovino,

    Donc je fais comment pour résoudre mon problème ? J'ai besoin que dans mon formulaire il y est cette liste déroulante. J'ai remplacé "date" par "annee"

    Edit : Autant pour moi j'ai réussi, il fallait seulement enlever le tableau ^^"

    Par contre j'aimerais bien de l'aide pour afficher mes erreurs comme dans l'image que j'ai posté.

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

Discussions similaires

  1. Insertion d'un champ select name en bdd
    Par Jess86 dans le forum Langage
    Réponses: 2
    Dernier message: 06/04/2015, 09h53
  2. enregistrement d'erreur dans BDD mssql
    Par thor76160 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/09/2011, 11h43
  3. Réponses: 2
    Dernier message: 03/12/2007, 14h47
  4. Bug dans ArgoUML ou erreur dans mon diagramme
    Par Stouille89 dans le forum Outils
    Réponses: 2
    Dernier message: 02/11/2007, 11h01
  5. Réponses: 1
    Dernier message: 01/06/2006, 09h11

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