Bonjour,
je verrais bien un truc comme cela pour définir les filtres ainsi que les colonnes ?
C'est juste un début de maquette, hein! il y a encore un "peu" de boulot mais vous en dites quoi ? ensuite je ne connais pas smarty ni adodb donc il faut que je m'y mette aussi.
De meme si quelqu'un a déjà creusé le sujet ou qui veut m'aider, il ne doit pas hésiter ;-)
et, je n'ai pas testé sous IE, ça marche bien sous firefox et konqueror.
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" />
<title>filtre</title>
<style type="text/css"> .hidden { display: none; }
.visible { display: inline; } </style>
<script type="text/javascript"> fields=new Array(); fields[0]="nom"; fields[1]="prenom"; fields[2]="Age"; fields[3]="Ville"; fields[4]='...';
operator= new Array(); operator[0]="="; operator[1]="<"; operator[2]=">"; operator[3]="<>"; operator[4]="LIKE";
function addCol(orig,dest) { dest[dest.length]=orig[orig.selectedIndex]; }
function delCol(orig,dest) { orig[orig.length]=dest[dest.selectedIndex];
} function upCol() { alert('AddCol'); } function downCol() { alert('AddCol'); } function dropClause(NbClause) { document.getElementsByName('numberOfClause')[0].value=NbClause-1; document.getElementById('ListClause').removeChild(document.getElementById("ListClause").lastChild); }
function addClause(NbClause) { document.getElementsByName('numberOfClause')[0].value=NbClause; var newlist = document.createElement('li'); var newobject = document.createElement('select'); newobject.name='select'+NbClause; var newOpt; for(var i=0;i<fields.length;i++) { newOpt=document.createElement('option'); newOpt.text=fields[i]; newOpt.value=fields[i]+'v'; newobject.options[i]=newOpt; } newlist.appendChild(newobject); var newobject = document.createElement('select'); newobject.name='operator'+NbClause; for(var i=0;i<fields.length;i++) { newOpt=document.createElement('option'); newOpt.text=operator[i]; newOpt.value=operator[i]+'v'; newobject.options[i]=newOpt; } newlist.appendChild(newobject);
var newinput = document.createElement('input'); newinput.setAttribute('name','operande'+NbClause); newinput.setAttribute('type','SELECT'); newlist.appendChild(newinput); document.getElementById('ListClause').appendChild(newlist); }
function hide(identifiant) { if (document.getElementById(identifiant).className == "hidden") { document.getElementById(identifiant).className = "visible"; } else { document.getElementById(identifiant).className = "hidden"; } }
</script>
</head>
<body>
<form name='clauseform' action="http://toto" method="post" enctype="text/plain">
<input type="button" id='FILTERS' value="Filtres" onClick="hide('A')"> <br/> <fieldset id='A' name="Clause" class='hidden'> <input type=text" Id='numberOfClause' name="numberOfClause" value="0"><br/> <input type="text" name="where" value="where"> <ul id="ListClause"> </ul> <input type="button" id='ADD' value="add" onClick="addClause(new Number(document.getElementById('numberOfClause').value)+1)"> <input type="button" id='DROP' value="drop" onClick="dropClause(new Number(document.getElementById('numberOfClause').value))"> </fieldset> <br/>
<input type="button" id='COLUMNS' value="Colonnes" onClick="hide('B')"> <br/> <fieldset id='B' name="Colonne" class='hidden'> <select name='COLUMNSOURCE' Id='COLSOURCE' size=5> <option value='ADR.NOM'> Nom</option> <option value='ADR.NOM'> Prenom </option> <option value='ADR.NOM'> Ville </option> <option value='current_date - ADR.DATEDENAISSANCE'> Age </option> <option value='ADR.NOM'> ... </option> </select>
<input type="button" id='ADDCOL' value="add" onClick="addCol(document.getElementById('COLSOURCE'), document.getElementById('COLDEST'))"> <input type="button" id='DROPCOL' value="drop" onClick="delCol(document.getElementById('COLSOURCE'), document.getElementById('COLDEST'))"> <select name='COLDEST' Id='COLDEST' size=5> </select> </fieldset>
</form> <script> addClause(0); </script>
</body>
</html>