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

Langage PHP Discussion :

Vos conseils pour un sudoku : cacher des champs aléatoirement dans une grille (tableaux)


Sujet :

Langage PHP

  1. #21
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Salut,

    si je suis bien ton JS.

    k va avoir la valeur 0,1, ....
    or quand tu fais $(k), tu vas chercher l'objet avec un id = 0 puis 1... , alors que toi tu cherches plutot un objet avec un id = '1_0', puis '1_1' ....

    autre chose, exclu également ton id que tu testes, sinon tu sera toujours en rouge, car à un moment donné tu tomberas forcément sur la cellule que tu viens de quitter.

    Une idée, que je viens d'avoir en écrivant, tu peux utiliser les classes pour parcourir les bonnes lignes et colonnes.
    par exemple, tu auras ta matrice avec les styles suivants :
    [col_1, lin_1][col2, lin_1][col3, lin_1]
    [col_1, lin_2] ....

    ensuite tu auras juste à parcourir tous les items qui ont les 2 styles qui t’intéresse.
    Tout énigme a une solution ! Tout est question de discipline !

  2. #22
    Membre du Club
    Homme Profil pro
    Développeur Web en formation
    Inscrit en
    Février 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en formation

    Informations forums :
    Inscription : Février 2014
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Oui c'est exactement ça, je cherche plutot l'id
    Mais justement comment lui faire comprendre : va chercher toutes les cellul avec l'ID "dont le numéro de colonne est égale à celui de la cellule où tu es" ?
    Parceque si je joue avec les classe, je ne comprends pas bien la différence.
    Je serais tenter de mettre en classe la même chose qu'en id à savoir class="'.$j.'-'.$i.'"

    C'est pour ça que j'ai mis "i" car c'est le nom de ma variable dans PHP qui permet de connaitre le numéro de ligne, et J celui de la colonne
    du coup $j-$i : pour $j=4 et $i=3 on a bien 4-3
    Si on reprend l'idée de mon code, il serait donc censé vérifier : 0-3, 1-3, 2-3, 3-3. STOP
    (enfin c'est ce que je voudrais qu'il fasse ^^)

    Pour l'exclusion de la cellule où je suis c'est prévu.
    Dans mon code je lui dit bien de boucler pour K > à i (i étant la cellule où on est).
    IL s'arrêtera donc là
    Et je prévoit une autre boucle qui reprend à i+1
    Il fera donc dans la première boucle i-4, i-3, i-2, i-1. STOP
    Seconde boucle : i+1, i+2...FIn

    Arf Mode boulet ON

  3. #23
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    l'idée des classes c'est d'en avoir 2 par objet, après en décomposant l'id de la cellule que tu viens de quitter, tu connais la colonne et la ligne ou tu es.
    donc tu peux facilement trouver les 2 classes qui t’intéresse et les parcourir.

    sinon en JS, tu n'as pas accès aux variables de PHP,
    il faut donc que tu récupère la valeur de ton i avec un split (ou l’équivalent en JS).
    pour l'id, il te faudra passer par une variable intermédiaire pour concaténer ta colonne et ta nouvelle ligne.
    dans l'esprit suivant :

    Code javascript : 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
     
     
    $("input").change(function(){// quand on quitte la cellule
        split ($this.id ) into ligne, colonne. #voir la synthaxe correcte du split.
     
        for(var k =0;k< colonne ;k++){ // pour K inférieur à i (soit le numéro de ligne où on se trouve)
     
           monidsearch = ligne . '-' . k.
          if($(this).val()==$(monidsearch).val()){ // si la valeur de K est égale à la valeur de i
            $(this).css("background-color","#6f6f6f");
            $(this).css("color","#ff6c6c");// affiche le texte en ROUGE
            $(this).css("font-size","14px");
          }
          else{
            $(this).css("color","#a2cdf8");//sinon, en bleu ciel
          }
        }

    je l'ai fait sur la colonne, mais le principe est le même sur la ligne.
    Tout énigme a une solution ! Tout est question de discipline !

  4. #24
    Membre du Club
    Homme Profil pro
    Développeur Web en formation
    Inscrit en
    Février 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en formation

    Informations forums :
    Inscription : Février 2014
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Ahhh ok oui je vois.
    Merciii

    je vais aller voir la syntaxe exacte du split mais je vois ce que tu veux dire

    Et ensuite, oui effectivement, le principe est exactement le même pour la ligne, y'a juste à remplacer

    +1

  5. #25
    Membre du Club
    Homme Profil pro
    Développeur Web en formation
    Inscrit en
    Février 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en formation

    Informations forums :
    Inscription : Février 2014
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Et bien me voilà de retour pour cloturer ce topic et remercier de l'aide reçu

    Si toutefois d'autres avaient une problématique similaire, voici comment je m'en suis sorti

    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
     $("input").change(function(){// quand on quitte la cellule
        $(this).css("background-color","#6f6f6f");// Passe la couleur de fond de cellule de cette couleur (gris)
          var ident = $(this).attr('id');// on récupère l'attribut ID de la balise <input>
          var splitresult = ident.split("-"); // Coupe l'attribut ID en cases (dans une tableau nommé splitresult), dont le séparateur est "-" (si attr = 4-3, il coupera 4, "-" = séparateur)
          var j = splitresult[0];//1ere case du tableau = j (soit n° de colonne dans mon fichier PHP)
          var i = splitresult[1];//2nd case = i (soit n° de ligne)
          valID = j + "-" + i;//on reprend l'ID décomposé et compatible jQuery dans une variabl (l'équilavent php de "id="'$i.'-'.$j'").
     
          // VERIFICATION DE LA COLONNE DE SAISIE
          var erreur=false;// établissons une valeur par défaut permettant d'autoriser ou stopper la seconde boucle
          for(k=0;k<9;k++){//Boucle pour vérifier la colonne : Boucle jusqu'à 8 (ce qui fera boucler sur toute la hauteur du tableau qui est de 9 cases)
            valID = j + "-" + k;// On initialise valID : "J" étant le n°de colonne où on est, et qui doit rester fixe. Seul "i" (devenu K pour la boucle) doit changer
            if(k!=i){// si tu te trouves partout ailleur qu'à la cellule où est l'input concerné par l'événement (car si i=K c'est qu'on est en train de vérifier la cellule de l'input)
              if($(this).val()== $('#'+valID).val()){// si la valeur entrée dans cette input = la valeur de la cellule avec l'id que tu es en train de parcourir
                alert("ATTENTION ! cette valeur existe d\351j\340 dans la colonne...");
                $(this).css("color","#ff6c6c");//texte en ROUGE
                erreur = true;// transforme la variable erreur en True (pour bloquer la seconde boucle, devenue inutile puisqu'il y a déjà une erreur de rencontrée)
                break;// sort de la boucle
              }
              else{ // sinon, si la valeur n'existe pas
                $(this).css("color","#a2cdf8");//texte en BLEU
              }
            }
          }
    Voilà et le principe est le même pour la ligne de saisie

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

Discussions similaires

  1. Mettre des images aléatoirement dans une grille
    Par LeMarseillais78 dans le forum Interfaces Graphiques en Java
    Réponses: 48
    Dernier message: 08/04/2014, 19h42
  2. Réponses: 8
    Dernier message: 15/02/2011, 12h19
  3. [SP-2007] Ajouter des champs dynamiquement dans une cutom list
    Par takuan64 dans le forum SharePoint
    Réponses: 8
    Dernier message: 26/07/2010, 14h12
  4. Insérer des champs vides dans une requête sql
    Par js8bleu dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/02/2008, 15h00
  5. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 16h29

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