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 :

Positionner des Div grâce à une boucle


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 28
    Points : 21
    Points
    21
    Par défaut Positionner des Div grâce à une boucle
    Bonjours à tous!
    Je dispose de l'image suivante (vu qu'elle est de grande taille, je met juste le lien): http://upload.is.free.fr/upload/5j3f2rkl.png.
    Je cherche à mettre dans chaque case 10 zéro, répartis sur deux lignes:
    00000
    00000
    (oui, je sais, dis comme ça, ça à l'air très con XD)
    Pour éviter de me taper 64 fois le code à taper, j'ai eu l'idée de faire une double boucle.
    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
    <style type="text/css">
    div#test { <!-- on a une première division qui à l'image comme image de fond -->
        background-image:  url(plateau_de_jeu.php);
        background-repeat: no-repeat;
        height: 600px;
        width: 600px;
    }
    </style>
    <div id="test">
    <?php
    $left = 5;
    $top = 6; //ces valeurs sont les valeurs de bases pour centrer a peu près les zéros dans les cases.
    $nom_left_1 = "u";
    while($left < 600) 
    {
    echo '
    <style type="text/css">
    div#'.$nom_left_1.' {
        position: relative;
        height: auto;
        width: auto;
        left: '.$left.'px; 
        top: '.$top.'px; 
    }
    </style>
    <div style="display: inline;" id="'.$nom_left_1.'"><span class="select_grand"><font color="black">00000</font><div class="info_grand">
    		<form method="post" action="combat.php">
    			<input type="submit" value="avancer">
    		</form>
    	</div></span>
    </div>';
     
    $left = $left + 50;
    $nom_left_1 .= 'u';
    }
    ?>
    </div>
    Dans le souci de ne pas trop complexifier le code, je n'ai mis que la boucle qui écrit horizontalement les zéro.
    Il suffira de la répéter en augmentant la verticalité pour avoir toutes les cases de remplies, mais je en m'y risque pas tan que la première boucle ne marche pas.

    Voilà le résultat que j'obtenais: http://upload.is.free.fr/upload/u0ahxu10.jpg

    J'en ai déduis que c'étais le saut de ligne <div> qui posait problème, vu que la distance horizontale était bonne. J'ai donc inclus le display: inline;, qui n'étais pas là au départ, avec le résultat à été le suivant:

    http://upload.is.free.fr/upload/wagzxbgu.jpg

    Bon, non seulement le problème de saut de ligne n'étais pas résolu, mais en plus certains zéros c'étaient décalés. J'ai essayé de voir si cela fonctionnais si on enlevais une ligne de 0 et le <br>; voilà le résultat:

    http://upload.is.free.fr/upload/8xm45zqk.jpg

    Si quelqu'un a des idées sur ce que ça pourrait être... Ce serais sympa de combler mon ignorance
    Merci d'avance=)

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    essaye ca dans ton div
    sur ta prochaine ligne, rajoute

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Merci de prendre le temps de m'aider=)
    J'ai effectué les modifications sur le code, ce qui donne désormais ça:
    http://upload.is.free.fr/upload/iz0wb8ya.jpg

  4. #4
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    dans ton message tu dis que tu fais une double boucle mais dans ton code, je n'en vois qu'une

    le code devrait ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for ($ligne = 1; $ligne <= 2; $ligne++) {
    	for ($colonne = 1; $colonne <= 2; $colonne++) {
    		$decallageGauche = $colonne * 50 - 45;
    		$decallageHaut = $ligne * 6;
     
    		// affichage
     
    	}
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    Justement, voyant que le première boucle ne fonctionnais pas, je n'ai pas encore mis la deuxième: si on rajoute la deuxième boucle, on aura juste 12 lignes qui buggent de la même façon au lieu d'une seule, et le problème n'en sera que plus complexe à identifier, non?
    Et, au passage, je dois avouer que même si j'en connais le principe, je ne suis pas très à l'aise avec la boucle For...
    Si vous pouviez prendre le temps de m'expliquer pourquoi elle serait plus utile que while, ça serait assez génial =)
    Et si en plus quelqu'un trouvais pourquoi ces zéros se décalent, ça me ferait vraiment grimper au 7ème ciel

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    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
    <div id="plateau">
    <table>
    	<?php
    	$lignes = 0;
    	while($lignes < 12)
    	{
    		?><tr height="48">
    		<?php
    		$colonnes = 0;
    		while($colonnes < 12)
    		{
    			?><td width="50">00000<br>00000</td><?php
    			$colonnes ++;
    		} ?>
    		</tr><?php
    		$lignes ++;
    	}?>
    </table>
    </div>
    J'ai adpaté ton bout de code de façon à utiliser un tableau qui, lui, marche!
    Merci à tous pour votre aide, résolu=)

  7. #7
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par Snap luvs pastèque Voir le message
    Et, au passage, je dois avouer que même si j'en connais le principe, je ne suis pas très à l'aise avec la boucle For...
    Si vous pouviez prendre le temps de m'expliquer pourquoi elle serait plus utile que while, ça serait assez génial =)
    la boucle "for" fait exactement la même chose que ton code avec "while" mais ça permet d'avoir une écriture de code plus clair
    par exemple ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (CONDITION_DÉPART; CONDITION_CONTINER; CODE_INCRÉMENTATION) {
    	CODE_INTÉRIEUR
    }
    fait la même chose que ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CONDITION_DÉPART
     
    while (CONDITION_CONTINER) {
    	CODE_INTÉRIEUR
     
    	CODE_INCRÉMENTATION
    }
    donc ton code peut être réécrit comme ça :
    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
    <div id="plateau">
        <table>
     
            <?php for ($lignes = 0; $lignes < 12; $lignes++) {?>
     
                <tr height="48">
     
                    <?php for ($colonnes = 0; $colonnes < 12; $colonnes++) {?>
     
                        <td width="50">
                            00000<br>
                            00000
                        </td>
     
                    <?php }?>
     
                </tr>
     
            <?php }?>
     
        </table>
    </div>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer des listes grâce à une boucle
    Par Emmanuel_3005 dans le forum Général Python
    Réponses: 7
    Dernier message: 04/02/2014, 10h10
  2. Afficher des Divs dans une boucle
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/12/2009, 10h41
  3. [MySQL] Traitement des variables d'une boucle for
    Par liryc78 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/03/2006, 20h53
  4. positionnement des puces d'une liste
    Par la.sophe dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 15/02/2006, 20h39
  5. Positionner des cellules dans une page
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2005, 10h25

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