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 :

[Javascript] Listes liées en Javascript + erreurs invisibles


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut [Javascript] Listes liées en Javascript + erreurs invisibles
    Salut tout le monde,

    Desole pour le titre pas forcement tres clair, mais c'est assez complexe car j'ai 2 problemes.

    En fait je veux faire des listes liees dynamiques (qui travaillent avec la date courante) dans un formulaire. Pour cela j'ai utilise ce script que j'ai teste avec succes sans le php.
    Le premier probleme c'est qu'en introduisant mon php pour rendre les listes dynamiques, ca marche plus.
    Le second probleme c'est que le serveur de mon universite n'affiche pas les erreurs (en tous cas, pas "tout seul").

    Pour afficher les erreurs j'ai essaye ce que Swoög m'a conseille dans ce post.
    Ne sachant pas trop comment utiliser ces fonctions, j'ai fais des "error_reporting(E_STRICT);", "echo (error_reporting(E_STRICT));", "display_errors();", "echo(display_errors());". Mais rien n'a change, tjrs page blanche.

    Voici le code:
    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
    <html>
    <head>
        <title>Test graph</title>
     
        <script src="graphs.js" type="text/javascript"></script>
    <?php
     
    //--------------AFFICHAGE ERREUR AU DEBUT
        echo (error_reporting(E_STRICT));
        echo (display_errors());
     
        echo '<script type="text/javascript">';
        $year = date("Y");
        $month = date("m");
        $listbox = '<option value="All">All</option>';
        $listbox .= '<option value="'.$year.'">'.$year.'</option>';
        $current_year = '"'.$year.'" : ["All"';
        while ($month !=0)
        {
            switch ($month) {
            case 01:
                   $current_year .= ',"January"';
               break;
            case 02:
                   $current_year .= ',"February"';
               break;
            case 03:
                   $current_year .= ',"March"';
               break;
            case 04:
                   $current_year .= ',"April"';
               break;
            case 05:
                   $current_year .= ',"May"';
               break;
            case 06:
                   $current_year .= ',"May"';
               break;
            case 07:
                   $current_year .= ',"June"';
               break;
            case 08:
                   $current_year .= ',"July"';
               break;
            case 09:
                   $current_year .= ',"September"';
               break;
            case 10:
                   $current_year .= ',"October"';
               break;
            case 11:
                   $current_year .= ',"November"';
               break;
            case 12:
                   $current_year .= ',"December"';
               break;                
            }
            $month = $month-1;
        }
        $current_year .= "],";
        $list_year = ' ';
        while ($year!=2004)
        {
            $year = $year-1;
            $listbox .= '<option value="'.$year.'">'.$year.'</option>';
            $list_year .= ', "'.&year.'"';
            $list_year .= ' : ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],';
        }
        $list_year = substr($list_year, 0, -1);
        
        echo 'list_choix = {';
        echo $current_year;
        echo $list_year;
        echo '}';
     
        echo 'function ajout(selection){';
        echo 'nb_select = selection.parentNode.getElementsByTagName("select").length;';
        echo 'if ( selection == selection.parentNode.getElementsByTagName("select")[nb_select-1] ) {';
        echo '    element_select = selection;';
        echo '    selection = selection.options[selection.selectedIndex].value;';
        echo '    if ( list_choix[selection] ) {';
        echo '        new_liste = document.createElement("select");';
        echo '        element_select.parentNode.appendChild(new_liste);';
        echo '        new_liste.setAttribute("id", "choix"+nb_select);';
        echo '        new_liste.setAttribute("name", "choix"+nb_select);';
        echo '        new_liste.setAttribute("onchange", "ajout(this)");';
        echo '        for (var i=0; i<list_choix[selection].length; i++) {';
        echo '            new_option = document.createElement("option");';
        echo '            new_liste.appendChild(new_option);';
        echo '            new_option.setAttribute("value", list_choix[selection][i]);';
        echo '            new_option.text = list_choix[selection][i];';
        echo '        }';
        echo '    }';
        echo '}';
        echo 'else {';
        echo '    selection.parentNode.removeChild(selection.nextSibling);';
        echo '    ajout(selection)';
        echo '}';
        echo '}';
     
    ?>    
     
    </head>
     
    <body>
    <?php echo $date = date("d/m/Y"); ?>
     
    <br>
     
    //--------------AFFICHAGE FORMULAIRE
    <form action="">
        <fieldset>
     
            <select name="choix0" id="choix0" onchange="ajout(this)">
                <?php echo $listbox; ?>
            </select>
        </fieldset>
            <p><input type="submit" value="envoyer" /></p>
     
        </form>
    //--------------AFFICHAGE ERREUR FIN
        <?php 
        error_reporting(E_STRICT);
        display_errors();
        ?>
        <br>
    <script type="text/javascript">
        graph = new BAR_GRAPH("hBar");
      graph.values = new Array(25, 40, 3, 51, 11);
      document.write(graph.create());
    </script>
    </body>
    </html>

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Che moi la page marche à merveille (un petit bug à l'affichage, mais elle est loin d'être blanche, à condition de faire 3 modifications :
    error_reporting à E_ALL (c'est ce que je t'avais conseillé il me semble )
    $year plutôt que &year ligne 66
    s'assurer que display_errors existe (c'est une directive de configuration pas, une fonction^^)

    ci-joins la page avec modifs
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    Merci

    effectivement j'ai pleins de trucs qui s'affichent, notemment parce que j'ai oublie de refermer ma balise <script>

    Sinon, apres quelques modifs, tout s'affiche normalement, sauf que lorsque j'utilise la listbox et que je selectionne une annee, la seconde listbox n'apparait pas
    Le error_report m'affiche aussi "81" qui doit etre un numero d'error mais j'ai pas reussi trouver cette erreur sur le site php ou avec Google

    J'ai mis en piece jointe la page modifiee (test_graph.php) et aussi une n'utilisant pas le php (btest.php) avec le javascript utilise (list.js) pour voir comment ca doit fonctionner.

    EDIT: apres un affichage de mon script j'ai remarque que mon FOR etait tronque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    for (var i=0; i
                    new_option = document.createElement("option");
    ...
    Et ca aurait du faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    for (var i=0; i<list_choix[selection].length; i++) {
                    new_option = document.createElement("option");
    ...
    Je pige pas?
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 479
    Par défaut
    $month = date("m");
    tu peux remplacer par :
    $month = date('F');
    Ca te donnera directement le nom des mois et plus besoin de switch

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    Citation Envoyé par smarties
    $month = date("m");
    tu peux remplacer par :
    $month = date('F');
    Ca te donnera directement le nom des mois et plus besoin de switch
    Pas mal, je connaissais pas.
    Mais comment je fais apres pour rentrer tous les mois jusqu'au mois date('F') ?

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    J'ai resolu le probleme du FOR qui s'affichait pas!
    En fait il n'apreciait pas que le '<' soit colle a "list_choix[selection].length;"

    Malheureusement j'ai tjrs mon erreur 81 et mes listbox qui marchent pas

Discussions similaires

  1. [JavaScript]-listes liées 2 par 2
    Par tosprou dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2008, 18h26
  2. [Javascript] liste deroulante sans bouton
    Par hi_vivie dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 14/06/2006, 17h53
  3. [Taglib / JSP / Javascript] Liste imbriquées
    Par Resyek dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/05/2006, 21h26
  4. Javascript : Liste déroulantes
    Par Laurent91300 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/04/2006, 14h54

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