Fork me on GitHub




(1) 2 »


bouton radio et BDD
Semi pro
Inscrit: 22/02/2004 20:41
Messages: 997
J'aurais aimer avoir un petit exemple avec Xoops sur les boutons radios et la base de donnée.


J'ai crée une table avec que des champs Yes/No
Citation :

#
# Table structure for table `xoops_table`
#

CREATE TABLE xoops_table (

uid int(11) NOT NULL auto_increment,
actifnewbb tinyint(1) unsigned default '0',
actifsmartsection tinyint(1) unsigned default '0',
actifuser tinyint(1) unsigned default '0',
actifsmartfaq tinyint(1) unsigned default '0',
actifextgallery tinyint(1) unsigned default '0',
actifxcgal tinyint(1) unsigned default '0',
actifxcgalvote tinyint(1) unsigned default '0',
actifwordbook tinyint(1) unsigned default '0',
actifxmovie tinyint(1) unsigned default '0',
actifxmoviev tinyint(1) unsigned default '0',
actifstories tinyint(1) unsigned default '0',
actifcomments tinyint(1) unsigned default '0',
actifdownloads tinyint(1) unsigned default '0',
actifdloadvotes tinyint(1) unsigned default '0',
actiflinks tinyint(1) unsigned default '0',
actiflinkvotes tinyint(1) unsigned default '0',
actifweblinks tinyint(1) unsigned default '0',
actifweblinksvotes tinyint(1) unsigned default '0',
actifwfsections tinyint(1) unsigned default '0',
actifwfsvotes tinyint(1) unsigned default '0',
actifposts tinyint(1) unsigned default '0',

PRIMARY KEY (uid)
) TYPE=MyISAM;


Par exemple avec "actifnewbb", dans l'administration, j'ai 2 boutons radio(1er bouton=activer=1) et (2eme bouton= desactivé=0) qui permettent d'activer l'utilisation du module newbb.

Si je clique sur le 1er bouton donc "1" et que je valide mon choix grace à un bouton "modifier". La valeur va se mettre à jour, donc à 1 dans le champs "actifnewbb" de la BDD.

Ensuite, si je vais dans l'administration, le 1er bouton radio(activé=1) doit etre coche pour indiquer le module est activé.

J'aurais aimé que quelqu'un me fasse un exemple avec ce que je viens de dire en php

Merci d'avance

Posté le : 23/06/2007 20:17
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Régulier
Inscrit: 28/10/2005 17:17
De Switzerland
Messages: 350
Slt,

En fait tu es dans le cas d'une mise à jour de donnée, c'est à dire qu'avant d'afficher ton formulaire, tu dois faire un requête qui va t'extraire les données de base, afin d'avoir la valeur actuel de ton champs : '1' = activé / '0' = désactivé.

Ensuite tu défini ton formulaire,
- Pour un bouton radio c'est :

XoopsFormRadioYN(string $caption, string $name, [int $value = null], [string $yes=_YES], [string $no=_NO])


appliqué dans un code (exemple) .

$form->addElement(new XoopsFormRadioYN($caption$name, ($myObj->getVar('field_name')==1) ? 0));


$form : Variable représentant ton formulaire
$caption : Titre qui s'afficher dans ton formulaire ('Active Newbb')
$name : C'est le nom qui te permettra de récupérer la valeur, vis une variable $_POST (si ton dormulaire est envoyé par cette méthode)

Ensuite, le but est d'affiché la valeur initial (1 activé/0 désactivé).

Tu pourrais te contenter d'afficher bêtement cette valeur :
$myObj->getvar('activenewbb'), sauf que si pour une raison ou une autre la valeur est différente de 0 ou 1, tu auras une erreur.
Cette façon de faire : ($myObj->getVar('activenewbb')==1) ? 1 : 0) permet d'éviter cette erreur éventuelle, à savoir :
- Si la valeur de 'activenewbb' est égale à 1 ( donc activé), alors active le bouton (le bouton Oui sera coché), sinon (normalement 0) pour toutes autres valeurs,a lors désactive le bouton (le bouton Non sera coché).

