Avatar billede extension Nybegynder
17. november 2010 - 17:09 Der er 13 kommentarer og
1 løsning

2 eller 3 spalter css styret

Hej jeg har et lille tricky php/css problem.

1. Jeg har et php script-snip som hvormed brugeren kan lave 1-3 tekstgrupper bestående af (Overskrift, tekstfelt samt prislinie). Scriptet virker som det skal, og resultaterne placeres korrekt ved siden af hinanden  -når der er 3 kolonner.

Hvis brugeren kun udfylder 2 kolonner, skal disse fylde samme bredde som ved 3 kolonner.
Totalbredde er ca. 485px.
Ved 3 kolonner:  Hver kolonne 33% af totalbredde
Ved 2 kolonner:  Hver kolonne 50% af totalbredde

- jeg har fået lidt hjælp, jeg skal benytte følgende:

div.2 {width:50%;}
div.3 {width:33%;} samt float:left;clear:none;

- blot kan jeg ikke få skramlet til at virke. Det skulle gerne ende med at se således ud.

http://www.minfest.dk/annoncer/groupx_styling.gif

Håber at en eller anden lige har de evner jeg mangler.

Venlig hilsen
Boris
Avatar billede webweaver Praktikant
17. november 2010 - 17:12 #1
Er det PHP'en eller CSS'en du ikke kan få til at virke, eller er det hvordan du implementeret det?

Har du en if sætning i PHP, hvor du checker hvor meget som er udfyldt, og derefter vælger den style som den skal bruge?
Avatar billede extension Nybegynder
17. november 2010 - 17:15 #2
Det er css jeg ikke kan klare. If'en er vist indbygget i scriptet
Avatar billede extension Nybegynder
17. november 2010 - 17:18 #3
Det virker på denne måde, kunden udfylder 3 felter (første spalte) klikker derefter på et plustegn, og 3 nye form-fields fremkommer osv. Scriptet holder styr på hvor mange der er ibrug.
Avatar billede extension Nybegynder
17. november 2010 - 17:20 #4
I øjeblikket bruger jeg som følger:
.column1{
    margin:0px 0px 0px 0px;
    padding:0px 5px 5px 5px;
    border:1px solid #D1D1D1;
    position:relative;
    color:#000000;   
    font-family: Helvetica,Arial,Sans-Serif;
      font-size:11px;
    font-style: normal;
      z-index:3;
float:left;clear:none;
    width:150px;
        top:10px;
}
.column2{
    margin:0px 0px 0px 0px;
    padding:0px 5px 5px 5px;
    border:1px solid #D1D1D1;
    position:relative;
    color:#000000;   
    font-family: Helvetica,Arial,Sans-Serif;
      font-size:11px;
    font-style: normal;
      z-index:3;
float:left;clear:none;
    width:150px;
        top:10px
}

Men dette efterlader blot en tom plads, ved kun 2 spalter
Avatar billede extension Nybegynder
17. november 2010 - 17:25 #5
Sorry, kun .column1 bruges.
Avatar billede extension Nybegynder
17. november 2010 - 17:28 #6
Jeg glemte da helt scriptet:

<div class="column1">

<?php for ( $i = 0, $n = sizeof( $jSeblod->overskrift_groupx)-1; $i < $n; $i++ ) { ?>
<div class="<?php echo $n ?>">

<b><?php echo $jSeblod->overskrift_groupx[$i]['overskrift']->value; ?></b>
<?php echo $jSeblod->overskrift_groupx[$i]['tekst']->value; ?><br>
<b> <?php echo $jSeblod->overskrift_groupx[$i]['pris']->value; ?></b></b>
</div>
<?php } ?>
Avatar billede webweaver Praktikant
17. november 2010 - 17:38 #7
Derfor du skal bruge en if sætning i din PHP.

Eksempel,

<?php

if ($spalte1 && $spalte2 && $spalte3) {

// Herinde kodes der de 3 DIV's med CSS på.

} else if ($spalte1 && $spalte2) {

// Herinde kodes der de 2 DIV's med ny CSS på.

} else {

// Herinde kodes der 1 DIV med tredie CSS på.

}?>


På den måde skifter den mellem de rigtige styles, når du vælger hvilken visning der skal være, udfra hvilke/hvor mange spalter der er udfyldte.

Hvis du har noget som holder styr på hvor mange som er udfyldte i forvejen, har du det måske som et tal i en variabel et sted.

I såfald kan du istedet for at sige if ($spalte && $spalte2 osv... nøjes med if ($antalSpalter > 2) {
//Hvis der er flere end 2 spalter... Denne process kan gentages med andre tag, 1, 2, 3, 4 og så videre...
}
Avatar billede extension Nybegynder
17. november 2010 - 17:44 #8
Denne holder styr på hvormange grupper der er:

<?php for ( $i = 0, $n = sizeof( $jSeblod->overskrift_groupx)-1; $i < $n; $i++ ) { ?>
<div class="<?php echo $n ?>">
Avatar billede extension Nybegynder
17. november 2010 - 17:48 #9
Problemet er at det bliver placeret under hinanden, dette skal klares v.h.a denne float:left;clear:none;

Column 1 news Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor.
98,-
Column 2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor.Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
125,-
Column 3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor.
145,-
-ellers ser det således ud
Avatar billede extension Nybegynder
17. november 2010 - 17:55 #10
Jeg kan også lave de 3 koloner således:

<div class="column1">
<b> <?php echo $jSeblod->overskrift_groupx [0]['overskrift']->value; ?></b> <br>           
<?php echo $jSeblod->overskrift_groupx [0]['tekst']->value; ?><br>
<b> <?php echo $jSeblod->overskrift_groupx [0]['pris']->value; ?></b>
                </div>                   
<div class="column2">
<b><?php echo $jSeblod->overskrift_groupx [1]['overskrift']->value; ?></b> <br>           
<?php echo $jSeblod->overskrift_groupx [1]['tekst']->value; ?><br>
<b><?php echo @$jSeblod->overskrift_groupx [1]['pris']->value; ?></b>
</div>
<div class="column3">
<b><?php echo $jSeblod->overskrift_groupx [2]['overskrift']->value; ?></b> <br>           
<?php echo $jSeblod->overskrift_groupx [2]['tekst']->value; ?><br>
<b><?php echo $jSeblod->overskrift_groupx [2]['pris']->value; ?></b>
  </div>
- så bliver de placeret ved siden af hinanden, men med fast bredde
Avatar billede extension Nybegynder
17. november 2010 - 18:03 #11
Her er hvad en anden foreslog:
This is what I'll do, in php, I count the number of results in groupx. Putt the result in a variable and this variable will be the css class of my columns.
Som dette:
<?php for ( $i = 0, $n = sizeof( $jSeblod->your_groupx )-1; $i < $n; $i++ ) { ?>
<div class="<?php echo $n ?>">
<?php echo $jSeblod->your_groupx[$i]['groupx_content']->value; ?>
</div>
<?php } ?>

Og dertil css class:
div.2 {width:50%;}
div.3 {width:33%;}

- men jeg kan ikke få dette til at virke
Avatar billede webweaver Praktikant
18. november 2010 - 00:47 #12
Tæller den rigtigt, når du kører scriptet? Og kalder den på den rigtige style? Og dermed den rigtige width? :)
Avatar billede extension Nybegynder
23. november 2010 - 09:33 #13
Opgaven er løst med anden hjælp.
Mange tak for din hjælp.
Avatar billede webweaver Praktikant
23. november 2010 - 13:58 #14
Okay godt :)

Det var så lidt ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester