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

Mise en page CSS Discussion :

Texte qui dépasse une div + footer décalé


Sujet :

CSS

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Points : 36
    Points
    36
    Par défaut Texte qui dépasse une div + footer décalé
    Bonjour,

    Je demande votre aide pour un problème de mise en page.

    Je dois faire un site web pour un serveur, j'ai donc pas mal de catégorie à créer et à coordonner mais ce n'est pas ce qui me donne le plus de mal apparement ! ^^

    Premièrement, mon index a tout ce qu'il y a de plus banal. Je fais un include pour que toutes mes pages aient le même design.

    Cependant, j'ai un problème avec ma page de news. J'ai codé un système de news basique avec php et mysql, mais je rencontre des problèmes de mise en page.

    http://www.hostingpics.net/viewer.php?id=774686site.jpg

    Comme vous pouvez le voir , chaque news est écrite dans une div que je design à l'aide de mon fichier .css cependant, mon texte sort de cette div et je ne trouve pas d'où ça vient.

    Voici mon code de news et le css associé:

    Code php : 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
    <?php
    // on se connecte à notre base
    $base = mysql_connect ('localhost', 'root', 'root');
    mysql_select_db('aumtuto', $base);
     
    // lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)
    $sql = 'SELECT * FROM aumtuto_news ORDER BY date DESC;';
     
    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    // on compte le nombre de news stockées dans la base de données
    $nb_news = mysql_num_rows($req);
     
    if ($nb_news == 0) {
    	echo 'Aucune news enregistrée.';
    }
    else {
    	// si on a au moins une news, on l'affiche
    	while ($data = mysql_fetch_array($req)) {
     
    		// on décompose la date
    		sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);
     
    		$date = $data['date'];
    		$texte = $data['texte'];
    		$auteur = $data['auteur'];
    		$texte = strtr($texte,array('''=>'\''));
    		$texte = nl2br($texte);
    		// on affiche les résultats
     echo "<div id=\"news\">";
    		echo "<div id=\"news_titre\">";
    		echo "<div class=\"newstitre\">".$data['titre']."</div></div>
    				<div class=\"news_contenue\">";
     
    		echo $texte;
    		echo "</div>
    				<div class=\"news_posteur\">Posté le$datepar$auteur</div>
    			</div>
    			<div id=\"news_foot\"></div>
    			<br />";
    	}
    }
    // on libère l'espace mémoire alloué à cette requête
    mysql_free_result ($req);
     
    // on ferme la connexion à la base de données
    mysql_close ();
    ?>

    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
    /* News */
     
    #News {
    		width: 450px;
    		min-height: 200px;
    		float: left;
    	}
     
    #news {
    	background-image:url(images/design/news.png);
    	width: 509px;
    	min-height: 20px;
    	}
     
    #news_titre {
    	background-image:url(images/design/news_top.png);
    	width: 501px;
    	height: 51px;
    	margin-left: 8px;
    	}
     
    .newstitre {
    	padding-left: 45px;
    	padding-top: 8px;
    	font-weight: bold;
    	color: #FFFFFF;
    	font-size: 28px;
    	}
     
    .news_contenue{
    	width: 450px;
    	margin-left: 30px;
    	font-size: 18px;
     
    }
     
    .news_posteur {
    	margin-left: 10px;
    	font-style: italic ;
    	float: right;
    	margin-right: 20px;
    	}
     
    #news_foot {
    	background-image:url(images/design/news_foot.png);
    	width: 508px;
    	height: 35px;
    	margin-left: 4px;
    	}
    e plus, j'ai du mal à positionner mon footer, malgré beaucoup de modifications, je vous joins le code css. Sachant que mon footer est dans ma div "global".

    Illustration:

    http://www.hostingpics.net/viewer.ph...sitefooter.jpg

    Code css:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*Footer*/
    footer {
    	background-image:url(images/design/footer.png);
    	width:925px;
    	height:223px;
    	clear: both;
    	margin:auto;
    	padding-left: 6px;
    }

    Si quelqu'un pouvait m'éclairer sur ces différents problèmes, je lui en serais très reconnaissant.

    Merci d'avance.

    Peace

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pourquoi as-tu un sélecteur #News et un #news ?

    A part ça, tu définis tes div #news dans une boucle, or un id doit être unique dans la page.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Points : 36
    Points
    36
    Par défaut
    En gros le selecteur #News est équivalent à un selecteur #contenu_middle. C'est celui qui encadre mon include.

    Je suis d'accord avec l'unicité des div, cependant, pour designer mes news (qui ne sont pas uniques, elles) qui proviennent de ma base de données, à chaque parcours de mysql_fetch_array je dois bien les délimiter en termes de design.

    Donc y a t-il une autre solution?

  4. #4
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Points : 8 040
    Points
    8 040
    Par défaut
    Pourquoi ne pas passer par une classe .news ?

    Tes news auront bien la même présentation non ?

    De plus, ta div #news n'est jamais fermée.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Points : 36
    Points
    36
    Par défaut
    En passant par une classe .news j'ai toujours le même problème.

    Voici une petite amélioration, mais je ne comprend toujours pas pourquoi mon texte sort de ma div #news_contenu.

    http://www.hostingpics.net/viewer.ph...45785site2.jpg

    Ma div #news est fermée juste avant la div #news_foot, non?

  6. #6
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Points : 8 040
    Points
    8 040
    Par défaut
    Au temps pour moi, mal compté.

    Tu positionnes tes #news en float du coup ça sort du flux et l'élément parent ne prend pas les dimensions de ses enfants.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Points : 36
    Points
    36
    Par défaut
    Je ne comprend pas trop ta réponse.

    Ce que je veux c'est que mon texte contenu dans ma div #news_contenu. Donc que l'enfant (mon texte) prenne les dimensions du parent (ma div). Et que le parent (#news) englobe les différentes div (enfants) que contient une news.

    Je suis peut être à côté de la plaque mais si tu peux être un tout petit peu plus concret, j'en serais ravi!

  8. #8
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Voila du concret :


    Le php :

    - autant généré de l'HTML5 tout de suite, faut pas utiliser pleins de "div" partout. varier les éléments ça permet aussi de raccourcir et génériser les CSS et d'éviter des mettre pleins de class, id, etc, ça améliore aussi la lécture du code et ça joue sur le référencement naturel.

    ici j'ai choisi Article comme conteneur de news, H2 pour le titre de la news (devrait être h3 ou h4 plutôt), Liste de définition -> Définition pour le texte de la news et terme pour la date et l'auteur.
    le tout enveloppé dans un div "news".

    Code php : 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
    <?php
    // on se connecte à notre base
    mysql_connect('localhost', 'root', 'root');
    mysql_select_db('aumtuto');
     
    // lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre 
    // "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant 
    // que le nombre voulu de news à afficher (LIMIT)
    $q = "SELECT * FROM aumtuto_news ORDER BY date DESC";
     
    // on lance la requête (mysql_query) et on impose un message d'erreur 
    // si la requête ne se passe pas bien (or die)
    $r = mysql_query($q);
     
    echo '<div id="news">';
     
    if(!$r)
    {
      echo '<p class="error">Une erreur est survenue pendant la requette</p>';
    } 
    else 
    {
      // on compte le nombre de news stockées dans la base de données
      $count = mysql_num_rows($r);
     
      if ($count == 0) 
      {
        echo '<p class="noresult">Aucune news enregistrée.</p>';
      }
      else 
      {
        $i = 0;
     
        while($row = mysql_fetch_array($req)) {
          $i++;
     
          // on décompose la date
          // ??! -> sscanf($row['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);
     
          // on affiche les résultats
          echo '<article id="news_', $i, '">',
                 '<h2>', $row['titre'], '</h2>',
                 '<dl>',
                   '<dd>',   
                     '<p>', nl2br(strtr($row['texte'], array(''=>"'"))),'</p>',
                   '</dd>',
                   '<dt>',
                     'Post&eacute; le <span class="date">', $row['date'], '</span> par <span class="author">', $row['auteur'],'</span>',
                   '</dt>',
                 '</dl>',
               '</article>';
        }
      }
      // on libère l'espace mémoire alloué à cette requête
      mysql_free_result ($req);
    }
     
    echo '</div>'; // end:div id[news]
     
    // on ferme la connexion à la base de données
    mysql_close ();
    ?>


    le CSS, la encore, autant faire du CSS 3.0, depuis le temps qu'on l'attend.
    faut arrêter avec les vieilles technique pour faire des "bordures jolies". Border-radius, de discret text-shadow et hop.

    Code css : 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
    /* COLORS */
    #news *{
      color:#444;
    }
     
    #news article, #news h2, #news dt, #news dt span, #news p.error, #news p.noresult{
      color:#fff;
    }
     
    #news p.error{
      background-color:#a25;
      border-color:#a25;
    }
     
    #news p.noresult{
      background-color:#25a;
      border-color:#25a;
    }
     
    #news article, #news h2, #news dt, #news dt span{
      background-color:#444;
      border-color:#444;
    }
     
    #news dd{
      background-color:#fff;
    }
     
     
    /* Reset & global settings for news */
    #news *{
      font-family:arial;
      font-size:10pt;
      margin:0;
      padding:0;
    }
     
    /* Conteneur principal */
    #news {
      display:block;
      width:540px;
      min-height:320px;
    }
     
    /* Messages d'erreurs */
    #news p.error{
      display:block;
      border-width:3px; 
      border-style:solid; 
      font-style:italic;
      margin:8px 1px;
      margin-right:-6px;
      padding-left:8px;
      border-radius:8px;
    }
     
    /* Pas de resultat */
    #news p.noresult{
      display:block;
      border-width:3px;
      border-style:solid;  
      font-style:italic;
      margin:8px 1px;
      margin-right:-6px;
      padding-left:8px;
      border-radius:8px;
    }
     
    #news article{
      display:block;
      width:540px;
      border-width:3px;
      border-style:solid;  
      margin:4px 0;
      border-radius:8px;
    }
     
    #news h2{
      font-family:arial;
      font-size:14pt;
      display:table-caption;
      font-weight:bold;
      padding:0 8px;
      line-height:29px;
      height:32px;
      text-shadow:0px 1px 1px #000;
    }
     
    #news dl{
      display:table-row-group;
      margin:4px;
      min-height:72px;
    }
     
    #news dd{
      display:inline-block;
      min-height:24px;
      padding:8px;
      border-radius:6px;
    }
     
    #news dd p{
    }
     
    #news dt,#news dt span{
      font-size:8pt;
      height:16px;
      line-height:19px;
    }
    #news dt{
      display:block;
      text-align:right;
      bottom:0;
      padding:0 8px;
    }
     
    #news dt span{
    }
     
    #news dt span.date{
      font-style:italic;
    }
     
    #news dt span.author{
      font-style:italic;
    }


    L'HTML de test :
    Code html : 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
    <html>
    <head>
    <link href="newsTest.css" type="text/css" rel="stylesheet">
    </head>
    <body>
      <div id="news">
     
        <p class="error">Test message d'erreur</p>
     
        <p class="noresult">Test message pas de resultat</p>
     
        <article id="news_1">
          <h2>News test</h2>
          <dl>
            <dd>
    <p>
    <b>Dalek :</b> Exterminer ! Exterminer ! Exterminer ! Tu es un ennemi des Daleks ! Tu dois &ecirc;tre d&eacute;truit !<br/>
    <br/>
    <i>Le Dalek essaie de le tuer, mais rien ne se passe.</i><br/>
    <br/>
    <b>Le Docteur :</b> &Ccedil;a ne marche pas ! <i>(Il rit)</i>. Fantastique. Fantastique ! Regarde toi ! La plus grande poubelle de l'univers !<br/>
    </p>
            </dd>
            <dt>
              Post&eacute; le <span class="date">2013-02-15 05:35</span> par <span class="author">Dr.Who</span>
            </dt>
          </dl>
        </article>
     
        <article id="news_2">
          <h2>News test</h2>
          <dl>
            <dd>
    <p>
    <b>Dalek :</b> Exterminer ! Exterminer ! Exterminer ! Tu es un ennemi des Daleks ! Tu dois &ecirc;tre d&eacute;truit !<br/>
    <br/>
    <i>Le Dalek essaie de le tuer, mais rien ne se passe.</i><br/>
    <br/>
    <b>Le Docteur :</b> &Ccedil;a ne marche pas ! <i>(Il rit)</i>. Fantastique. Fantastique ! Regarde toi ! La plus grande poubelle de l'univers !<br/>
    </p>
            </dd>
            <dt>
              Post&eacute; le <span class="date">2013-02-15 05:35</span> par <span class="author">Dr.Who</span>
            </dt>
          </dl>
        </article>
      </div>
    </body>
    </html>

    Et le resultat en image :
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 13
    Dernier message: 08/06/2012, 16h19
  2. Texte qui dépasse de l'image
    Par Luffy49 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/01/2008, 12h49
  3. [Prototype] Texte chargé dans une <div> contenant des balises <script>
    Par wenijah dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 22/11/2007, 17h28
  4. Texte qui sort du "div"
    Par Aspic dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 06/07/2007, 23h05

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