C'est bon, compris ?


DSL pour être plus clair, c'est pas forcément évident

Posté le : 23/06/2007 20:42

Le savoir ne peut progresser que s'il est partagé - Share your knowledge
Documentation, suivi et tutorial sur la réalisation d'un module ici
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Régulier
Inscrit: 28/10/2005 17:17
De Switzerland
Messages: 350
J'ai pas précisé, mais je suppose que tu sais ramener les valeurs contenue dans ta table, via un objet ?

Sinon, en résumé tu définis ceci ton formulaire

$myObjHandler xoops_getmodulehandler('myClass''myModule');
$myObj $myObjHandler->getObj($_POST['Obj_id']);


Et il faut bien sur écrire également la class {myClass}

et toute tes valeurs (activexxx) sont dispo via l'objet $myObj.


PS : J'ai noté $myObj, mais tu peux l'appelé comme tu veux

Posté le : 23/06/2007 20:48

Le savoir ne peut progresser que s'il est partagé - Share your knowledge
Documentation, suivi et tutorial sur la réalisation d'un module ici
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Guest_
B'soir,

Je ne sais pas trop si cela peut vous servir, mais il y a un wiki ici à propos des formulaires.

@+

Posté le : 23/06/2007 23:02
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Semi pro
Inscrit: 22/02/2004 20:41
Messages: 997
Ok, merci pour les reponses, je vais voir un peu tout ça, j'ai la nuit devant moi


PS: pourquoi dans ce forum on peut pas editer ?

Posté le : 23/06/2007 23:12
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Régulier
Inscrit: 28/10/2005 17:17
De Switzerland
Messages: 350
Citation :

kraven30 a écrit:
PS: pourquoi dans ce forum on peut pas editer ?


Parceque ceux qui maitrise l'API sont censé ne pas se tromper

Posté le : 24/06/2007 00:22

Le savoir ne peut progresser que s'il est partagé - Share your knowledge
Documentation, suivi et tutorial sur la réalisation d'un module ici
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Semi pro
Inscrit: 22/02/2004 20:41
Messages: 997
C'est pas evident ça fait plus de 8 heures que je suis dessus et j'ai presque pas avancé . Enfin, c'est normal, j'apprends.

Posté le : 24/06/2007 04:01
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Régulier
Inscrit: 28/10/2005 17:17
De Switzerland
Messages: 350
C'est pas compliqué, mais faut juste tout faire dans l'ordre.

Je dois malheureusement partir et ne serai de retour que demain.

Si tu n'as pas de réponse, je te mettrai (j'essayerai) de te mettre un code plus détaillé, mais en attendant :

