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

Conception Web Discussion :

Comment tracer un trait et récupérer une valeur


Sujet :

Conception Web

  1. #21
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Tu as completement raison le echo' pour afficher le html est completement inutile ....mais bon j'ai suivi les conseils d'un ami .

    Par contre est il possible que je remplace le id de l'image cliquée par un value ou name ( comme class en css ) afin d'avoir le droit d'avoir des id identiques ?

    Car en fait mes segment marchent par groupes de 4 donc les 4 premiers auront la valeur 0, les 4 suivant la valeur 1 etc... ?

    Sinon j'ai cherché une solution pour "filtrer" mes données afin de transformer la valeur de l'id en entier ou ne garder que le dernier chiffre mais je ne trouve pas

    En tous cas merci pour l'efficacité c'est vraiment top

  2. #22
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Le plus simple est de ne rien changer sur le principe et de faire un petit traitement en php à la réception du post.

    Par exemple si tu veux une note de 0 à 9 par interval de 4 segments qui auront la même note, tu peux faire ceci :

    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
    <?php
    if (isset($_POST['envoi']))
    {
    
    	function Note_interval($note,$interval)
    	{
    		$note = substr($note,1);// supprime le premier caractère qui est un lettre
    		$note = intval($note); // caste le résultat en entier
    		$note = floor($note/$interval);//arrondi à l'entier inférieur
    		
    		return $note;
    	}
    	
    	
    	$interval = 4;
    	
    	$note1 = Note_interval($_POST['ligne_value'],$interval);
    		
    	$note2 = Note_interval($_POST['ligne_value_2'],$interval);
    		
    		
    	echo 'note ligne 1 = '.htmlspecialchars($note1);
    	echo '<br />';
    	echo 'note ligne 2 = '.htmlspecialchars($note2);
    }
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    <script type="text/javascript">
    <!--    
    function marque(el,id_ligne,id_input) // el représente l'objet cliqué puisqu'il reçois "this" (= l'objet en cours) dans l'appel de la fonction
    {
        // cherche l'élément avec un id = ligne
        var ligne = document.getElementById(id_ligne);
    
        // cherche l'élément avec un id = ligne_value
        var input = document.getElementById(id_input);
    
        // si var ligne est défini 
        if (typeof ligne != 'undefined')
            {    
                // Tableau des tag (balises) "img" contenus dans l'élément var ligne 
                var tab_img = ligne.getElementsByTagName('img');
    
                // Longueur du tableau
                var tab_img_length = tab_img.length;
        
    
                for (var i= 0; i < tab_img_length; i++)//liste les éléments du tableau
                {
                    tab_img[i].src = "images_nav/segment.png";// on attribue à toutes les sources des images du tableau l'image du segment continu
                    
                    if(tab_img[i].id == el.id) // si l'id de l'image du tableau est égal à l'id cliqué
                        {
                           //on attribue à la source de l'image de l'objet cliqué, l'image avec le segment vertical
                            el.src = "images_nav/segment_v.png";
                            
                            //si var input est défini on lui donne la valeur de l'id de l'objet cliqué
                            if (typeof input != 'undefined') input.value = el.id; 
                        }
                }
            }
    }
    -->
    </script>
    </head>
    <body>
    
    <div>  
           
        <form action = "#" method = "post">
        
        <p>
        <span id="ligne">
        <?php 
    	// on affiche 40 segments de ligne (de 0 à 39) avec un id incrémenté s0,s1,s2,s3...
    	for($i=0; $i<40;$i++){?><img src="images_nav/segment.png" id="s<?php echo $i?>" onclick="marque(this,'ligne','ligne_value')"/><?php } ?>
        </span>
        
        <input type = "hidden"  name = "ligne_value" id = "ligne_value" />                     
        </p>   
    	
        <p>
        <span id="ligne_2">
        <?php
    	// on affiche 40 segments de ligne (de 0 à 39) avec un id incrémenté t0,t1,t2,t3...
     	for($i=0; $i<40;$i++){?><img src="images_nav/segment.png" id="t<?php echo $i?>" onclick="marque(this,'ligne_2','ligne_value_2')"/><?php } ?>
        </span>
        
        <input type = "hidden"  name = "ligne_value_2" id = "ligne_value_2" />                     
        </p>   
    	
    	<input type = "submit" value = "Envoyez"  name="envoi" />
     
            
        </form>
        
    </div>
    
    </body>
    </html>
    Note que dans la boucle j'ai fait afficher 40 segments puisque tu veux 10 notes de 0 à 9 par groupe de quatre.

  3. #23
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Merci ,
    Mais en fait du coup je n'avait pas vu ta reponse du coup j'ai appliqué la méthode "barbare" pour appliqué une valeur de 4 en 4 lol
    Mais bon ca fonctionne , je vais me pencher un peu plus tard sur le filtre a appliquer mais ne recupérer que la valeur entiere .

    Je pensais etre arrivé au bout mais le soucis c est que je n arrive plus a me connecté a ma bdd , ou en tous cas a remplir le tableau de ma bdd.

    Pourtant je recupere bien mes données de sessions sur la derniere page de mon questionnaire

    Je cherche pourquoi ....

  4. #24
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Oui vaudrait mieux faire comme je t'ai montré car un id doit être unique dans un code html.
    Et en fait la fonction pour faire un point tous les quatre (ou n segments) se résume à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	function Note_interval($note,$interval)
    	{
    		$note = substr($note,1);// supprime le premier caractère qui est un lettre
    		$note = intval($note); // caste le résultat en entier
    		$note = floor($note/$interval);//arrondi à l'entier inférieur
    		
    		return $note;
    	}
    	
    	
    	$interval = 4;
    	
    	$note1 = Note_interval($_POST['ligne_value'],$interval);
    donc bon c'est tout simple.

  5. #25
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Bonjour ,
    heuu tout simple , oui quand tu as la réponse c'est vrai ... mais je suis loin de maitriser .

    Pour simplifier j'ai utilisé un start négatif car j'avais parfois 2 ou 3 caractere devant le chiffre du coup j'ai fait ça :
    $_SESSION['ligne_value'] = substr($_POST['ligne_value'],-1);
    $_SESSION['ligne_value2'] = substr($_POST['ligne_value2'],-1);

    Je suis arrivé au bout , reste plus qu'a mettre en forme pour etre compatible IE et Firefox.
    Merci beaucop pour ton aide ;0)

  6. #26
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par rocofolie Voir le message
    Pour simplifier j'ai utilisé un start négatif car j'avais parfois 2 ou 3 caractere devant le chiffre.
    Et pourquoi tu avais 2 ou 3 caractères devant le chiffre ? Enfin bon oui si tu veux plus de 26 lignes par page je peux comprendre que tu aies modifié l'exemple mais tu aurais pu aussi mettre systématiquement deux lettres (ou plus) et faire par exemple $note = substr($note,2).
    Cela dit ta méthode est intéressante mais elle limite les notes de 0 à 9 d'où les complications dans le code html

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Comment récupérer une valeur de cellule avec le bon format?
    Par jeo13 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/06/2008, 12h41
  2. Comment récupérer une valeur d'une DataGridView
    Par rar77 dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/11/2007, 19h11
  3. Réponses: 10
    Dernier message: 22/08/2007, 18h07
  4. Comment récupérer une valeur d'un paramètre d'une balise object?
    Par cassy dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 15/11/2006, 12h12
  5. Réponses: 1
    Dernier message: 31/10/2006, 11h15

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