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 :

Insérer les voix de votes dans la base de données [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut Insérer les voix de votes dans la base de données
    Salut les développeurs. Je suis entrain de réaliser un projet sur la gestion de vote en ligne. Mais je suis confronté à un problème qui me tracasse. J'ai créer une page web ayant les boutons qui représentent les candidats. Je veux donc que en cliquant sur un bouton pour voter, la voix soit insérer dans la Vote de la base de données.
    En fait voilà la description du projet :
    - Un bureau de vote est créer dans un arrondissement
    - Un electeur est inscrit dans un bureau de vote
    - un electeur vote une et une seule fois par election et pour un candidat donné

    Voilà mon MLD, le code SQL des tables et la page web de vote :
    Nom : MLD.JPG
Affichages : 1142
Taille : 48,4 Ko

    Nom : vote.JPG
Affichages : 985
Taille : 42,3 Ko


    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
    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
     
    CREATE TABLE Region(
    	IDRegion INT NOT NULL AUTO_INCREMENT,
    	NomRegion VARCHAR(30) NOT NULL,
    	CONSTRAINT Region_PK PRIMARY KEY (IDRegion)
    	) ENGINE=INNODB;
     
    CREATE TABLE Departement(
    	IDDepartement INT NOT NULL AUTO_INCREMENT,
    	NomDepartement VARCHAR(30) NOT NULL,
    	IDRegion INT NOT NULL,
    	CONSTRAINT Daprtement_PK PRIMARY KEY (IDDepartement),
    	CONSTRAINT Departement_Region_FK FOREIGN KEY (IDRegion) REFERENCES Region(IDRegion)
    	) ENGINE=INNODB;
     
     
     
    CREATE TABLE Arrondissement(
    	IDArrondissement INT NOT NULL AUTO_INCREMENT,
    	NomArrondissement VARCHAR(30) NOT NULL,
    	IDDepartement INT NOT NULL,
    	CONSTRAINT Arrondissement_PK PRIMARY KEY (IDArrondissement),
    	CONSTRAINT Arrondissement_Departement_FK FOREIGN KEY (IDDepartement) REFERENCES Departement(IDDepartement)
    	) ENGINE=INNODB;
     
     
     
     
    CREATE TABLE Bureau_de_vote(
    	IDBureau_de_vote INT NOT NULL AUTO_INCREMENT,
    	NomBureau_de_vote VARCHAR(30) NOT NULL,
    	IDRegion INT NOT NULL,
    	IDDepartement INT NOT NULL,
    	IDArrondissement INT NOT NULL,
    	CONSTRAINT Bureau_de_vote_PK PRIMARY KEY (IDBureau_de_vote),
    	CONSTRAINT Bureau_de_vote_Region_FK FOREIGN KEY (IDRegion) REFERENCES Region(IDRegion),
    	CONSTRAINT Bureau_de_vote_Departement_FK FOREIGN KEY (IDDepartement) REFERENCES Departement(IDDepartement),
    	CONSTRAINT Bureau_de_vote_Arrondissement_FK FOREIGN KEY (IDArrondissement) REFERENCES Arrondissement(IDArrondissement)
    	) ENGINE=INNODB;
     
     
     
     
    CREATE TABLE Candidat(
    	IDCandidat INT NOT NULL AUTO_INCREMENT,
    	NomCandidat VARCHAR(30) NOT NULL,
    	NomParti VARCHAR(5)  NOT NULL,
    	CONSTRAINT Candidat_PK PRIMARY KEY (IDCandidat)
    	) ENGINE=INNODB;
     
     
     
     
    CREATE TABLE Election(
    	IDElection INT NOT NULL AUTO_INCREMENT,
    	NomElection VARCHAR(30) NOT NULL,
    	DateElection DATE  NOT NULL,
    	CONSTRAINT Election_PK PRIMARY KEY (IDElection)
    	) ENGINE=INNODB;
     
     
     
     
    CREATE TABLE Electeur(
    	IDElecteur INT NOT NULL AUTO_INCREMENT,
    	NomElecteur VARCHAR(30) NOT NULL,
    	PrenomElecteur VARCHAR(30) NOT NULL,
    	Sexe VARCHAR (1),
    	DateNaiss DATE,
    	Lieu VARCHAR(30),
    	NomPere VARCHAR(30),
    	NomMere VARCHAR(30),
    	Commune VARCHAR(30),
    	Bureau_de_vote VARCHAR(30),
    	Domicile VARCHAR(30),
    	Profession VARCHAR(30),
    	CONSTRAINT Electeur_PK PRIMARY KEY (IDElecteur)
    	) ENGINE=INNODB;
     
     
    CREATE TABLE Vote(
    	IDVote INT NOT NULL,
    	IDCandidat INT NOT NULL,
    	IDElection INT NOT NULL,
    	IDElecteur INT NOT NULL,
    	IDBureau_de_vote INT NOT NULL,
    	CONSTRAINT Vote_PK PRIMARY KEY (IDCandidat,IDElection,IDElecteur,IDBureau_de_vote)
    	) ENGINE=INNODB;

    Merci d'avance.

    Cordialement !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Quelle(s) requête(s) as-tu déjà essayée(s) ?
    Quel problème rencontres-tu ?
    Un message d'erreur ? Lequel ?
    Un résultat erroné ? Donne-nous un jeu d'essai avec le résultat attendu et le résultat obtenu ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Salut, Merci déjà pour le temps que vous avez pris pour prendre acte de mon soucis.
    C'est comme je l'ai dit dans mon dernier poste. Lorsque je clique sur un bouton la voix n'est pas insérée dans la base.

    Voilà mon code du fichier de connexion à la base : connexionPDO.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    try{
        $bdd= new PDO('mysql:host=localhost;dbname=electionspad','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
    }
    catch(Exception $e){
        die('Erreur : '.$e->getMessage());
    }
    ?>


    Voilà mon code du fichier index : index.php
    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
    					<?php
    include('includes/connexionPDO.php');
    ?>	
     
    		<?php 
    					include("traitement/traitementVote.php");
     
    			?>
     
    <!DOCTYPE html>
    <html>
    		<head>
    			<meta charset="utf-8" />
    			<link rel="stylesheet" href="style.css" />
    			<title>Accueil</title>
    		</head>
    		<body>
    		<center>
    		<p><h2>Faites enregistrer votre voix en cliquant sur le bouton correspondant à votre choix !</h2></p>
    		<table border="0">
    			<form method="POST" action="index.php">
    					<tr>
    						<td><br><input id="parti1" name="parti1" type="submit" value="PARTI 1"></td>
    						<td><br><input type="submit" value="PARTI 1"></td>
    						<td><br><input type="submit" value="PARTI 2"></td>
    						<td><br><input type="submit" value="PARTI 3"></td>
    						<td><br><input type="submit" value="PARTI 4"></td>
    					</tr>
     
    				</table>
    				<br>
    				<td><input type="submit" value="Déconnexion"></td>
    				</center>	
    		</form>
     
     
    	</body>
    </html>



    Voilà le code du fichier de traitement qui contient le code SQL d'insertion : traitementVote.php
    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
    <?php
      srand(time(0));
      include('../includes/connexionPDO.php');
     
     
      $reponse=$bdd->query('SELECT  IDCandidat, IDElection, IDElecteur FROM etudiant WHERE parti1= \''.$_POST['parti1'].'\' ');
     
    	$reponsevote=$bdd->prepare('INSERT INTO vote VALUES(:IDCandidat ,:IDElection ,:IDElecteur)');
     
    	$reponsevote->execute(array(
    									'IDCandidat' => $_POST['IDCandidat'],
    									'IDElection' => $_POST['IDElection'] , 
    									'IDElecteur' => $_POST['IDElecteur'] ));	
     
     
    	echo 'Voix comptée avec succès : ';
     
    	$reponsevote->closeCursor();
     
      }
     
    ?>


    Cordialement !

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    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 511
    Par défaut
    bonsoir,
    au niveau de la fonction execute(), les paramètres doivent être précédés par deux points.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $reponsevote=$bdd->prepare('INSERT INTO vote VALUES(:IDCandidat ,:IDElection ,:IDElecteur)');
    $reponsevote->execute(array(
    	':IDCandidat' => $_POST['IDCandidat'],
    	':IDElection' => $_POST['IDElection'] , 
    	':IDElecteur' => $_POST['IDElecteur'] ));
    autre chose, vérifie aussi que la variable $_POST existe bien et qu'elle contient les valeurs de IDCandidat, IDElection et IDElecteur, par-ce que dans ton formulaire je ne vois aucun élément avec l'attribut name='IDCandidat/IDElection/IDElecteur'

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je dirais que les informations à insérer dans la requête INSERT proviennent de la requête SELECT. Donc il faut récupérer le résultat de la requête select d'abord.
    Mais la structure me parait bizarre. Logiquement, ton formulaire devrait proposer seulement une liste de candidats, et éventuellement l'identifiant de l'élection. L'identifiant du votant (électeur) devrait venir de la session ou au moins d'une authentification.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Citation Envoyé par Celira Voir le message
    Logiquement, ton formulaire devrait proposer seulement une liste de candidats, et éventuellement l'identifiant de l'élection. L'identifiant du votant (électeur) devrait venir de la session ou au moins d'une authentification.
    .

    Salut, merci pour vos réponses. j'ai restructuré le formulaire comme vous me l'avez conseillez.

    Nom : votr.JPG
Affichages : 964
Taille : 36,6 Ko


    Mais Voilà les codes, qui me renvoient des erreurs. Je ne sais pas là où je pêche.

    Code vote.php:

    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
    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
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    <?php 
     
     
    try
    {
        $bdd= new PDO('mysql:host=localhost;dbname=elections','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
    ?>	
     
    <!DOCTYPE HTML>
     
    <html>
     
    <head>
      <title>Ajout d'un utilisateur</title>
      <meta charset="utf-8"/>
      <link rel="stylesheet" type="text/css" href="styleIndex.css">
      <link rel="stylesheet" type="text/css" href="style.css">
      <style>
    	.trait
    	{
    		width: 100%; 
    		height: 40px; 
    		background-color: #8C5DA2;
    	}
    	.titre
    	{
    		display: inline-block;
    	}
     
    	a
    	{
    		font-style: italic;
    		font-size: x-large;
    	}
      </style>
     
    </head>
     
    <body>    
     
    <div id="bloc_page" >
    	<center> 
     
    		<?php
    		include('includes/header.php');
     
    		?>
     
    		<hr style="width: 100%; height: 1px" color="blue">
    	<center>
    	  <form action="traitement/traivote.php" method="POST">
    		<table border="0">	
    			<tr><td align="right"><b><label for="bureau">Bureau de vote : </label></b></td>
    							 <td>
    							<select name="bureau" id="bureau">
    								<?php
     
    									$reponse = $bdd->query('SELECT * FROM bureau_de_vote');
     
    									while ($donnees = $reponse->fetch())
    									{
    									?>
    										<option value="<?php echo $donnees['IDBureau_de_vote']; ?>"> 
    											<?php echo $donnees['NomBureau_de_vote']; ?>
    										</option>
    									<?php
    									}
     
    										?>
    							</select>
    							</td>
     
     
     
     
    			<td align="right"><b><label for="election">Election : </label></b></td>
    							 <td>
    							<select name="election" id="election">
    								<?php
     
    									$reponse = $bdd->query('SELECT * FROM election');
     
    									while ($donnees = $reponse->fetch())
    									{
    									?>
    										<option value="<?php echo $donnees['IDElection']; ?>"> 
    											<?php echo $donnees['NomElection']; ?>
    										</option>
    									<?php
    									}
     
    										?>
    							</select>
    							</td>
     
     
     
    							<td align="right"><b><label for="candidat">Candidat : </label></b></td>
    							 <td>
    							<select name="candidat" id="candidat">
    								<?php
     
    									$reponse = $bdd->query('SELECT * FROM candidat');
     
    									while ($donnees = $reponse->fetch())
    									{
    									?>
    										<option value="<?php echo $donnees['IDCandidat']; ?>"> 
    											<?php echo $donnees['NomCandidat']; ?>
    										</option>
    									<?php
    									}
     
    										?>
    							</select>
    							</td>
    						</tr>
    			</table>
     
    			<tr><td align="center"><br/><input type="submit" value="Voter"></td><td align="center">    <input type="reset" value="Anbandonner"><br/></td>
     
    	 </form>
    	</center>
    	<br>
     
    	</div>
    				<footer>
                        <h5><font color="white">Copyright © 2018 - e-elections - Tous droits réservés.</font></h5>
                    </footer>
    </body>
    </html>


    Code de traitement, traivote.php

    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
    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
     
    <?php 
     
     
    try
    {
        $bdd= new PDO('mysql:host=localhost;dbname=elections','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
     
     
    $reponse=$bdd->query('SELECT IDVote FROM vote WHERE IDVote= IDVote ');
     
    // Insertion
    $req = $bdd->prepare('INSERT INTO vote(IDBureau_de_vote,IDElection, IDCandidat) VALUES(:bureau, :election, :candidat,CURDATE())');
    $req->execute(array(
    	'bureau' =>$_POST['bureau'],
        'election' => $_POST['election'],
        'candidat' => $_POST['candidat']));
     
     
     
    	echo '
    <!DOCTYPE HTML>
    
    <html>
    
    <head>
      <title>Connexion</title>
      <meta charset="utf-8"/>
      <link rel="stylesheet" type="text/css" href="styleIndex.css">
      <link rel="stylesheet" type="text/css" href="style.css">
      <style>
    	.trait
    	{
    		width: 100%; 
    		height: 40px; 
    		background-color: #8C5DA2;
    	}
    	.titre
    	{
    		display: inline-block;
    	}
    	
    	a
    	{
    		font-style: italic;
    		font-size: x-large;
    	}
      </style>
      
    </head>
    
    <body>    
    <br/><br/><br/>
    <div id="bloc_page" >
    <br/>
    	<center> 
    	<br>
    		<table border="0">
    			<tr><td colspan="2"><H2>Message</H2> </td></tr>
    				
    		</table>
    		
    		<hr style="width: 100%; height: 1px" color="blue">
    	
    	<center>
    	  <form action="traitement/traiConnexion.php" method="POST">
    		<table border="0">	
    			<tr><td align="center" colspan="2"><h2><b><font color="green"><Label for="pseudo"><b>Vote ajouté avec succès :</label></font></b></h2></td></tr></br>
    			
    			<tr><td align="center" colspan="2"><p><a href="../index.php" >Merci !</a></h5></p></tr>
    			
    		</table>
    	 </form>
    	</center>
    	<br></br>
    	
    	</div>
    	<br>
                    <footer>
                        <h5><font color="white">Copyright © 2018 - e-elections - Tous droits réservés.</font></h5>
                    </footer>
    </body>
    </html> ';
     
    	?>

    Ma base de données : elections.sql



    Code d'erreur :
    Nom : erreur.JPG
Affichages : 931
Taille : 70,8 Ko




    Cordialement :

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

Discussions similaires

  1. Comment sécuriser les mots de passe dans la base de données ?
    Par yacine.dev dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 07/04/2010, 10h59
  2. Réponses: 1
    Dernier message: 30/03/2009, 17h05
  3. [MySQL] Enregistrer les images et PDF dans la base de données
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/10/2008, 13h18
  4. Réponses: 3
    Dernier message: 17/03/2008, 00h46

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