- Comment gères-tu tes accès à ta table "xoops_table" ? En passant le nom n'est pas bon, car tu devrais normalement (si tu veux respecter les conventions de nommage) avoir le nom de ton module dans le nom de ta table :
- ex.: mymodule_mytable, donc dans ton cas, cela pourrait être :
-> userpoint_config (il me semble que c'est userpoint, mais je peux me tromper).


Donc à partir de là, moi j'accéderai à cette table via les deux classes XoopsObject et XoopsObjectHandler (doc)

Donc pour créer l'ObjectHandler :

Tu crées une classe (fichier php), dénommé class/configHandler.php
class userpointConfigObj extends XoopsObject
{

    function 
userpointConfigObj()
    {
        
$this->initVar('uid'XOBJ_DTYPE_INT0false);
        
$this->initVar('actifnewbb'XOBJ_DTYPE_INT0false);
        
$this->initVar('actifsmartsection'XOBJ_DTYPE_INT0false);
        ...

    function 
getConfig_actifnewbb($id 0) {
        return 
$this->get($activenewbb);
    }
    
    ...


Dans cette classe tu crée le constructeur (function userpointConfigObj() et tes fonctions te permettant d'écrire ou de lire tes données, dont celle de l'exemple :
function getConfig_getactifnewbb()

Ensuite c'est selon tes besoins et souhaits.

Dans ton cas, il s'agit en fait de configurer si tel ou tel module doit enregistrer de points, donc ta table n'aura qu'un enregistrement. Par conséquent ce fichier affichera directement les valeurs contenues dans ta table. C'est bien c'est plus simple. par contre tu devras gérer les données saisies/modifièes avec l'envoi du formulaire

Pour cela je mettrai une variable $_GET 'op'. Si 'op' est défini, alors tu dois gérer les données, sinon tu affiches bêtement le formlaire

Donc ce fichier devra :

- Vérifier si 'op' exist et éventuellement sa valeur (op='submit')
- Si 'submit' alors je modifie mes valeurs de ma table
- Sinon j'affiche mes valeurs actuelles. De toute façon, tu affichera ton formulaire avec les valeurs actuelles,mais s'il y a eu modification, car l'utilisateur doit pouvoir à nouveau modifier ces valeurs

Donc pour cela utilise un instruction switch()/case

Passons à l'affichage du formulaire maintenant avac ta valeur pour 'activenewbb'. Pour cela reprends mes précédent post :

$configObjHandler xoops_getmodulehandler('userpointConfigObj''userpoint');
$configObj $configObjHandler->getConfig_activenewbb($_POST['uid']);


et après tu crée ton formulaire, puis tu affiches quand tu veux la ligne concernant l'activation du module Newbb

$form->addElement(new XoopsFormRadioYN('Activation du module Newbb''activenewbb', ($configObj->getConfig_activenewbb('uid')==1) ? 0));



Voilà, je sais pas si c'est plus clair et j'espère ne pas avoir écrit de boulette.
Sinon cette semaine, je vais écrire la partie 'Accès au données avec XoopsObject et XoopsObjectHandler dans ma section de tuto (voir signature) et tu auras un exemple complet.

Bonne chance

A+

Posté le : 24/06/2007 08:38

Le savoir ne peut progresser que s'il est partagé - Share your knowledge
Documentation, suivi et tutorial sur la réalisation d'un module ici
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Régulier
Inscrit: 28/10/2005 17:17
De Switzerland
Messages: 350
peux pas édite non plus

J'ai oublié de noté :

[b]Création de l'objet CongigObj, via le Handler

avant

$configObjHandler xoops_getmodulehandler('userpointConfigObj''userpoint');
$configObj $configObjHandler->getConfig_activenewbb($_POST['uid']);


DSL

Posté le : 24/06/2007 08:41

Le savoir ne peut progresser que s'il est partagé - Share your knowledge
Documentation, suivi et tutorial sur la réalisation d'un module ici
Partager Twitter Partagez cette article sur GG+
Re: bouton radio et BDD
Semi pro
Inscrit: 22/02/2004 20:41
Messages: 997
Salut, merci pour les infos, alors tout d'abord, je commence à comprendre les formulaires mais uniquement du coté membre. (Ex: Un membre soumet un article et les données sont enregistrées dans la base de données, ça je serais faire .) Il n' y a pas de class juste un fichier à la racine et un fichier dans include. Par contre du coté admin, ça devient plus dur.

Tu pourrais pas me faire un exemple en prenant un module vierge, avec un formulaire dans l'administration. Du genre, à l'installation du module, il va creer une table, dans l'administration on aura le formulaire avec les boutons radio(ou d'autres elements), si je modifie, ça sauvegarde les valeurs dans la BDD. Si je reviens sur le formulaire pour editer les données saisis seront visibles.

Je sais que ça peut te prendre un peu de temps pour faire un exemple comme ça et je suis desolé de te demander ça mais quand les explications sont en exemple, c'est vraiment plus facile à comprendre.


Enfete merci pour l'explication que tu as faite sur xoops_version.php, je ne comprenais pas comment les preferences du module etaient créées. Vu que l'adresse est differente
Ex:
Citation :.
mais maintenant je commence à voir le système

J'espere que tu feras d'autres explications sur Xoops, c'est vraiment très utile et ça peut surement aider des gens à se lancer dans Xoops.

Merci d'avance


ps:
Citation :
peux pas édite non plus


Tu ne maitrises pas l'API

Posté le : 24/06/2007 23:27
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

66 Personne(s) en ligne (56 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 66 | Plus ...