Probleme de Pear QuickForm

Signaler
Messages postés
93
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
25 octobre 2006
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour,





j'utilise le framework php Pear et notamment le module QuickForm...


Seulement, j'ai crée mon formulaire, et dans ce formulaire, j'ai mis une combobox "hierselect" avec des valeurs dedans...


Mais quand j'essaye d'afficher la valeur qui a été selectionné, pas moyen...





Voici mon code:





Code:, ----
<?php

set_include_path(get_include_path() . ";C:\Program Files\EasyPHP1-8\php\pear");

require_once "HTML/QuickForm.php";

$form = new HTML_QuickForm('FormAdduser', 'post'); /*creation du formulaire */

$form->addElement('text', 'nom', 'Nom : '); /* NOM */

$form->addElement('text', 'prenom', 'Prénom : '); /*PRENOM */

/*Combo de RTT */

$rtt = array();

$rtt[0] = "39 heures (avec RTT)";

$rtt[1] = "35 heures (sans RTT)";

$sel =& $form->addElement('hierselect', 'choixrtt', 'Statut RTT : ');

$sel->setOptions(array($rtt));

/* Bouton RESET et Submit */

$form->addElement('reset', 'bouton_clear', 'Effacer');

$form->addElement('submit', 'bouton_effacer', 'Envoyer');

/*verification des données saisies*/

$form->addRule('nom', 'Vous devez saisir un nom', 'required', '', 'client');

$form->addRule('prenom', 'Vous devez saisir un prénom', 'required', '', 'client');

if ($form->validate()) {

$nom = $form->exportValue('nom');

$prenom = $form-> exportValue('prenom');

$valueRTT = $form->exportValue('choixrtt'); //***ICI CA COINCE

echo ''.$_POST['nom'].' a bien ete ajouté.
';

echo ''.$_POST['prenom'].' a bien ete ajouté.
';

echo ''.$_POST['choixrtt'].' a bien ete ajouté.
';//***ICI CA COINCE

else { $form->display(); }

}

?>






et donc, j'ai essayer de faire $valueRTT = $form->exportValue('choixrtt');


mais pas moyen que ca fonctionne vu que c'est dans un array... Mais
j'ai essayé plein de choses, et il n'y a rien sur google pour
m'aider...


Si quelqu'un a une solution, je serais preneur





Merci beaucoup





Manu

3 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

difficile de répondre sans voir le code.

Visualises le code source html généré par cette page, et copie-nous ici le select en question (avec ses options évidemment).
Messages postés
93
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
25 octobre 2006

Bon, je vous remet tout au propre:

Code de la page PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Ajouter un utilisateur</title>
</head>


<?php
set_include_path(get_include_path() . ";C:\wamp\php\PEAR");
require_once "HTML/QuickForm.php";


$form = new HTML_QuickForm('FormAdduser', 'post'); /*creation du formulaire */
$form->addElement('text', 'nom', 'Nom : '); /* NOM */
$form->addElement('text', 'prenom', 'Prénom : '); /*PRENOM */

/*Combo de RTT */
$rtt = array();
$rtt[0] = "39 heures (avec RTT)";
$rtt[1] = "35 heures (sans RTT)";

$sel =& $form->addElement('hierselect', 'choixrtt', 'Statut RTT : ');
$sel->setOptions(array($rtt));

/* Bouton RESET et Submit */
$form->addElement('reset', 'bouton_clear', 'Effacer');
$form->addElement('submit', 'bouton_effacer', 'Envoyer');

/*verification des données saisies*/
$form->addRule('nom', 'Vous devez saisir un nom', 'required', '', 'client');
$form->addRule('prenom', 'Vous devez saisir un prénom', 'required', '', 'client');

if ($form->validate()) {
       $nom = $form->exportValue('nom');
   $prenom = $form-> exportValue('prenom');
        $valueRTT = $form->exportValue('choixrtt');  //***ICI CA COINCE
   echo ''.$_POST['nom'].' a bien ete ajouté.
';
         echo ''.$_POST['prenom'].' a bien ete ajouté.
';
        echo ''.$_POST['choixrtt'].' a bien ete ajouté.
';//***ICI CA COINCE
}
     else { $form->display(); }
   

?>

</html>


Et code généré en HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Ajouter un utilisateur</title>
</head>



