Module de vote [Résolu]

Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
- - Dernière réponse : nadeaunjigui
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
- 14 mai 2010 à 14:09
Bonjour, j suis débutant en php, suis en stage pour le développement d'un module avec le CMS joomla, il a donc été préférable de développer un nouveau composant joomla,car le module de vote ainsi prédéfini ne répond pas aux besoins du module. alors ce qu'on veut ici c'est d'avoir 3 boutons au choix, soient "pour", "contre" ou "je m'abstiens". alors un user connecté au préalable, en cliquant sur un bouton au choix, la bd devra etre remplie afin qu'en puisse savoir qui à voté et son choix. à priori, j'aimerais savoir svp, sans pour le moment entrer dans la création du composant joomla, de voir un semblable de code pour le choix d'un des 3 boutons ainsi k le remplissage de la BD pour le choix et le votant.


merci de votre aide.



Bne reception.
Afficher la suite 

Votre réponse

20/71 réponses

Meilleure réponse
Messages postés
195
Date d'inscription
dimanche 18 mars 2007
Dernière intervention
11 juillet 2015
3
Merci
certain erreur sont du au fait que je poste dans la folet je ne peut prendre soin de la syntaxe tache a bien verifier le code que je poste
pour corriger l'erreur ecrit plutot ca
echo " le nombre de votant pour Oui est de ".$row['nboui'];

Merci devil_may_cry 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de devil_may_cry
Messages postés
195
Date d'inscription
dimanche 18 mars 2007
Dernière intervention
11 juillet 2015
0
Merci
j'espere que ce code t'aidera

//dabord les bouton

<form action='voter.php' method='post'>

tu m'aider
tu m'a pas aider
je sais pas
</form>

//ensuite la script voter.php
si ton utilisateur doit etre connecter t'a forcement
$_SESSION['login'] ou $_COOKIES['login'];

// on recupere le choix vu que les bouton radion ne son pas multichoix donc on'est sur que seul une seul valeur sera envoye soit aide_oui aide_non ou aideouinon

$choix = $_POST['choix'];

