Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour,
J'ai un petit problème suite à l'utilisation d'un script d'arbre en javascript.
Je voudrais mettre des checkboxs après chaque titre de mon arbre et biensur récupérer les informations de ce formulaire par post dans une autre page.
Seulement dès que j'insère mon arbre dans un formulaire, je perds les fonctionnalités javascript...(plier et déplier à chaque neoud).
je joinds le code : index.php (oui mon arbre se charge de ma base de données mysql, sinon c'est pas drole)
<div class="box_arbre">
<h2> Hiérarchisation de la base </h2>
<ul class="arbre">
<?php
//echo ("<form action=\"affichage.php\" method=\"post\">");
//pour les groupes
$result = mysql_query("SELECT * FROM groupes");
$fields = mysql_num_fields($result);
for ($i=1; $i < ($fields); $i++)
{
$groupe = mysql_field_name($result, $i);
echo '<li><a>'.$groupe.'</a><input type="checkbox" name=".$groupe.">';
echo '<ul>';
$result2 = mysql_query("SELECT `Ssgroupes` FROM groupes where `".$groupe."` = '1' ") or die (mysql_error() .$result2);
$count_result2 = mysql_num_rows($result2);
//echo ''.$count_result2.'';
for ($j=0; $j < ($count_result2); $j++)
{
$ssgroupe = mysql_fetch_row($result2);
//echo ''.$ssgroupe[0].'';
echo '<li><a>'.$ssgroupe[0].'</a><input type="checkbox" name=".$ssgroupe[0]." >';
echo '<ul>';
$result3 = mysql_query("SELECT `Descriptifs` FROM ssgroupes where `".$ssgroupe[0]."` = '1' ");
$count_result3 = mysql_num_rows($result3);
for ($k=0; $k < ($count_result3); $k++)
{
$descriptif = mysql_fetch_row($result3);
echo '<li><a>'.$descriptif[0].'</a><input type="checkbox" name=".$descriptif[0]." ></li>';
}
echo '</ul>';
echo '</li>';
}
echo '</ul>';
echo '</li>';
}
echo ("<br class=\"spacer\"/>");
echo ("<br class=\"spacer\"/>");
echo ("<input class=\"valider\" id=\"login_button\" src=\"/images/Valider.gif\" name=\"LoginButton\" value=\"Connection\" type=\"image\" />");
//echo ("</form>");
echo "</ul>";
echo "</div>";
?>Et maintenant, les fonction javascripts (désolé c super lourd mais faut bien tout vous mettre):
// Fonction d'initialisation de l'arbre
function arbre() {
// Choix de la balise contenant le texte. <strong> par defaut.
balise = "A";
// Presentation de l'arbre au depart : deployee ('yes') ou fermee ('no')
extend = "no";
// Textes du lien plier / deplier
plier_text = 'Replier tout';
plier_title = 'Replier tous les noeuds de l\'arbre'
deplier_text = 'Deplier tout';
deplier_title = 'Deplier tous les noeuds de l\'arbre'
// Recuperation de tous les arbres de la page
uls = getElBy('ul','class','arbre');
for (uli=0;uli<uls.length;uli++) {
ul = uls[uli];
linkSwitch(ul);
processULEL(ul);
}
}
// -------------------------------------------------------
// Creation des liens plier /deplier tout
function linkSwitch(ul) {
var a=document.createElement('a');
a.setAttribute('href','#');
if (extend=='yes') {
a.appendChild(document.createTextNode(plier_text));
a.setAttribute('title',plier_title);
}
else {
a.appendChild(document.createTextNode(deplier_text));
a.setAttribute('title',deplier_title);
}
var parbre = document.createElement('p');
parbre.setAttribute('class','arbre-switch');
parbre.appendChild(a);
ul.parentNode.insertBefore(parbre,ul);
listenlink(ul);
}
// Gestion des Clics sur les liens plier / deplier tout
function listenlink(ul) {
var link = ul.previousSibling.childNodes[0];
link.onclick = function() {
if (this.childNodes[0].nodeValue == plier_text) {
plier(ul,'replier');
this.childNodes[0].nodeValue = deplier_text;
this.setAttribute('title',deplier_title);
}
else {
plier(ul,'deplier');
this.childNodes[0].nodeValue = plier_text;
this.setAttribute('title',plier_title);
}
return false;
}
}
// Action Plier / deplier tout
function plier(ul,act) {
for (var i=0; i<ul.childNodes.length; i++) {
var li = ul.childNodes[i];
if (li.nodeName == 'LI') {
for (var j=0; j<li.childNodes.length; j++) {
var child = li.childNodes[j];
if (child.nodeName==balise) {
var strong = child;
}
if (child.nodeName=='UL') {
if (act=='replier') {
child.className='hide';
strong.className='arbre-plier';
}
else {
child.className='';
strong.className='arbre-deplier';
}
var sub = child;
plier(sub,act);
}
}
}
}
}
// ---------------------------------------------------------
// Analyse de l'arbre
function processULEL(ul) {
if (!ul.childNodes || ul.childNodes.length == 0) return;
// Iterate LIs
for (var itemi=0;itemi<ul.childNodes.length;itemi++) {
var item = ul.childNodes[itemi];
if (item.nodeName == "LI") {
// Contenu des balises LI
var a;
var subul;
subul = "";
for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) {
// Uniquement pour moz-firefox
if (MOZ) {item.style.background = "url(images/arbre-trait.png) repeat-y 0 0";}
// Enfants des li : balise ou sous-ul
var sitem = item.childNodes[sitemi];
switch (sitem.nodeName) {
case balise:
a = sitem;
break;
case "UL":
subul = sitem;
if (extend != "yes") {sitem.className = 'hide';}
processULEL(subul);
break;
}
}
if (subul) {
if (extend!="yes") {
a.className='arbre-plier';
}
else {
a.className='arbre-deplier';
subul.className='';
}
associateEL(a,subul);
}
}
}
}
// Swicth des noeuds
function associateEL(a,ul) {
a.onclick = function () {
this.className = (ul.className=='hide') ? 'arbre-deplier' : 'arbre-plier';
ul.className = (ul.className=='hide') ? '' : 'hide';
return false;
}
}
// A l'affichage de la page, lancer la fonction arbre
window.onload = function() {
arbre();
}voilà voilà,
Merci d'avance,
Hors ligne
Bon j'y ai passé du temps, et comme d'hab, c t une histoire pourrie du style inclure tout l'arbre dans dans le formulaire.
copier coller la ligne
echo ("<form action=\"affichage.php\" method=\"post\">");on vire le Php,
<form action=\"affichage.php\" method=\"post\">
et on colle juste avant:
<ul class="arbre">
Et le tour est joué!! easy!!!!
;-)
Hors ligne