Signaler

Projet informatique [Résolu]

Posez votre question Anonymous95340 94Messages postés lundi 5 octobre 2015Date d'inscription 17 mai 2017 Dernière intervention - Dernière réponse le 17 mai 2017 à 02:55 par jordane45
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 
Utile
+0
plus moins
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 94Messages postés lundi 5 octobre 2015Date d'inscription 17 mai 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.
Répondre
jordane45 17598Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 29 juin 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 ??
Répondre
Donnez votre avis
Utile
+0
plus moins
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 17598Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 29 juin 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
Répondre
Anonymous95340 94Messages postés lundi 5 octobre 2015Date d'inscription 17 mai 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 )

Répondre
jordane45 17598Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 29 juin 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.
Répondre
Anonymous95340 94Messages postés lundi 5 octobre 2015Date d'inscription 17 mai 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
Répondre
jordane45 17598Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 29 juin 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)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !