Compréhension et ajout de règles dans un script
Résolu
julien2810
Messages postés
33
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bien le bonjour à la communauté
Je suis en pleine recherche pour trouver une règle pour finaliser un script.
C'est un script utilisé dans le composant RSForm avec le CMS Joomla.
A la base le script est fait pour compter combien de formulaires ont été envoyé et limiter le nombre possible d’envois en désactivant celui-ci si le nombre est atteint.
Le script :
// Define the maximum number of submissions. For this example we'll use 50.
$max = 50;
// Get a database connection.
$db = JFactory::getDbo();
// Setup the query. This query counts the number of submissions for the current form.
// $formId contains the ID of the current form.
$db->setQuery("SELECT COUNT(`SubmissionId`) FROM #__rsform_submissions WHERE `FormId`='".(int) $formId."'");
$submissions = $db->loadResult();
if ($submissions >= $max) {
$formLayout = 'Bravo vous etes le 50ème ';
}
De ce que je comprend, il va recherché le nombre de soumission faite dans la table " _rsform_submissions " pour le formulaire courant avec le " WHERE `FormId`='".(int) $formId."'"); " et les comptes.
Une fois au nombre il envoie le message et il n'est plus possible de faire d'autre soumissions.

Je souhaiterais ajouter une règle ou la changer à ce script.
Il faudrait qu'il aille faire une vérification dans une autre table de la base de donnée.
Je voudrais qu'il compte le nombre de " _STATUS " qui sont à " 1 " et qu'il se base la dessus au lieu de la première règle.
Qu'une fois que 10 " _STATUS " sont à " 1 " il stoppe le formulaire.

En sachant que certaines fois il y en aurait qui resterait à " 0 "
Je vous remercie d'avance pour les éclaircissements que la communauté pourrait m'apporter.
Je suis en pleine recherche pour trouver une règle pour finaliser un script.
C'est un script utilisé dans le composant RSForm avec le CMS Joomla.
A la base le script est fait pour compter combien de formulaires ont été envoyé et limiter le nombre possible d’envois en désactivant celui-ci si le nombre est atteint.
Le script :
// Define the maximum number of submissions. For this example we'll use 50.
$max = 50;
// Get a database connection.
$db = JFactory::getDbo();
// Setup the query. This query counts the number of submissions for the current form.
// $formId contains the ID of the current form.
$db->setQuery("SELECT COUNT(`SubmissionId`) FROM #__rsform_submissions WHERE `FormId`='".(int) $formId."'");
$submissions = $db->loadResult();
if ($submissions >= $max) {
$formLayout = 'Bravo vous etes le 50ème ';
}
De ce que je comprend, il va recherché le nombre de soumission faite dans la table " _rsform_submissions " pour le formulaire courant avec le " WHERE `FormId`='".(int) $formId."'"); " et les comptes.
Une fois au nombre il envoie le message et il n'est plus possible de faire d'autre soumissions.

Je souhaiterais ajouter une règle ou la changer à ce script.
Il faudrait qu'il aille faire une vérification dans une autre table de la base de donnée.
Je voudrais qu'il compte le nombre de " _STATUS " qui sont à " 1 " et qu'il se base la dessus au lieu de la première règle.
Qu'une fois que 10 " _STATUS " sont à " 1 " il stoppe le formulaire.

