IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

utilisation iframe sur select ie6


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut utilisation iframe sur select ie6
    Bonjour,

    Je suis sous ie6 (taf oblige).
    j'ai des difficultés pour adapter un code que j'ai trouvé dans la FAQ javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function putFrame(){
    var f    = document.createElement("iframe");
    var d    = document.getElementById("theDiv");
     
    with(f.style){
    position= "absolute";
     width    = d.offsetWidth+"px";
      height= d.offsetHeight+"px";;
     top= d.offsetTop+"px";
      left= d.offsetLeft+"px";
       zIndex= "1";
    }
     
    document.body.appendChild(f);
    }
    Je n'ai jamais utilisé de iframe. Pouvez-vous m'aider à utiliser ce code correctement ? Pour le moment j'affiche le menu deroulant, il passe bien au 1er plan, mais le tableau avec les select dans la page à disparu donc je ne peux pas tester.

    Je voudrais que mes menus déroulants passent au-dessus de mes select placés dans une div.

    Mon code simplifié pour ce post :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    <html>
    <head>
    <link rel="stylesheet" href="styles/menu.css" />
    <link rel="stylesheet" href="styles/style.css" />
    <script type="text/javascript">
    function putFrame(){
    var f    = document.createElement("iframe");
    var d    = document.getElementById("mon_div");
     
    with(f.style){
    position= "absolute";
     width    = d.offsetWidth+"1210px";
      height= d.offsetHeight+"580px";;
     top= d.offsetTop+"290px";
      left= d.offsetLeft+"20px";
       zIndex= "1";
    }
     
    document.body.appendChild(f);
    }
    </script>
    </head>
    <body>
    <?php include('menu/menu.php'); ?>
    <div id="mon_div">
    <iframe name="iframe">
    <?php 
    if (empty($_POST["ordre"])){$ordre=0;} else {$ordre=$_POST["ordre"];}
    if (empty($_POST["sens"])){$sens='asc';} else {$sens=$_POST["sens"];}
     
    // Réglage de la requete
    $jour_sem=array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche');
    $true_fields = array('Tous','liste1','liste2','liste3','liste4','liste5','liste6','liste7','liste8'); // Nom affiché en entête de colonne
    $fields = array('id','liste1','liste2','liste3','liste4','liste5','liste6','liste7','liste8'); // Nom réel des champs dans la (les) table(s) avec lien table si besoin (ex : A.liste1)
    $tables = array('liste1'); // Nom de la (les) table(s) avec alias si besoin ligne au dessus (ex : liste1 as A)
    $jointure = ""; // pour la jointure dans le cas de plusieurs tables ou d'une clause particulière séparé par des AND ou OR (ex : A.id=B.id and A.id=C.id)
    $prem_col_chk=true; // Première colonne en case à cocher (true ou false)
     
    // création de la liste des champs pour la requete
    for($i=0;$i<count($fields);$i++) {
      if ($i==0){$champs = $fields[$i];} else {$champs .= ",".$fields[$i];}
    }
    // Création de la liste des tables pour la requete
    for($i=0;$i<count($tables);$i++) {
      if ($i==0){$table = $tables[$i];} else {$table .= ",".$tables[$i];}
    }
    // Ajout de la jointure eventuelle
    if ($jointure != "") {$jointure = "where ".$jointure;}
    // Récupération des paramètres du filtre et création de la clause where
    $swhere="";
    for($i=0;$i<count($fields);$i++) {
      if (($prem_col_chk == false && $i >= 0) || ($prem_col_chk == true && $i > 0)) {
        if (!isset($_POST["sel_".$fields[$i]])) {
          $sel_fields[$i]="Tous";
          //echo "empty<br>\n";
        } elseif ($_POST["sel_".$fields[$i]] == 'Tous') { 
          $sel_fields[$i]="Tous";
        } else {
          $sel_fields[$i]=$_POST["sel_".$fields[$i]];
          if ($swhere == "" && $jointure == "") {
            $swhere = " where $fields[$i]='$sel_fields[$i]'";
          } else {
            $swhere .= " and $fields[$i]='$sel_fields[$i]'";
          }
        }
      }
    }
     
    $swhere = str_replace("=''"," is null",$swhere);
     
    $req1="select $champs from $table".$swhere;
    if ($ordre != 0) {$sordre=" order by ".$fields[$ordre]." ".$sens;} else {$sordre=" order by site ".$sens;}
    $req=$req1.$sordre;
     
    $r = mysql_query($req) or die('Erreur lors de la lecture des données de la requete : '.mysql_error());
     
    $numfields = mysql_num_fields($r);
    $nb_enreg = mysql_num_rows($r);
     
     
    echo "<form name='frmfiltre' id='frmfiltre' action='$self' method='post'>\n";
    echo "<div name='div_chck' id=\"div_chck\">\n";
    echo "<table border='0' class='sortable'><thead><tr>\n";
     
    for($i=0;$i<$numfields;$i++) {
     
      if ($ordre == $i) {
        if ($sens == 'asc') {
          $ssens='desc';
          $im='asc';
        } elseif ($sens == 'desc') {
          $ssens='asc';
          $im='desc';
        } else {
          $ssens='asc';
          $im='desc';
        }
      } else {
        $ssens='asc';
        $im='head';
      }
     
      if (($prem_col_chk == false && $i >= 0) || ($prem_col_chk == true && $i > 0)) {
        echo "<th class='$im'><h3><a title=\"Regler l'ordre par $true_fields[$i]\" onclick=\"recharger($i,'$ssens')\">$true_fields[$i]</a></h3>";
        echo "<center><select name='sel_$fields[$i]' id='sel_$fields[$i]' ONCHANGE=\"recharger($ordre,'$sens')\">\n<option value='Tous'> Tous </option>\n";
        $req="select distinct $fields[$i] from sites order by $fields[$i] asc";
        $r2 = mysql_query($req) or die('Erreur lors de la lecture des données de la requete : '.mysql_error());
        while($l=mysql_fetch_array($r2)) {
    		if ($i == 3) {
    			if ($l[0] == -1) {
    				echo "<option value='".$l[0]."'> </option>\n";
    			} else {
    				echo "<option value='".$l[0]."'>".$jour_sem[$l[0]]."</option>\n";
    			}
    		} else {
    			echo "<option value='".$l[0]."'>".$l[0]."</option>\n";			
    			}
        }
        echo "</select></center></td>\n";
      } else {
        echo "<th><h3><a title=\"Cocher les éléments dans la liste\">$true_fields[$i]</a></h3>";
        echo "<center><input type='checkbox' name='choix' id='choix' onclick=\"GereChkbox('2');\">";
      }
      echo "</th>\n";
    }
    echo "</tr></thead>\n";
     
    if ($nb_enreg) {
      while($row = mysql_fetch_array($r)) {
        echo "<tr>\n";
        for($i=0;$i<$numfields;$i++) {
          if ($prem_col_chk == true && $i == 0) {
            echo "<td align='center'><input type='checkbox' name='chk_".$row[$i]."' id='chk_".$row[$i]."' value='".$row[$i]."'";
            if (isset($_POST["chk_".$row[$i]])=='on') {echo " checked";}
            echo "></td>";
          } else {
    		if ($i == 3) {
    			$col=$jour_sem[$row[$i]];
    		} else {
    			$col=$row[$i];
    		}
            echo "<td>".$col."&nbsp;</td>\n";
          }
        }
        echo "</tr>\n";
      }
    }
    echo "<input type='hidden' name='ordre' id='ordre' value='$i'>";
    echo "<input type='hidden' name='sens' id='sens' value='$ssens'>";
    echo "</table>\n";
    echo "</div>\n";
    echo "</form>\n";
    for($i=0;$i<$numfields;$i++) {
      if (($prem_col_chk == false && $i >= 0) || ($prem_col_chk == true && $i > 0)) {
        echo "<script language='javascript'>LSelection('sel_".$fields[$i]."',\"".$sel_fields[$i]."\");</script>\n";
      }
    }
    ?>
    <script type="text/javascript" src="script.js"></script>
    </iframe>	
    </div>
    Je précise que mes select ne sont pas générés en javascript mais en PHP, les quelques fonctions javascript, que je n'ai pas misent ici, ne servent que pour l'indexation, le tri se faisant en PHP. (le tableu contient plus de 1000 enregistrements, donc pas question de le trier côté client lol)

    Merci de votre aide

  2. #2
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    On les gars on sèche ?

    Je vais me faire p...ir pour cause de "détérage"
    Ok je sors

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    un iframe est une autre page incluse dans ta page, tu ne peux pas y faire deborder des éléments de la page mère ..
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Je comprend le principe. Donc j'ai mal placé mes balises iframe dans ma page ? Guide moi un peu je suis perdu là.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ce n'est pas une question de mal placer l'iframe, c'est une question d'utiliser l'iframe !
    Tu ne peux pas partager ton select entre les deux pages. C'est comme si tu voulait mettre la balise select sur la page principale et les options sur la page fille ...
    Il faut tout simplement laisser tomber l'iframe pour ça et passer par des émlulation d'iframe de type window prototype. A ce moment là tout sera sur la même page et ce ne sera plus qu'une question de z-index
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Merci de ta réponse. Je suis allé voir Prototype Windows. Je n'ai pas les compétences suffisantes pour adapter chez moi. Je vais m'orienter vers des solutions moins propres.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/09/2010, 14h16
  2. Transparence sur une balise select IE6
    Par rellik45 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 18/07/2007, 18h03
  3. Trigger sur select
    Par bilo2000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/02/2004, 13h39
  4. [Utilisation Postgresql sur windows]
    Par xhercule dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/01/2004, 18h36
  5. question sur SELECT ...WHERE...IN
    Par danseur dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2004, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo