par
nawnaw » 11 oct. 2010, 18:08
salut tout le monde
je travaille sur un site avec joomla et j'ai utilisé le composant chronoforms pour créer mon formulaire,ce dernier contient des zones de texte ainsi que des listes déroulantes liées[(pays ville] ),j'ai également crée une table que j'ai lié aux champs de mon formulaire.mon problème est que quand je remplis mon formulaire et que je le valide,en jetant un coup d'oeuil sur ma table je la trouve incomplète,ya des champs qui sont remplis et d'autres pas (idville),quand je regarde avec phpmyadmin je trouve qu'effectivement le champs idville est vide ce qui signifie qu'il y a quelque chose qui cloche dans mon code que je vous fait parvenir en espérant que vous pouvez m'aider.le code est composé d'une partie html,une autre javascript et une autre php.
merci
<?php
if ( !$mainframe->isSite() ) { return; }
$db =& JFactory::getDBO();
$query = "
SELECT *
FROM `pays`
ORDER BY `nompays`;
";
$db->setQuery($query);
$data = $db->loadObjectList();
?>
<fieldset style="border: 3px double #333399">
<legend>Pays et ville de résidence</legend>
<label>Pays: </label>
<select name="pays" id="pays">
<option value="">- - - Choisissez un pays - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach($data as $d) {
echo "<option value='".$d->idpays."'>".$d->nompays."</option>";
}
?>
</select>
<!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
la seconde liste déroulande -->
<span id="blocvilles"></span><br />
<label for="ville"><?php echo JText::_( 'Ville' ); ?>:</label>
<?php
echo "<span id='AjaxgetVille';style='color:black'>".JText::_('Choisissez un pays SVP' )."</span>
<span id='progress_gV' style='visibility:hidden;' > Recherche . . .</span>";
?>
</fieldset>
Code : Tout sélectionner
window.addEvent('domready', function() {
$('pays').addEvent('change', function () {
var a = $('pays').value;
if ( a != null && a != '' ) {
getVille(a);
} else {
$('AjaxgetVille').setHTML("<span id='AjaxgetVille';style='color:black' >Choisissez un pays SVP</span>")
}
}) ;
});
function getVille(a){
var url = "index.php?option=com_chronocontact&chronoformname=test_form_94&task=extra&format=raw";
new Ajax(url, {
method: 'get',
onRequest: function(){
$('progress_gV').setStyle('visibility', 'visible');
},
onComplete: function(){
$('progress_gV').setStyle('visibility', 'hidden');
},
update: $('AjaxgetVille'),
data: 'idpays='+a
}).request();
};
<?php
$idpays =& JRequest::getString('idpays', '', 'get');
if ( $idpays ) {
$db =& JFactory::getDBO();
$query = "
SELECT `idville`, `nomville`
FROM `ville`
WHERE `idpays` = '$idpays' ;
";
$db->setQuery($query);
$data = $db->loadObjectList();
}
//$return = '<div>$data: '.print_r($data, true).'</div>';
if ( count($data) ) {
$m = new stdClass();
$m->idville = 0;
$m->nomville = '==?==';
$data = array_merge(array($m), $data);
//$return = '<div>$data: '.print_r($data, true).'</div>';
$return = JHTML::_('select.genericlist', $data, 'Ville', 'class="inputbox required select" size="1" ', 'idville', 'nomville', 0);
} else {
$return = JText::_('Pays introuvable');
}
echo $return;
?>
salut tout le monde
je travaille sur un site avec joomla et j'ai utilisé le composant chronoforms pour créer mon formulaire,ce dernier contient des zones de texte ainsi que des listes déroulantes liées[(pays ville] ),j'ai également crée une table que j'ai lié aux champs de mon formulaire.mon problème est que quand je remplis mon formulaire et que je le valide,en jetant un coup d'oeuil sur ma table je la trouve incomplète,ya des champs qui sont remplis et d'autres pas (idville),quand je regarde avec phpmyadmin je trouve qu'effectivement le champs idville est vide ce qui signifie qu'il y a quelque chose qui cloche dans mon code que je vous fait parvenir en espérant que vous pouvez m'aider.le code est composé d'une partie html,une autre javascript et une autre php.
merci
[html]
<?php
if ( !$mainframe->isSite() ) { return; }
$db =& JFactory::getDBO();
$query = "
SELECT *
FROM `pays`
ORDER BY `nompays`;
";
$db->setQuery($query);
$data = $db->loadObjectList();
?>
<fieldset style="border: 3px double #333399">
<legend>Pays et ville de résidence</legend>
<label>Pays: </label>
<select name="pays" id="pays">
<option value="">- - - Choisissez un pays - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach($data as $d) {
echo "<option value='".$d->idpays."'>".$d->nompays."</option>";
}
?>
</select>
<!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
la seconde liste déroulande -->
<span id="blocvilles"></span><br />
<label for="ville"><?php echo JText::_( 'Ville' ); ?>:</label>
<?php
echo "<span id='AjaxgetVille';style='color:black'>".JText::_('Choisissez un pays SVP' )."</span>
<span id='progress_gV' style='visibility:hidden;' > Recherche . . .</span>";
?>
</fieldset>[/html]
[code]
window.addEvent('domready', function() {
$('pays').addEvent('change', function () {
var a = $('pays').value;
if ( a != null && a != '' ) {
getVille(a);
} else {
$('AjaxgetVille').setHTML("<span id='AjaxgetVille';style='color:black' >Choisissez un pays SVP</span>")
}
}) ;
});
function getVille(a){
var url = "index.php?option=com_chronocontact&chronoformname=test_form_94&task=extra&format=raw";
new Ajax(url, {
method: 'get',
onRequest: function(){
$('progress_gV').setStyle('visibility', 'visible');
},
onComplete: function(){
$('progress_gV').setStyle('visibility', 'hidden');
},
update: $('AjaxgetVille'),
data: 'idpays='+a
}).request();
};[/code]
[php]
<?php
$idpays =& JRequest::getString('idpays', '', 'get');
if ( $idpays ) {
$db =& JFactory::getDBO();
$query = "
SELECT `idville`, `nomville`
FROM `ville`
WHERE `idpays` = '$idpays' ;
";
$db->setQuery($query);
$data = $db->loadObjectList();
}
//$return = '<div>$data: '.print_r($data, true).'</div>';
if ( count($data) ) {
$m = new stdClass();
$m->idville = 0;
$m->nomville = '==?==';
$data = array_merge(array($m), $data);
//$return = '<div>$data: '.print_r($data, true).'</div>';
$return = JHTML::_('select.genericlist', $data, 'Ville', 'class="inputbox required select" size="1" ', 'idville', 'nomville', 0);
} else {
$return = JText::_('Pays introuvable');
}
echo $return;
?>
[/php]