En sachant que certaines fois il y en aurait qui resterait à " 0 "
Je vous remercie d'avance pour les éclaircissements que la communauté pourrait m'apporter.
A voir également:
- Compréhension et ajout de règles dans un script
- Script vidéo youtube - Guide
- Regles telephone - Guide
- Mas script - Accueil - Windows
- Demande d'ajout snap qui disparait ✓ - Forum Snapchat
- Ajout rapide snap - Forum Snapchat
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, je suggère ceci:
$db->setQuery(" SELECT COUNT(*) FROM autretabledelabasededonnée WHERE _STATUS = 1 "); $submissions = $db->loadResult(); if ($submissions >=10) {
Finalement j'ai trouvé une solution qui me convient pour le moment :)
Du coup ça calcule combien de soumission dans la colonne Fieldvalue avec l'ID du formulaire.
C'est un peut barbare mais bon c'est déjà ça.
Ca aurais été super de pouvoir définir une donnée de la colonne au lieu de devoir toutes les prendre en comptes.
En tout cas merci pour ton aide, tu m'as bien mis sur le chemin.
// Get a database connection.
$db = JFactory::getDbo();
// Setup the query. This query counts the number of submissions for the current form.
// $formId contains the ID of the current form.
$db->setQuery("SELECT COUNT(*) FROM #__rsform_submission_values WHERE FieldValue = 1 AND FormId = 4 ");
$submissions = $db->loadResult();
if ($submissions >=2) {
$formLayout = 'Le tirage est terminé ';
}
Du coup ça calcule combien de soumission dans la colonne Fieldvalue avec l'ID du formulaire.
C'est un peut barbare mais bon c'est déjà ça.
Ca aurais été super de pouvoir définir une donnée de la colonne au lieu de devoir toutes les prendre en comptes.
En tout cas merci pour ton aide, tu m'as bien mis sur le chemin.
Le " SELECT COUNT(*) " il ne faut pas que ce soit une *, il doit reprendre le nom de la colonne ou il doit compter non ?
A la base j'avais pensé à ceci :
// Define the maximum number of submissions. For this example we'll use 50.
$max = 50;
// Get a database connection.
$db = JFactory::getDbo();
// Setup the query. This query counts the number of submissions for the current form.
// $formId contains the ID of the current form.
$db->setQuery("SELECT COUNT(`FieldName`) FROM #__rsform_submission_values WHERE `FormId`='".(int) $formId."'");
$submissions = $db->loadResult();
if ($submissions >= $max) {
$formLayout = 'Bravo';
}
Ici je lui demande de compter le nombre dans la colonne " FieldName " de la table " #__rsform_submission_values " du formulaire " WHERE `FormId`='".(int) $formId."'"); "
Le problème de ce script et de celui du dessus, c'est qu'il compte le nombre dans la colonne de la table.
Il faudrait réussir à lui spécifier qu'il doit vérifier que dans la colone " FieldName " dans le champ " _STATUS " combien sont avec la valeur " 1 "
Héhé je suis loin d'être un as, mais pour le moment je comprend bien ?
Donc j'ai ajouté " ' " avant et après _STATUS ce qui fait que le formulaire fonctionne de nouveau.
Mais il ne compte pas le nombre, après 11 formulaires envoyé et en ayant activé les 11 formulaires on peut continuer à en envoyé tant que l'on veux.
$db->setQuery(" SELECT COUNT(*) FROM #__rsform_submission_values WHERE '_STATUS' = 1 ");
$submissions = $db->loadResult();
if ($submissions >=10) {
Il faut aussi lui ajouter le : `FormId`='".(int) $formId."'"); sinon il ne saura pas que c'est uniquement dans le formulaire concerné je pense.
Ne peut-on pas imaginé quelque chose comme ceci ?
$db->setQuery("SELECT COUNT(`SubmissionId`) FROM #__rsform_submissions WHERE `FormId`='".(int) $formId."'") AND FROM #__rsform_submission_values WHERE '_STATUS' = 1 ");
$submissions_STATUS >=10) {
Ce qui bien entendu me ramène de nouveau à un écran blanc ^^
Je suis une purge en code hein donc tout ce que je propose est sans doute de la pure Mer... :)
Je pense qu'il faut garder la règle de base et simplement ajouté une variable qui dit de vérifier aussi que le champ dans la colonne de la table de la base de donnée est = ou > au nombre voulus.
https://www.rsjoomla.com/support/documentation/rsform-pro/custom-scripting/adding-a-counter-for-submissions.html
Il faut qu'il compte :
Combien de FieldName qui se nommes _STATUS avec le FieldValue qui est = à 1 dans la table _rsform_submission_values venant du FormId concerné.
Les additionnes et dise stoppe une fois arrivé à un nombre fixe.