//bd apres avoir fait la connexion et le choix de la bd
je suppose ta table vote('id','login','choix'); et que tu utilise les sessions
$res = mysql_query("insert into vote(login,choix)values('".$_SESSION['login']."','$choix')";

if ($res) {
//l'insertion c'est faite avec succes
//bon voila une methode pour empecher l'utilisateur de voter plusieur fois
tu peut l'envoyer un cookies avec une durer et verifier a chaque fois avant d'inserer le choix dans la base que l'utilisateur n'a pas deja voter en verifiant la presence du cookies
} else {

//mysql a retourner une erreur die(mysql_error())
}

j'espere que ce code t'ouvre le chemin
Commenter la réponse de devil_may_cry
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
Bonjour devil, merci pr ta réponse, je suis en train d'essayer de le comprendre afin de pouvoir le manipuler, mais j'aimerais savoir s'il serai possible d'utiliser les boutons de type "button" à la place des boutons radio comme le veut l'entreprise, alors, si je devrais leur proposer les boutons radio, faudrait que je leur explique pourquoi je peux pas utiliser le tupe "button".

par ailleurs je reviendrai vers toi si je trouve une incompréhension ou une ambiguïté dans le code que tu viens d'envoyer.
en plus comme j'ai dis dans le 1er message, ceci est un test de fonctionnalité, parcqu'après, il faudra développé tout le code dans le composant joomla à créer.

Merci
Commenter la réponse de nadeaunjigui
Messages postés
195
Date d'inscription
dimanche 18 mars 2007
Dernière intervention
11 juillet 2015
0
Merci
je ne connait pas jomla mais avec les boutton en php c'est possible mais la tu sera obliger d'utiliser en parallèle du javascript si tu le veux je pourrai te poster le code
Commenter la réponse de devil_may_cry
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
je veux bien stp, merci!
Commenter la réponse de nadeaunjigui
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Dernière intervention
30 août 2011
0
Merci
Hello, sans javascript tu peux savoir quel boutton à été cliqué :

<form action="voter.php" method="post"> 





</form>



<?php
if ( (isset($_POST["oui"])) && ($_POST["oui"]=="Oui") ) {
{
  // il a voté Oui
}
elseif ( (isset($_POST["non"])) && ($_POST["oui"]=="Non") ) {
{
   // Il a voté non
}
elseif ( (isset($_POST["autre"])) && ($_POST["autre"]=="Autre") ) {
{
   // Il a voté Autre
}
?>


Après tout ce qui est permission utilisateur et base de donnée c'est géré par le framework de Joomla. Pour développer ton module, je te conseil de lire la docà ce propos et de faire le module "hello word"...

_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
merci tonio, j'ai eu à lire la doc sur hello word, et c là mon pb, j pourrai facilement integrer ce code php ds sa programmation, mais tu sais, avec joomla je vais me heurter à coz du fait il va falloir intégrer un Programation orientée objet. à c k j'ai constaté
Commenter la réponse de nadeaunjigui
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Dernière intervention
30 août 2011
0
Merci
Tu n'auras pas forcément à créer des objets mais à te servir de ceux créés par le framework joomla (Pour les tables par exemple). Tu verras qu'après un temps d'adaptation ca te faciliteras la vie...

Ce ne seras pas beaucoup plus compliqué que le hello word.
Un select pour lire les resultats, un insert pour ajouter un vote...

PS : Je viens de me rendre compte que ce hello word n'aborde pas les questions de base de données. Sur cette page regarde plutôt la partie :
Developing a Model-View-Controller (MVC) Component 1.5
Notemment la partie 3 "Using the Database". Ce seras identique pour ton module.
_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
ok, je sais pa si tu as dejà bossé sur la création des composants joomla, car à cet effet, j'ai commencé à créer celui de ce module de vote(vraiment basic) à partir d'un exemple de "hello world", si tu veux j te passe un peu mes fichiers, j'avoue k j'avais pas encore lu la doc k tu viens d'envoyer.
Commenter la réponse de nadeaunjigui
Messages postés
195
Date d'inscription
dimanche 18 mars 2007
Dernière intervention
11 juillet 2015
0
Merci
la solution de Tonio_35 est valide mais moi je penser plutot a
<script type='text/javascript'>

function do_vote(val) {

document.getElementById('choix').value = val;
}
</script>
<form action="voter.php" method="post">








</form>

//voter.php

if (isset ($_POST['choix']) ) {

echo "votre choix est:".$_POST['choix']
}

Explication:
- html :
j'utilise un champs de type hidden c'est a dire que ce champs ne sera pas visible dans le formulaire dont le nom est choix et id='choix' permet d'y accder facilement en javascript le onclik="do_vote(this.value)" dit simplement que lorsqu'on clique sur le bouton d'appeler la fonction do_vote en lui passant comme paramettre la valeur du bouton cliquer
- Javascript:
la fonction permet d'acceder au champs hidden et d'y mettre la valeur passer en parametre avec document.getElementById('choix').value=val

- PHP :
la seul valeur qu'on va traiter ici rste toujour choix qui contiendra un seul parmi les trois choix
Commenter la réponse de devil_may_cry
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
ok, les gars, je pense que les 2 codes feront la mm choz, mais faut penser à renseigner la table vote de la BD après un vote sur un choix
Commenter la réponse de nadeaunjigui
Messages postés
195
Date d'inscription
dimanche 18 mars 2007
Dernière intervention
11 juillet 2015
0
Merci

$choix = $_POST['choix'];
$user = $_SESSION['pseudo'];

$sql = "insert into table_vote(user,choix) values('".$user."','".$choix."')";

if (mysql_query($sql)) {

  echo "Vote succes";

} else {

  die(mysql_error());
}
Commenter la réponse de devil_may_cry
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
voilà un le code et les fichiers utilisé pr la création de mon composant joomla.

il est importan de noter qu'il a été crée une table vote qui a pour clé primaire les "id" des 2 tables "users" et "article". alors j'aimerais savoir comment est-ce qu'on peu recuperer ces id et ds kel fichier dans la BD lorqu'un user choisi un article et clik sur l'un des boutons "pour", "contre" ou "s'abstenir". est -ce k c dans le fichier "default".php" ki comporte le code html k doit etre implémenté le code pr la requpete de renseignement de la bd,e t comment?

le point d'entrée "vote.php"

<?php
/**
* @package Joomla.Tutorials
* @subpackage Components
* components/com_hello/hello.php
* @link http://docs.joomla.org/Developing_a_...onent_-_Part_1
* @license GNU/GPL
*/

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Require the base controller

require_once( JPATH_COMPONENT.DS.'controller.php' );

// Require specific controller if requested
if($controller = JRequest::getWord('controller')) {
$path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'. php';
if (file_exists($path)) {
require_once $path;
} else {
$controller = '';
}
}

// Create the controller
$classname = 'VoteController'.$controller;
$controller = new $classname( );

// Perform the Request task
$controller->execute( JRequest::getWord( 'task' ) );

// Redirect if set by the controller
$controller->redirect();
?>

le controleur "controller.php

<?php
/**
* @package Joomla.Tutorials
* @subpackage Components
* @link http://docs.joomla.org/Developing_a_...onent_-_Part_1
* @license GNU/GPL
*/

// No direct access

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.controller') ;

/**
* Hello World Component Controller
*
* @package Joomla.Tutorials
* @subpackage Components
*/
class VoteController extends JController
{
/**
* Method to display the view
*
* @access public
*/
function display()
{
parent::display();
}

}
?>


la vue "view.html.php"

<?php
jimport( 'joomla.application.component.view');

class VoteviewVote extends JView
{
function display($tpl = null)
{
$greeting = "Hallo Welt!";
$this->assignRef( 'greeting', $greeting );
parent::display($tpl);
}
}
?>

la page par defaut "default.php"

<?php
//no redirect access
defined ('_JEXEC') or die ('Restricted access');?>
veuillez voter svp


<form action="index.php" name="vote" method="post">

,
,



</form>

et le fichier xml "vote.xml"

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install
SYSTEM "http://dev.joomla.org/xml/1.5/componentinstall.dtd">

<name>Vote</name>
<creationDate>March</creationDate>
Augustin
augustinnjigui@yahoo.fr
http://www.example.org
<copyright>Copyright Info</copyright>
<license>License Info</license>
<version>stable 1.0</version>
<description>composant de vote</description>
<!-- Site Main File Copy Section -->
<files folder="site">
<filename>index.html</filename>
<filename>vote.php</filename>
<filename>controller.php</filename>
<filename>views/index.html</filename>
<filename>views/vote/index.html</filename>
<filename>views/vote/view.html.php</filename>
<filename>views/vote/tmpl/index.html</filename>
<filename>views/vote/tmpl/default.php</filename>
</files>

<!-- Administration Menu Section -->
<menu>Vote AG</menu>
<!-- Administration Main File Copy Section -->
<files folder="admin">
<!-- Site Main File Copy Section -->
<filename>index.html</filename>
<filename>admin.vote.php</filename>
</files>
Commenter la réponse de nadeaunjigui
Messages postés
195
Date d'inscription
dimanche 18 mars 2007
Dernière intervention
11 juillet 2015
0
Merci
comme je te l'avait dit je n'ai jamais utiliser joomla mais juste pour t'aider c'est possible de recuperer le 2 id dabord tu dit que l'utilisateur selectionnne l'article donc si la selection se fait apartir d'une liste deroulante tu peut passer l'id de l'article avec par exemple
<select name='articles'>
<option value='id_article1'>article1</option>
</select>

et tu le recupere dans vote.php
$id_article = $_POST['articles'];
pour l'id de l'utilisateur tu fait

$res = mysql_query("select id from users where login='".$_SESSION['login']."'");

id_user = mysql_result($res,0,'id');
Commenter la réponse de devil_may_cry
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
Oui, j comprend, mais quand j parle de selection, c tout simplement que l'user clique sur un titre d'article, ensuite il est redirigé vers son contenu ainsi que les 3 boutons de vote, alors il cliquera sur l'un des choix soit "pour", "contre", ou "autre" pour voter.
Commenter la réponse de nadeaunjigui
Messages postés
195
Date d'inscription
dimanche 18 mars 2007
Dernière intervention
11 juillet 2015
0
Merci
donc dans ta page qui doit faire l'affichage des liens des articles tu fait par exemple

echo "Titre de l'article"

$id_article represente l'id de l'article que tu a extrait de ta table quand tu a fait l'affichage des lien vers les articles

maintenant dans la page qui doit afficher l'article ainsi que les 3 bouton de vote tu fait

//recuperartion de l'id de l'article
$id_article = $_GET['id_article'];


ton formulaire doit etre recrit comme suit en

<form action="vote.php?idarticle=$id_article">
//tes button ici
</form>

la ou mon aide sera restreinte c'est que je ne sais pas si jommla utilise oui ou non un systeme de template si oui et ce qui est probable tu doit utiliser la fonction ou methode qu'il t'offre pour assigner la valeurs de $id_article a sa place dans le formulaire et si non t'a juste a afficher le formulaire en php et la c'est plus facile
Commenter la réponse de devil_may_cry
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
ok, mais quand je rentre dans joomla, ils je me rend compte qu'il effectue lui-mm les liens, pas besoin de mettre a href.bon, j vais reparcourrir le truc et te fais signe.
Commenter la réponse de nadeaunjigui
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
J'ai oublié de demander, c koi le fichier où on met le code des boutons, et clui voter.php ? dois-je comprendr par là kil ya 2 fichiers à créer ?
Commenter la réponse de nadeaunjigui
Messages postés
195
Date d'inscription
dimanche 18 mars 2007
Dernière intervention
11 juillet 2015
0
Merci
Oui, j comprend, mais quand j parle de selection, c tout simplement que l'user clique sur un titre d'article, ensuite il est redirigé vers son contenu ainsi que les 3 boutons de vote, alors il cliquera sur l'un des choix soit "pour", "contre", ou "autre" pour voter.

d'apres ce que t'a dis ici il y'a un lien a cliquer sur l'article qui mene vers une page ou l'affichage de l'article aura lieu c'est sur cette page quoi doit s'afficher le formulaire pour ce qui est de l'id de l'article meme avec joomla je crois qu'il doit faire passe l'id ou le nom de l'article a la page d'affichage t'a qu'a trouver comment il fait si tu arrive fait moi signe je te la solution
Commenter la réponse de devil_may_cry
Messages postés
39
Date d'inscription
mercredi 8 août 2007
Dernière intervention
14 mai 2010
0
Merci
Ok, dans joomla, dè k je crée mon article et k je le publie, il apparai avc le titre de l'article sur la page specifié,et dans chaque article je vai inserer les paramètres de l'aafichage du lien du compasant(ça tinkiète, je vais gerer moi mêm). laissons d'abord joomla, on reviendra dessu, ce k je veu savoir c sur kel fichier faire kel code, est-ce que je dois mettre tout le code soient celui des boutons et celui php dans le mm fichier voter.php ?
Commenter la réponse de nadeaunjigui

Vous n'êtes pas encore membre ?

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

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 et codes sources.

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