Projet informatique [Résolu]

Anonymous95340 96 Messages postés lundi 5 octobre 2015Date d'inscription 8 novembre 2017 Dernière intervention - 11 avril 2017 à 13:08 - Dernière réponse : jordane45 19250 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention
- 17 mai 2017 à 02:55
Bonjour,

Je dois réaliser une application de gestion des formations en PHP avec le framework bootstrap et je suis coincé au niveau de ma base de données. L'utilisateur dois s’inscrire au site et ensuite pouvoir choisir sa formation. Je voudrais que pendant son s'inscription au site tous les champs qu'il rempli (login, mdp ,email,nom, prénom,adresse,code postal, fonction(si il est président, secrétaire etc...) association) sois directement enregistrer dans la base de données est ce possible?

voici mes tables et les champs :
• intervenant (idIntervenant, nom, prenom, titre, adresse, codePostal, email, tel)

• sessionformation (idSession, idFormation#, idIntervenant#, dateLimiteInsc, dateDebut, salle)

• inscription (idPersonne, idSession#)

• formation (idFormation, titre, descriptif)

• personnelassociatif (idPersonne, login, mdp, adresse, email, nom, prenom, tel, codePostal, fonction, actif, idAssociation#)

• association (idAssociation, nom, adresse, codePostal, tel email)

• tag (idTag, lebelle)

• theme (idTag, idFormation#)



Merci d'avance pour vos réponses
Afficher la suite 

26 réponses

Répondre au sujet
jordane45 19250 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention - 11 avril 2017 à 14:13
0
Utile
2
Bonjour,


Je voudrais que pendant son s'inscription au site tous les champs qu'il rempli (login, mdp ,email,nom, prénom,adresse,code postal, fonction(si il est président, secrétaire etc...) association) sois directement enregistrer dans la base de données est ce possible?

Oui c'est possible.

Il suffit de faire des requêtes INSERT (pour créer un nouvel enregistrement ) ou UPDATE (si c'est pour mettre à jour).



Anonymous95340 96 Messages postés lundi 5 octobre 2015Date d'inscription 8 novembre 2017 Dernière intervention - 17 avril 2017 à 20:22
Bonjour,

J'ai essayer de faire ma base de données mais je coince au niveau de la clé étrangère.
jordane45 19250 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention > Anonymous95340 96 Messages postés lundi 5 octobre 2015Date d'inscription 8 novembre 2017 Dernière intervention - 17 avril 2017 à 21:12
Si tu ne nous montres pas ce que tu as fait... comment penses tu que nous pourrons t'aider ??
Commenter la réponse de jordane45
Anonymous95340 96 Messages postés lundi 5 octobre 2015Date d'inscription 8 novembre 2017 Dernière intervention - Modifié par jordane45 le 26/04/2017 à 15:12
0
Utile
22
Bonjour,

Désolé de vous répondre si tardivement je vous envoi ce que j'ai fais.
J'ai crée mes tables avec le logiciel MySQL Workbench

-- MySQL Script generated by MySQL Workbench
-- 04/26/17 14:36:35
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema m2l
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema m2l
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `m2l` DEFAULT CHARACTER SET utf8 ;
USE `m2l` ;

-- -----------------------------------------------------
-- Table `m2l`.`Internevant`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `m2l`.`Internevant` (
  `idInternevant` INT NOT NULL AUTO_INCREMENT,
  `nom` VARCHAR(45) NULL,
  `prenom` VARCHAR(45) NULL,
  `titre` VARCHAR(45) NULL,
  `adresse` VARCHAR(45) NULL,
  `codePostal` INT NULL,
  `email` VARCHAR(45) NULL,
  `tel` INT NULL,
  PRIMARY KEY (`idInternevant`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `m2l`.`Tag`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `m2l`.`Tag` (
  `idTag` INT NOT NULL AUTO_INCREMENT,
  `libelle` VARCHAR(255) NULL,
  PRIMARY KEY (`idTag`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `m2l`.`Association`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `m2l`.`Association` (
  `idAssociation` INT NOT NULL AUTO_INCREMENT,
  `nom` VARCHAR(255) NULL,
  `adresse` VARCHAR(255) NULL,
  `codePostal` INT NULL,
  `tel` INT NULL,
  `email` VARCHAR(255) NULL,
  PRIMARY KEY (`idAssociation`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `m2l`.`Formation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `m2l`.`Formation` (
  `idFormation` INT NOT NULL AUTO_INCREMENT,
  `titre` VARCHAR(255) NULL,
  `descriptif` VARCHAR(255) NULL,
  PRIMARY KEY (`idFormation`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `m2l`.`sessionFormation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `m2l`.`sessionFormation` (
  `idSeesion` INT NOT NULL AUTO_INCREMENT,
  `Internevant_idInternevant` INT NOT NULL,
  `Formation_idFormation` INT NOT NULL,
  `dateLimiteInscription` DATETIME NULL,
  `dateDebut` DATETIME NULL,
  `Salle` VARCHAR(255) NULL,
  PRIMARY KEY (`idSeesion`, `Internevant_idInternevant`, `Formation_idFormation`),
  INDEX `fk_Internevant_has_Formation_Formation1_idx` (`Formation_idFormation` ASC),
  INDEX `fk_Internevant_has_Formation_Internevant_idx` (`Internevant_idInternevant` ASC),
  CONSTRAINT `fk_Internevant_has_Formation_Internevant`
    FOREIGN KEY (`Internevant_idInternevant`)
    REFERENCES `m2l`.`Internevant` (`idInternevant`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Internevant_has_Formation_Formation1`
    FOREIGN KEY (`Formation_idFormation`)
    REFERENCES `m2l`.`Formation` (`idFormation`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `m2l`.`inscription`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `m2l`.`inscription` (
  `idPersonne` INT NOT NULL AUTO_INCREMENT,
  `sessionFormation_idSeesion` INT NOT NULL,
  PRIMARY KEY (`idPersonne`, `sessionFormation_idSeesion`),
  INDEX `fk_inscription_sessionFormation1_idx` (`sessionFormation_idSeesion` ASC),
  CONSTRAINT `fk_inscription_sessionFormation1`
    FOREIGN KEY (`sessionFormation_idSeesion`)
    REFERENCES `m2l`.`sessionFormation` (`idSeesion`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `m2l`.`personnelassociatif`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `m2l`.`personnelassociatif` (
  `idpersonne` INT NOT NULL AUTO_INCREMENT,
  `login` VARCHAR(45) NULL,
  `mdp` VARCHAR(45) NULL,
  `adresse` VARCHAR(45) NULL,
  `email` VARCHAR(45) NULL,
  `nom` VARCHAR(45) NULL,
  `prenom` VARCHAR(45) NULL,
  `tel` INT NULL,
  `codePostal` INT NULL,
  `fonction` VARCHAR(45) NULL,
  `actif` VARCHAR(45) NULL,
  `Association_idAssociation` INT NOT NULL,
  PRIMARY KEY (`idpersonne`, `Association_idAssociation`),
  INDEX `fk_personnelassociatif_Association1_idx` (`Association_idAssociation` ASC),
  CONSTRAINT `fk_personnelassociatif_Association1`
    FOREIGN KEY (`Association_idAssociation`)
    REFERENCES `m2l`.`Association` (`idAssociation`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `m2l`.`theme`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `m2l`.`theme` (
  `idTag` INT NOT NULL AUTO_INCREMENT,
  `Formation_idFormation` INT NOT NULL,
  PRIMARY KEY (`idTag`, `Formation_idFormation`),
  INDEX `fk_theme_Formation1_idx` (`Formation_idFormation` ASC),
  CONSTRAINT `fk_theme_Formation1`
    FOREIGN KEY (`Formation_idFormation`)
    REFERENCES `m2l`.`Formation` (`idFormation`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;



EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
jordane45 19250 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention > jordane45 19250 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention - 16 mai 2017 à 22:37
Tu peux également, histoire de vérifier, faire un echo de la variable $sql et un print_r de la variable $datas
Anonymous95340 96 Messages postés lundi 5 octobre 2015Date d'inscription 8 novembre 2017 Dernière intervention - 17 mai 2017 à 00:14
Concernant la variable $sql et $data elles ne sont pas défini j'ai un msg d'erreur

Voici le code modifié:
<?php

print_r($_POST);
require 'config/database.php';
//require 'includes/fonctions.php';

if (isset($_POST['inscription'])) {
    $errors = [];
    $login = htmlspecialchars($_POST['login']);
    $nom = htmlspecialchars($_POST['nom']);
    $prenom = htmlspecialchars($_POST['prenom']);
    $adresse = htmlspecialchars($_POST['adresse']);
    //hachage du mot de passe
    $mdp = sha1($_POST['mdp']);
    $mdp2 = sha1($_POST['mdp2']);
    $email = htmlspecialchars($_POST['email']);
    $email2 = htmlspecialchars($_POST['email2']);
    $tel = ($_POST['tel']);
    $cp = ($_POST['cp']);
    $fonction = ($_POST['fonction']);
    $idassociation = ($_POST['idassociation']);
    $actif = ($_POST['actif']);

    //Fonction pour vérifier Si les variables sont pas vides
    if (!empty([$login]) && !empty([$mdp]) && !empty([$mdp2]) && !empty([$nom]) && !empty([$prenom]) && !empty([$adresse]) && !empty([$email]) && !empty([$email2]) && !empty([$cp]) && !empty([$tel]) && !empty([$fonction]) && !empty([$idassociation])
    ) {

        $loginlength = strlen($login);

        if ($loginlength <= 255) {

            if ($email == $email2) {

                if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                    //Requete permettant de savoir si le mail est deja utilisé
                    $reqmail = $db->prepare("SELECT * FROM personnelassociatif WHERE email = ?");
                    $reqmail->execute([$email]);
                    $mailexist = $reqmail->rowCount();

                    if ($mailexist == 0) {
                        if ($mdp == $mdp2) {
                            /* Insert les informations et cree le compte
                              //$insertmbr = $db ->prepare("SELECT idAssociation,nom FROM association ORDER BY nom");
                              //$insertmbr = $db ->prepare("SHOW COLUMNS FROM personnelassociatif LIKE fonction ");
                              $insertmbr = $db->prepare("INSERT INTO personnelassociatif(login,email,mdp,nom,prenom,adresse,codePostal,tel,fonction,idassociation) VALUES(:login, :mdp, :adresse, :email, :nom, :prenom, :tel, :codePostal, :fonction, :idassociation)");

                              $execute = $insertmbr->execute(([$login,$mdp,$email,$nom,$prenom,$adresse,$cp,$tel,$fonction,$idassociation]));
                              //$_SESSION['comptecree'] = "Votre compte a été crée";
                             */
                            $sql = "INSERT INTO personnelassociatif
            (login,email,mdp,nom,prenom,adresse,codePostal,tel,fonction,idassociation) 
      VALUES(:login, :mdp, :adresse, :email, :nom, :prenom, :tel, :codePostal, :fonction, :idassociation)";
                            $datas = array(":login" => $login,
                                ":mdp" => $mdp,
                                ":email" => $email,
                                ":nom" => $nom,
                                ":prenom" => $prenom,
                                ":adresse" => $adresse,
                                ":codePostal" => $cp,
                                ":tel" => $tel,
                                ":fonction" => $fonction,
                                ":idassociation" => $idassociation
                            );

                            try {
                                $insertmbr = $db->prepare($sql);
                                $execute = $insertmbr->execute($datas);
                            } catch (Exception $e) {
                                echo "Erreur : " . $e->getMessage();
                                print_r($datas);
                            }
                            //header('location: connexion.php');
                        } else {
                            $errors[] = 'Vos mots de passe correspondent pas';
                        }
                    } else {
                        $errors [] = 'Adresse mail deja utilisé ';
                    }
                } else {
                    $errors[] = 'Votre adresse mail est pas valide';
                }
            } else {
                $errors[] = "Vos adresses mail correspondent pas";
            }
        }
    } else {
        $errors[] = 'Tous les champs doivent être complétés';
    }
}

echo $sql;
print_r($datas);
?>



<?php require ('views/inscriptionView.php'); ?>





J'ai un message d'erreur aussi :

Array ( [login] => jeremie [mdp] => 1234567 [mdp2] => 1234567 [nom] => dimoke [prenom] => jeremie [adresse] => 17 rue du vert village [email] => chris.dimoke@hotmail.fr [email2] => chris.dimoke@hotmail.fr [cp] => 95340 [tel] => 0769242698 [fonction] => 1 [actif] => valeur attachée au bouton [idassociation] => 1 [inscription] => Valider ) Erreur : SQLSTATE[HY000]: General error: 1364 Field 'idPersonne' doesn't have a default valueArray ( [:login] => jeremie [:mdp] => 20eabe5d64b0e216796e834f52d61fd0b70332fc [:email] => chris.dimoke@hotmail.fr [:nom] => dimoke [:prenom] => jeremie [:adresse] => 17 rue du vert village [:codePostal] => 95340 [:tel] => 0769242698 [:fonction] => 1 [:idassociation] => 1 )

jordane45 19250 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention > Anonymous95340 96 Messages postés lundi 5 octobre 2015Date d'inscription 8 novembre 2017 Dernière intervention - 17 mai 2017 à 00:19
Le message est clair :

Field 'idPersonne' doesn't have a default value

Tu n'as pas défini de valeur par défaut pour ton champ idPersonne dans ta table personnelassociatif...
Champ qui devrait, normalement, être défini en tant que CLE PRIMAIRE .. et en AUTO INCREMENTE.
Anonymous95340 96 Messages postés lundi 5 octobre 2015Date d'inscription 8 novembre 2017 Dernière intervention - 17 mai 2017 à 01:20
Super sa fonctionne enfin ! Merci Beaucoup ! j'ai réussi a gérer pour la connexion. J'ai vraiment du mal avec sql il faut que j'apprenne d'avantage encore merci
jordane45 19250 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 décembre 2017 Dernière intervention > Anonymous95340 96 Messages postés lundi 5 octobre 2015Date d'inscription 8 novembre 2017 Dernière intervention - 17 mai 2017 à 02:55
N'oublie pas de mettre le sujet en RESOLU (lien sous le titre de ta question)
Commenter la réponse de Anonymous95340