28172 sujets

CSS et mise en forme, CSS3

Bonjour,
je rencontre actuellement un petit problème dans l'appel d'une class css.
Je souhaite afficher à la suite les informations contenues dans différents fichier.txt.
Ma class .text dans mon fichier css permet d'afficher les informations dans un encadré gris.
Cependant lorsque je l'appelle cela ne fonctionne pas.
J'ai aussi un id texte qui contient les mêmes consignes que la class .text mais lui lorsque je l'appelle affiche bien les informations dans l'encadré mais de par sa nature d'id ne peut me générer plusieurs encadrés. Je ne sais pas si je suis très clair.... Lorsque j'utilise l'id texte seule les informations du dernier fichier.txt utilisé sont affichées dans l'encadré gris puisqu'a chaque boucle du for les informations précédentes sont "écrasées" par les nouvelles.
Voici les bouts de code :
Le CSS
 
#texte
{
        position: absolute;
        top:100px;
        width:60%;
        left:20%;
        height: auto;
        background-color:#A9A9A9;
        font-family: arial;
        z-index:1;
        border-radius: 15px;
        color:#FFFFFF;
        text-align : center ;

}

.text
{
        position: absolute;
        top:100px;
        width:60%;
        left:20%;
        height: auto;
        background-color:#A9A9A9;
        font-family: arial;
        z-index:1;
        border-radius: 15px;
        color:#FFFFFF;
        text-align : center ;

}


Le PHP


    <body>
                        <?php
                        include 'entete.html';
                        $arraypath = glob('./demandes/*.txt',GLOB_BRACE);
                        $taille = count($arraypath);
                        for ($i = 0; $i < $taille ; $i++)
                                {
                                $fichier = file_get_contents($arraypath[$i]);
                                $tableau = explode("|", $fichier);

                                echo '<div class="text">'.'<p>'. $tableau[0] .'</p>'.'<p>'. $tableau[3] . '</p>'.' <p>'. $tableau[4].'</p>' . '</class>';
                                }
                        ?>
        </body>



J'espère que c'est compréhensible...
Merci d'avance et bonne journée Smiley smile
Modifié par Steex (25 May 2017 - 20:55)
Bonjour,

Je suis pas sûr d'avoir tout compris mais lorsque l'on écrit du CSS, c'est recommandé de n'utilisé que des classes pour éviter des problèmes de spécificité. Les id sont réservés aux liens ancrés, aux attributs aria (l’accessibilité) et le javascript (getElementById()). Donc réessayer avec que des classes.
Bonsoir,
D'abord merci pour votre réponse Smiley smile
Et ensuite du coup dans mon php je n'utilise que la class et non l'id justement Smiley ohwell
Je connais pas la balise <class> par contre.... ce serait pas un </div> plutôt....
Modifié par allan00958 (25 May 2017 - 21:43)
Merci, c'est vrai que ca semble plus logique !
J'ai modifié mais ca ne marche pas Smiley ohwell
Ca affiche bien dans mon encadré gris mais ca n'en affiche pas plusieurs ca affiche un encadré et ca remplace toujours dans le même encadré à l'intérieur...
voici mes deux pages concernées.

https://1drv.ms/f/s!AkXufzquYtNzli4XF_MY1YVKt6zu

Une permet de rentrer des informations par formulaire que je stock ensuite sous forme de fichier .txt et l'autre a pour but de les restituer en allant chercher les info dans les .txt.
Seulement malgré la boucle for seul un encadré gris s'affiche alors qu'il y a actuellement 3fichier .txt dans le dossier " demandes".

Je crois que j'ai du mal à m'exprimer clairement ... x)
Je connais pas trop PHP, mais effectivement, vu la boucle, vous sélectionner les index à afficher $tableau[0], $tableau[3] et $tableau[4] donc le résultat sera un et un seul résultat, donc un seul div avec la class 'text.

Essayez avec

$tableau[$i]

Modifié par allan00958 (25 May 2017 - 22:51)
Ben en fait les fichier .txt sont stockés dans le tableau $arraypath et a chaque tour de la boucle for la variable $tableau se rempli des nouvelles informations du fichier contenu dans la case (correspondant au tour) du tablea arraypath.
l'affichage des $tableau[0] $tableau [3] etc sert juste a selectionner quelles info afficher.

Chaque fichier .txt est composé d'un titre, d'une adresse mail, d'un numéro de tel, et d'une description avec entre chaque chose un retour a la ligne.
les chemin de chacun de ces fichier sont contenus dans le tableau arraypath.
a chaque tour de la boucle for je rempli le tableau $tableau avec les infos contenues dans le fichier du tour en cours arraypath[0] au premier tour arraypath[1] au second tour
puis je fais afficher dans une <div> sans <id=> mais avec une <class=> l'objectif étant d'avoir plusieurs <div avec une meme class.
Encore une fois je ne sais pas si j'ai été très clair.. ^^'
le fait de sélectionner quelles cases du tableau a afficher en écrivant $tableau[0] $tableau[1] me sert juste a n'afficher comme sur le screen que le titre la date et la description !
J'ai testé la boucle et elle s'affiche bien 3 fois donc le problème pourrait venir de la variable $taille. Remplacer par 3 par exemple.
J'ai finis par trouver.
Dans mon css la class text etait en position absolute a top 100px
les <div class="text" alors crées s'empilaient les unes sur les autres, j'ai donc mis la position en relative ce qui a pour effet de mettre la <div class="text" a 100px de la précédente et donc permet d'afficher toutes mes divisions.

voici les codes si d'autres personnes rencontrent le même problème.


.text
{
        position:relative;
        top:100px;
        width:60%;
        left:20%;
        height: auto;
        background-color:#A9A9A9;
        font-family: arial;
        z-index:1;
        border-radius: 15px;
        color:#FFFFFF;
        text-align : center ;
        float:top;
        margin-top:50px;
}



                        <?php

                        include 'entete.html';
                        $arraypath = glob('./demandes/*.txt',GLOB_BRACE);
                        $taille = count($arraypath);

                        for ($i = 0; $i < $taille ; $i++)
                                {
                                $fichier = file_get_contents($arraypath[$i]);
                                $tableau = explode("|", $fichier);
                                echo '<div class="text">'.'<p>'. $tableau[0] .'</p>'.'<p>'. $tableau[3] . '</p>'.' <p>'. $tableau[4].'</p>' . '</div>';
                                }
                        ?>



Et encore merci allan 00958 de m'avoir aidé Smiley smile