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 :

récupère les champs


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    chomeur
    Inscrit en
    Juillet 2014
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 128
    Points : 0
    Points
    0
    Par défaut récupère les champs
    bonjours,

    j'ai mis ca sur mon formulaire

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    		   <div class="global-inscription">
    		   <label class="inscription-label" for="prenom">votre prénom :</label>
    		   <div class="inscription-input icon-inscription-input-prenom"><input type="text" name="prenom" id="prenom" /></div>
    		   <p class="inscription-description">veuillez mettre votre prénom.</p>
    		   <span class="inscription-pris-non-pris icon-inscription-ok"></span>
    		   </div>
     
    		   <div class="global-inscription">
    		   <label class="inscription-label" for="actuellement">actuellement :</label>
    		   <div class="inscription-select">'; include "select/inscription/actuellement.php"; echo '</div>
    		   <p class="inscription-description">Je suis en congé.</p>
    		   <span class="inscription-pris-non-pris icon-inscription-ok"></span>
    		   </div>

    je vous explique ces 2 lignes.

    commençons par la 1 er ligne

    c'est un imput ou on doit mettre un prénom.

    j'ai bien mis sur ma base sql un champs

    membre_prenom varchar(255) latin1_swedish_ci.

    ensuite ma 2 ème ligne : j'ai mis un include pour afficher un select (mais en version jquery)


    qui est :

    Code html : 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
     
     
    	  <div id="select-inscription-actuellement-1" class="choix" data-name="inscription">
    	  <span id="select-inscription-actuellement-2" class="hida1 icon-select">sélectionner une réponse</span>
    	  <ul id="select-inscription-actuellement-3" class="mutliSelect1">
    	  <li class="select-choix">amoureux(se)</li>
    	  <li class="select-choix">dégoûté(e) écoeuré(e)</li>
    	  <li class="select-choix">de bonne humeur</li>
    	  <li class="select-choix">disponible</li>
    	  <li class="select-choix">examens</li>
    	  <li class="select-choix">en congé</li>
    	  <li class="select-choix">en courte absence (quelques jours...)</li>
    	  <li class="select-choix">en flirt mais à votre écoute</li>
    	  <li class="select-choix">en longue absence</li>
    	  <li class="select-choix">en vacances</li>
    	  <li class="select-choix">malade</li>
    	  <li class="select-choix">occupé(e) (ne pas déranger...)</li>
    	  <li class="select-choix">songeur</li>
    	  <li class="select-choix">très énervé(e)</li>
    	  <li class="select-choix">triste</li>
    	  <li class="select-choix">triste (rupture récente)</li>
    	  </ul></div>

    j'ai bien mis le champs sql

    membre_actuellement varchar(255) latin1_swedish_ci Oui Aucun(e)

    maintenant, passons pour le traitement

    je met bien les variables de mes 2 champs que j'ai ajouté et jai rajouté à ma requettes mes 2 champs que j'ai ajouté

    voilà le traitement du formulaire


    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    		   ////////////////////////////////////////////////début de la deuxième étape/////////////////////////////////////////////////////////////////////////
    		   else //On est dans le cas traitement
    		   {
    		   $pseudo_erreur1 = NULL;
    		   $pseudo_erreur2 = NULL;
    		   $mdp_erreur = NULL;
    		   $email_erreur1 = NULL;
    		   $email_erreur2 = NULL;
    		   $prenom_erreur = NULL;
    		   $actuellement_erreur = NULL;
     
    		   //On récupère les variables
    		   $i = 0;
    		   $temps = time();
    		   $pseudo=$_POST['pseudo'];
    		   $email = $_POST['email'];
    		   $pass = $_POST['password']; // en clair
    		   $confirm = $_POST['confirm']; // en clair
    		   $prenom = $_POST['prenom']; // en clair
    		   $actuellement = $_POST['actuelement']; // en clair
     
    		   //Vérification du pseudo
    		   $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
    		   $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
    		   $query->execute();
    		   $pseudo_free=($query->fetchColumn()==0)?1:0;
    		   $query->CloseCursor();
    		   if(!$pseudo_free)
    		   {
    		   $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
    		   $i++;
    		   }
    		   if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
    		   {
    		   $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
    		   $i++;
    		   }
     
    		   //Vérification du mdp
    		   if ($pass != $confirm || empty($confirm) || empty($pass))
    		   {
    		   $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
    		   $i++;
    		   }
     
    		   $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
    		   $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
    		   $query->execute();
    		   $pseudo_free=($query->fetchColumn()==0)?1:0;
     
    		   //Vérification de l'adresse email
    		   //Il faut que l'adresse email n'ait jamais été utilisée
    		   $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
    		   $query->bindValue(':mail',$email, PDO::PARAM_STR);
    		   $query->execute();
    		   $mail_free=($query->fetchColumn()==0)?1:0;
    		   $query->CloseCursor();
     
    		   if(!$mail_free)
    		   {
    		   $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
    		   $i++;
    		   }
     
    		   //On vérifie la forme maintenant
    		   if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
    		   {
    		   $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
    		   $i++;
    		   }
     
    		   ////////////////////////////////////////////////fin de la deuxième étape/////////////////////////////////////////////////////////////////////////
    		   ////////////////////////////////////////////////début la troisième étape/////////////////////////////////////////////////////////////////////////
    		   if ($i==0)
    		   {
    		   echo'<h1>Inscription terminée</h1>';
    		   echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p><p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';
     
    		   $query=$db->prepare('INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email, membre_prenom, membre_actuellement, membre_inscrit, membre_derniere_visite)
    		   VALUES (:pseudo, :pass, :email, :prenom, :actuellement, :temps, :temps)');
    		   $query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
    		   $query->bindValue(':pass', password_hash($pass, PASSWORD_BCRYPT), PDO::PARAM_STR);
    		   $query->bindValue(':email', $email, PDO::PARAM_STR);
    		   $query->bindValue(':prenom', $prenom, PDO::PARAM_STR);
    		   $query->bindValue(':actuellement', $actuellement, PDO::PARAM_STR);
    		   $query->bindValue(':temps', $temps, PDO::PARAM_INT);
     
    		   //$query->bindValue(':post', $post, PDO::PARAM_STR);
    		   $query->execute();
     
    		   //Et on définit les variables de sessions
    		   $_SESSION['pseudo'] = $pseudo;
    		   $_SESSION['id'] = $db->lastInsertId();
    		   $_SESSION['level'] = 2;
    		   $query->CloseCursor();
    		   }
    		   ////////////////////////////////////////////////fin la troisième étape/////////////////////////////////////////////////////////////////////////
    		   ////////////////////////////////////////////////début de la quatrième étape/////////////////////////////////////////////////////////////////////////
    		   else
    		   {
    		   echo'<h1>Inscription interrompue</h1>';
    		   echo'<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
    		   echo'<p>'.$i.' erreur(s)</p>';
    		   echo'<p>'.$pseudo_erreur1.'</p>';
    		   echo'<p>'.$pseudo_erreur2.'</p>';
    		   echo'<p>'.$mdp_erreur.'</p>';
    		   echo'<p>'.$email_erreur1.'</p>';
    		   echo'<p>'.$email_erreur2.'</p>';
    		   echo'<p>Cliquez <a href="index.php">ici</a> pour recommencer</p>';
    		   }
    		   }
    		   ////////////////////////////////////////////////fin de la quatrième étape/////////////////////////////////////////////////////////////////////////

    les 2 erreurs qui sont afficher sur la page

    Notice: Undefined index: actuelement in /var/www/legtux.org/users/communautaire/www/V1/module/membre/inscription.php on line 102

    quand je met mon prénom dans le champs : il m’enserre bien et il me met bien mon prénom dans la base sql

    un petite question sur ce champs , si je veux le rendre obligatoire le prénom , qu'es-ce qu'il faut que je mette afin qu'il remplit obligatoire

    ensuite pour mon select actuellement, il ne veut pas se mettre dans la base sql le mot sélectionné

    comment je doit récupère le mot sélectionne.

    peut-être qu'il faut que je met à chaque li

    data-name="songeur"
    data-name="amoureux"

    etc....


    afin de récupéré le data name qu'on a sélectionner.

    merci

  2. #2
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Salut,

    il manque un l à actuellement sur cette ligne (Ligne 102: fichier : inscription.php):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $actuellement = $_POST['actuellement']; // en clair
    Pour le rendre obligatoire, tu ne dois pas accepter la valeur NULL pour ce champs et effectuer un test dessus (l'idéale étant en Javascript puis en PHP) pour vérifier qu'il est bien renseigné.

    Sinon, je ne sais pas si il y a une raison mais pour l encodage de tes champs texte je te conseil d utiliser un charset comme UTF8_GENERAL_CI et aussi de réduire la taille de ton champs je ne connais aucun prénom qui fasse 255 caractères, je pense qu'avec 100 caractères de long tu dois être bon.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    chomeur
    Inscrit en
    Juillet 2014
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 128
    Points : 0
    Points
    0
    Par défaut
    merci, maintenant j'ai compris

    donc, si je comprends null, c'est pour les champs obligatoire sinon on met rien si c'est un champs non obligatoire.

    si j'ai bien saisie ceux que tu m'a dit.

    j'ai remis mes 2 champs du formulaire prenom et actuellement.

    je te met m a table sql


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    CREATE TABLE `forum_membres` (
      `membre_id` int(11) NOT NULL,
      `membre_pseudo` varchar(30) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
      `membre_mdp` varchar(60) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
      `membre_email` varchar(100) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
      `membre_prenom` varchar(255) CHARACTER SET utf8 NOT NULL,
      `membre_actuellement` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
      `membre_inscrit` int(11) NOT NULL,
      `membre_derniere_visite` int(11) NOT NULL,
      `membre_rang` tinyint(4) DEFAULT '2',
      `membre_post` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    tu me diras si c'est bon, peut_être actuellement le vachar je peut mettre 100.

    ensuite je met ca

    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
    	  else //On est dans le cas traitement
    	  {
    	  $pseudo_erreur1 = NULL;
    	  $pseudo_erreur2 = NULL;
    	  $mdp_erreur = NULL;
    	  $email_erreur1 = NULL;
    	  $email_erreur2 = NULL;
    //	  $prenom_erreur = ;
    //	  $actuellement_erreur = ;
     
    	  //On récupère les variables
    	  $i = 0;
    	  $temps = time();
    	  $pseudo=$_POST['pseudo'];
    	  $email = $_POST['email'];
    	  $pass = $_POST['password']; // en clair
    	  $confirm = $_POST['confirm']; // en clair
    	  $prenom = $_POST['prenom']; // en clair
    	  $actuellement = $_POST['actuellement']; // en clair

    et il me dit toujours,

    Notice: Undefined index: actuellement in /var/www/legtux.org/users/site/www/versionphpamoi/module/membre/inscription.php on line 99
    et quand je regarde la base sql il me met NULL et pas le mot sélectionner.

    et j'ai bien ma requette

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	  $query=$db->prepare('INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email, membre_prenom, membre_actuellement, membre_inscrit, membre_derniere_visite)
    	                       VALUES (:pseudo, :pass, :email, :prenom, :actuellement, :temps, :temps)');
    	  $query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
    	  $query->bindValue(':pass', password_hash($pass, PASSWORD_BCRYPT), PDO::PARAM_STR);
    	  $query->bindValue(':email', $email, PDO::PARAM_STR);
    	  $query->bindValue(':prenom', $prenom, PDO::PARAM_STR);
    	  $query->bindValue(':actuellement', $actuellement, PDO::PARAM_STR);
    	  $query->bindValue(':temps', $temps, PDO::PARAM_INT);

    pour temps, j'ai bien actuellement

  4. #4
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Attention il faut différencier le coté Base de Donnée et le coté code php.

    pour qu'un champs soit obligatoire en Base de données il faut qu'il soit marqué "NOT NULL" avec aucune valeur par défaut.
    par contre si tu essai d'insérer en Base ce champs à vide tu aura une erreur SQL qui peut être bloquante et donc c'est pour ça que tu dois rajouter des controles dans le code PHP.

    Edit: (j'ai oublié de répondre à ta question)

    je pense que ton formulaire n’envoie pas la valeur actuellement.

    Une bonne technique est de vérifier l'existence des index de tableau avant de les utiliser.
    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
     
    if (array_key_exists('actuellement', $_POST)){
    	$actuellement = $_POST['actuellement'];
    } else {
    	//Si pas obligatoire mettre une valeur vide
    	$actuellement = null;	
    }
    /******
    OU
    ******/
    if (array_key_exists('actuellement', $_POST)){
    	$actuellement = $_POST['actuellement'];
    } else {
    	//SI obligatoire mettre une erreur bloquante
    	die('Le paramètre "actuellement" est manquant');
    }
    RE-EDIT:

    Attend je viens de comprendre pour ton select tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include "select/inscription/actuellement.php";
    et dans ton fichier actuellement.php tu as fait une liste sous forme de UL LI qui en plus n'as pas l id "actuellement"
    en l'état ça ne peux fonctionner:
    essaie de mettre dans ton fichier actuellement un truc comme cela :
    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
     
     
     
    	  <div id="select-inscription-actuellement-1" class="choix" data-name="inscription">
    	  <span id="select-inscription-actuellement-2" class="hida1 icon-select">sélectionner une réponse</span>
    	  <select id="actuellement" multiple>
    	  <option value="amoureux(se)">amoureux(se)</option>
    	  <option value="dégoûté(e) écoeuré(e)">dégoûté(e) écoeuré(e)</option>
    	  <option value="de bonne humeur">de bonne humeur</option>
    	  <option value="disponible">disponible</option>
    	  <option value="examens">examens</option>
    	  <option value="en congé">en congé</option>
    	  <option value="en courte absence (quelques jours...)">en courte absence (quelques jours...)</option>
    	  <option value="en flirt mais à votre écoute">en flirt mais à votre écoute</option>
    	  <option value="en longue absence">en longue absence</option>
    	  <option value="en vacances">en vacances</option>
    	  <option value="malade">malade</option>
    	  <option value="occupé(e) (ne pas déranger...)">occupé(e) (ne pas déranger...)</option>
    	  <option value="songeur">songeur</option>
    	  <option value="très énervé(e)">très énervé(e)</option>
    	  <option value="triste">triste</option>
    	  <option value="triste (rupture récente)">triste (rupture récente)</option>
    	  </select>
    	  <div>

    Pourquoi passe tu par des Liste pour refaire ton sleect ? tu as du javascript avec ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/04/2013, 23h10
  2. [MySQL] récupére les champ d'un select multiple
    Par le nOoB dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 28/10/2011, 11h45
  3. [MySQL] PHP Liste déroulante qui récupère les champs d'une table
    Par Cathe89 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/06/2010, 11h55
  4. [MySQL] Différencier les champs récupérés de la base de données
    Par furiousdraz dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/11/2008, 09h22

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