<script type="text/javascript">
//<![CDATA[
function validate_FormAdduser(frm) {
  var value = '';
  var errFlag = new Array();
  var _qfGroups = {};
  _qfMsg = '';

  value = frm.elements['nom'].value;
  if (value == '' && !errFlag['nom']) {
    errFlag['nom'] = true;
    _qfMsg = _qfMsg + '\n - Vous devez saisir un nom';
  }

  value = frm.elements['prenom'].value;
  if (value == '' && !errFlag['prenom']) {
    errFlag['prenom'] = true;
    _qfMsg = _qfMsg + '\n - Vous devez saisir un prénom';
  }

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  return true;
}
//]]>
</script>

<form action="/planning/adduser2.php" method="post" name="FormAdduser" id="FormAdduser" onreset="if (typeof _hs_setupOnReset != 'undefined') { return _hs_setupOnReset(this, ['choixrtt']); } " onsubmit="try { var myValidator = validate_FormAdduser; } catch(e) { return true; } return myValidator(this);">


*Nom : ,
,

----

*Prénom : ,
,

----

Statut RTT : ,
<script type="text/javascript">
//<![CDATA[
function _hs_findOptions(ary, keys)
{
var key = keys.shift();
if (!key in ary) {
return {};
} else if (0 == keys.length) {
return ary[key];
} else {
return _hs_findOptions(ary[key], keys);
}
}

function _hs_findSelect(form, groupName, selectIndex)
{
if (groupName+'['+ selectIndex +']' in form) {
return form[groupName+'['+ selectIndex +']'];
} else {
return form[groupName+'['+ selectIndex +'][]'];
}
}

function _hs_replaceOptions(ctl, optionList)
{
var j = 0;
ctl.options.length = 0;
for (i in optionList) {
ctl.options[j++] = new Option(optionList[i], i, false, false);
}
}

function _hs_setValue(ctl, value)
{
var testValue = {};
if (value instanceof Array) {
for (var i = 0; i < value.length; i++) {
testValue[value[i]] = true;
}
} else {
testValue[value] = true;
}
for (var i = 0; i < ctl.options.length; i++) {
if (ctl.options[i].value in testValue) {
ctl.options[i].selected = true;
}
}
}

function _hs_swapOptions(form, groupName, selectIndex)
{
var hsValue = [];
for (var i = 0; i <= selectIndex; i++) {
hsValue[i] = _hs_findSelect(form, groupName, i).value;
}

_hs_replaceOptions(_hs_findSelect(form, groupName, selectIndex + 1),
_hs_findOptions(_hs_options[groupName][selectIndex], hsValue));
if (selectIndex + 1 < _hs_options[groupName].length) {
_hs_swapOptions(form, groupName, selectIndex + 1);
}
}

function _hs_onReset(form, groupNames)
{
for (var i = 0; i < groupNames.length; i++) {
try {
for (var j = 0; j <= _hs_options[groupNames[i]].length; j++) {
_hs_setValue(_hs_findSelect(form, groupNames[i], j), _hs_defaults[groupNames[i]][j]);
if (j < _hs_options[groupNames[i]].length) {
_hs_replaceOptions(_hs_findSelect(form, groupNames[i], j + 1),
_hs_findOptions(_hs_options[groupNames[i]][j], _hs_defaults[groupNames[i]].slice(0, j + 1)));
}
}
} catch (e) {
if (!(e instanceof TypeError)) {
throw e;
}
}
}
}

function _hs_setupOnReset(form, groupNames)
{
setTimeout(function() { _hs_onReset(form, groupNames); }, 25);
}

function _hs_onReload()
{
var ctl;
for (var i = 0; i < document.forms.length; i++) {
for (var j in _hs_defaults) {
if (ctl = _hs_findSelect(document.forms[i], j, 0)) {
for (var k = 0; k < _hs_defaults[j].length; k++) {
_hs_setValue(_hs_findSelect(document.forms[i], j, k), _hs_defaults[j][k]);
}
}
}
}

if (_hs_prevOnload) {
_hs_prevOnload();
}
}

var _hs_prevOnload = null;
if (window.onload) {
_hs_prevOnload = window.onload;
}
window.onload = _hs_onReload;

var _hs_options = {};
var _hs_defaults = {};

_hs_options['choixrtt'] = [

];
_hs_defaults['choixrtt'] = [0];
//]]>
</script><select name="choixrtt[0]">
<option value="0">39 heures (avec RTT)</option>
<option value="1">35 heures (sans RTT)</option>
</select>,

----

,
,

----

,
,

----

,
* denotes required field



</form>
</html>


Merci de votre aide
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
$valueRTT = $form->exportValue('choixrtt[0]');