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 :

vote sous php


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut vote sous php
    Bonjour,
    J’ai fait un système de vote sous PHP et MySQL avec 3 tables*: CANDIDATS, ELECTEURS et VOTES.
    J’aimerai qu’il puisse avoir une condition qui va me permettre de vérifier le nom de l’électeur dans la table ELECTEURS avant de confirmer le vote (insérer les données dans le table VOTES). Comment dois-je faire*?

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Une requête SELECT ... WHERE ....
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    comment éviter que le candidat duplique un vote

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce n'est pas possible à moins de lui demander sa carte d'identité.
    Tu peux seulement lui compliquer la tache par exemple en l'obligeant à créer un compte ou en n'autorisant qu'un seul vote par adresse IP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Merci sabotage pour les réponses précédentes. Je vais exposer en long et en large mon problème.
    Je veux programmer une application androïde d’élection qui utilise PHP et MySQL pour mon école mais le code PHP me pose un petit problème.
    J’ai créé 3 tables dans ma base de données*: CANDIDATS (noms et prénoms des candidats), ELECTEURS (noms, prénoms, mots de passé et codes des électeurs) et VOTES (nom de l’électeur, code de l’électeur et nom du candidat choisi).
    L’électeur remplit les différentes informations de la table vote dans des champs de texte et appuie sur le bouton VOTER pour insérer les données dans la table VOTES, il y aura une condition qui va vérifier si les informations insérées figurent ou non dans la table VOTES.
    Je veux éviter que l’électeur remplisse la table VOTES avec des informations qui n’existent pas dans la table ELECTEURS
    Mon problème est le suivant*: QUELLE EST LA REQUETE QUE JE DOIS UTILISER ET COMMENT DOIT ETRE MA CONDITION AFIN DE VERIFIER QUE LES NOM ET CODE DE L’ELECTEUR FIGURENT DANS LA TABLE*ELECTEURS AVANT D’INSERER LES DONNEES DANS LA TABLE VOTES*?

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Connais-tu SQL ?

    Dans ton modèle de données tu ne peux gérer qu'une seule élection.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ Il faut surtout commencer avec une bonne CONCEPTION des tables.

    CANDIDATS
    • id_candidat (INT auto-incrément)
    • nom_candidat
    • prenom_candidat


    ELECTEURS
    • id_electeur (INT auto-incrément)
    • nom_electeur
    • prenom_electeur
    • mdp_electeur
    • code_electeur


    VOTES
    • id_vote (INT auto-incrément)
    • id_electeur
    • id_candidat
    • date_vote

    dans la table VOTES, on ne mets que les identifiants des electeurs et candidats, car ces identifiants sont UNIQUES.

    Pour récupérer (afficher) les noms et autres informations, on utilisera des JOINTURES
    ex. :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "SELECT C.nom_candidat, C.prenom_candidat, E.nom_electeur, E.prenom_electeur, E.code_electeur
    FROM VOTES V
    INNER JOIN ELECTEURS E ON V.id_electeur = E.id_electeur
    INNER JOIN CANDIDATS C ON V.id_candidat = C.id_candidat 
    "

    2/ Pour ta question (vérifier qu'il n'a pas DEJA voté) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT COUNT(*) FROM VOTES WHERE id_electeur = ". $celui_enregistre_a_la_connexion_par_utilisateur.'"
    Si le résultat n'est pas 0, alors il a déjà voté.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    $celui_enregistre_a_la_connexion_par_utilisateur. Je ne comprends pas cette partie

  9. #9
    Invité
    Invité(e)
    Par défaut
    L'électeur doit se connecter avant de pouvoir voter, non ?
    Donc on connait son id (unique !), qu'on peut enregistrer dans une variable de session.

    On cherche alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT COUNT(*) FROM VOTES WHERE id_electeur = ". intval($_session['id']) .""

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    la variable $_session['id'] doit être initialisée au début du code ?

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    En fait je n’ai jamais appris le PHP/MySQL mais j’espère que cette partie de mon projet avec les réponses que chacun m’apporte vont me permettre d’avoir des connaissances sur PHP/MySQL. Voilà pourquoi je voudrais savoir si je peux avoir l’explication sur cette requête*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "SELECT COUNT(*) FROM VOTES WHERE id_electeur =  " . intval( $_session['id'] ) ." "
    Et avoir un avis sur cette partie du code*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $requete = "select count(*) from votes where id_electeur = " .  intval ( $_session['id'] )." ";
    $resultat = mysqli_query($connexion,$requete);
     
    if(mysqli_num_rows($resultat)>0)
    {
    ……………………..
    }
    else
    {
    $requete = "SELECT C.nom_candidat, C.prenom_candidat, E.nom_electeur, E.prenom_electeur, E.code_electeur FROM VOTES V
    	INNER JOIN ELECTEURS E ON V.id_electeur = E.id_electeur
    	INNER JOIN CANDIDATS C ON V.id_candidat = C.id_candidat";
    $resultat = mysqli_query($connexion,$requete);

  12. #12
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "SELECT COUNT(*) FROM VOTES WHERE id_electeur =  " . intval( $_session['id'] ) ." "
    on compte le nombre de ligne où id_electeur est celui enregistré en SESSION.

    • Si il y en a UN, c'est qu'il a DEJA voté.
    • S'il y en a ZERO, il n'a pas encore voté.

    On écrira même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "SELECT COUNT(*) AS nbre_fois_vote FROM VOTES WHERE id_electeur =  " . intval( $_session['id'] ) ." "
    et on récupère nbre_fois_vote.

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut vote sous php
    Est ce que l'écriture du code suivant est exacte ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $requete = "SELECT COUNT(*) AS nbre_fois_vote FROM VOTES WHERE id_electeur =  " . intval( $_session['id'] ) ." "
    $resultat = mysqli_query($connexion,$requete);
     
    if(mysqli_num_rows($resultat)=0)
    {
    	$requete = "SELECT C.nom_candidat, C.prenom_candidat, E.nom_electeur, E.prenom_electeur, E.code_electeur FROM VOTES V
    	INNER JOIN ELECTEURS E ON V.id_electeur = E.id_electeur
    	INNER JOIN CANDIDATS C ON V.id_candidat = C.id_candidat";
    	$resultat = mysqli_query($connexion,$requete);
    }
    else
    {
    	// l'utilisateur a déjà voté
    }
    La variable $nbre_fois_vote doit être un nombre inséré via le formulaire ou un intenger autoincrémentable ?

  14. #14
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Il faut écrire :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(mysqli_num_rows($resultat)==0)

    et non pas

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(mysqli_num_rows($resultat)=0)
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  15. #15
    Invité
    Invité(e)
    Par défaut
    On reprend la LOGIQUE (et la structure des tables que j'ai donné ICI):

    1/ l'électeur SE CONNECTE avec un identifiant et un mot de passe (ou n'importe quoi qui permette de l'identifier de façon UNIQUE)
    -> on vérifie qu'il est bien dans la table ELECTEURS
    -> si oui, connexion OK -> on stocke son id dans une SESSION : $_SESSION['id_electeur'];

    2/ On vérifie s'il a DEJA voté (voir 4/ Traitement du vote)
    s'il a déjà voté, alors il existe une ligne dans la table VOTES avec son identifiant id_electeur
    -> on fait la requête : "SELECT COUNT(*) AS nbre_de_fois_ou_cet_electeur_a_voté FROM VOTES WHERE id_electeur = ".$_SESSION['id_electeur'].";" pour compter le nombre de ligne avec cet id_electeur
    si 0 : il N'a PAS encore voté
    si > 0 : il a DEJA voté.

    3/ Il n'a pas encore voté : IL PEUT VOTER
    -> affichage du formulaire de vote

    4/ Traitement du vote (formulaire) : on enregistre son vote dans la table VOTES
    -> donc son id_electeur est enregistré dans la table VOTES
    -> donc il existera alors UNE ligne avec cet id_electeur (voir 2/ -> il ne pourra plus voter)



    C'est plus clair, ou toujours pas ?

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut vote sous php
    C'est plus clair merci, je vais maintenant appliquer tout ce que vous m'avez donné comme renseignement

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut vote sous php
    Voilà le code que j'ai réalisé après avoir suivi vos instructions :

    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
     
    $pseudo = $_POST["pseudo"];
    $mdp = $_POST["mdp"];
    require "init.php";
     
    $query = "SELECT * FROM electeurs WHERE pseudo like '".$pseudo."' and mdp like '".$mdp."';";
    $result = mysqli_query( $con, $query);
     
    if(mysqli_num_rows($result)>0)
    {
    	$query1 = "SELECT COUNT(*) AS nbre_vote FROM VOTES WHERE id_electeur = ".$_SESSION['id_electeur'].";"
    	$result1 = mysqli_query($con, $query1);
     
    	if(nbre_vote==0)
    	{
    		// Affichage du formulaire de vote
    		echo "<form action='vote.php' method='post'>";
    		echo "<tr>";
    		echo "<td><input type='text' name='id_candidat' id='id_candidat'/></td>";
    		echo "<td><input type='submit' name='vote' value='Vote'/></td></tr>";
     
    		// Requete qui insere les données dans la table vote
    		if(isset($_POST['id_candidat'])
    		{
    			$_POST['id_candidat'] = (int)$_POST['id_candidat'];
     
    			$query2 = "INSERT INTO VOTES(id_candidat, id_electeur) values (".$_POST['id_candidat'].", ".$_SESSION['id_electeur'].");";
    			$result2 = mysqli_query($con, $query2);
    		}
    		else
    		{
    			echo "Veuillez remplir la zone de texte avec un nombre entier !!!";
    		}
    	}
    	else
    	{
    		echo "Vous avez déjà voté !!";
    	}
    }
    else
    {
    	$response = array();
    	$code = "login_false";
    	$message = "Veuillez entrer les bonnes coordonnées !";
    	array_push($response,array("code"=>$code,"message"=>$message));
    	echo json_encode(array("server_response"=>$response));
    }

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    à part les <tr><td> qui n'ont rien à faire là et l'histoire du "Veuillez remplir la zone de texte avec un nombre entier !!!" que je ne comprends pas : ça donne quoi ?

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut vote sous php
    Bonjour
    Il y a une erreur qui s'affiche :
    ( ! ) Parse error: syntax error, unexpected '$result1' (T_VARIABLE) in C:\wamp\www\voteBDE\best_vote.php on line 12

    J'ai mis ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    else
    		{
    			echo "Veuillez remplir la zone de texte avec un nombre entier !!!";
    		}
    afin de dire à l'utilisateur qu'il a utilisé les mauvaises coordonnées dans la zone de texte.
    Et j'aimerai insérer automatiquement l'id_candidat dans la table VOTES au lieu que l'utilisateur puisse utiliser une zone de texte. Est ce possible avec un formulaire radio ?

  20. #20
    Invité
    Invité(e)
    Par défaut
    1/ il manque un ; à la fin de la ligne 11 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query1 = "SELECT COUNT(*) AS nbre_vote FROM VOTES WHERE id_electeur = ".$_SESSION['id_electeur'].";";
    Remarque :
    • le .";" sert à clôturer la requête SQL. Il n'est pas obligatoire
    • le ; (à la fin) sert à terminer l'instruction PHP. Il est obligatoire


    2/ Quelle "zone de texte" ?

    Montre le(s) formulaire(s).

Discussions similaires

  1. Erreur sous PHP MyAdmin (PMA database?)
    Par Matlight dans le forum Installation
    Réponses: 5
    Dernier message: 28/10/2010, 19h38
  2. [Dates] Planification sous PHP !?
    Par Thierry8 dans le forum Langage
    Réponses: 11
    Dernier message: 20/12/2005, 13h39
  3. [Sécurité] creation de compte sous php
    Par marouman dans le forum Langage
    Réponses: 1
    Dernier message: 02/12/2005, 22h44
  4. [MySQL] Requete sous php
    Par cubepiege dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/11/2005, 18h45
  5. requête mysql sous php
    Par remi59 dans le forum Débuter
    Réponses: 9
    Dernier message: 03/07/2003, 10h39

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