Avatar billede bars Nybegynder
17. marts 2014 - 13:08 Der er 12 kommentarer og
1 løsning

Udskriv hver anden forekomst af løkke i hver sin tabel

Hej, håber på lidt hjælp her...

Jeg har en løkke med 100+ forekomster som indeholder stien til et billede, hvilket jeg har sat ind på en side med div's som floater left. Problemet er at fordi disse billeder er af forskellig hæjde springer de meget i afstand.

Dette kan løses ved at jeg udskriver dem i to tabeller ved siden af hinanden, med hver andet billede i hver tabel. Så jeg regner med at det er noget odd/even af mit array jeg er ude i, men jeg kan godt bruge lidt assistance.

På forhånd tak...

mvh
Søren
17. marts 2014 - 15:25 #1
Det vil nok være simpler, hvis du viser os den kode du nu bruger.
Avatar billede bars Nybegynder
17. marts 2014 - 15:38 #2
jeg er nået lidt videre med koden og bruger nu divs i stedet for tabeller.

Jeg har også lavet min løkke så jeg med to betingelser kan opstille mine resultater henholdsvis i venstre og højre side. Problemet er nu hvordan det aligner under hinanden, for selv om mine even resultater floater left og mine odd resultater floater right, så tipasser de stadig i højden efter hinanden.

men her er den koder jeg har lavet. (den er med bb tags da det er noget indhold som sidder i en wordpress side.

[php]
$rowCount = 0;
$fulllist = simplexml_load_file('xmlfil');
echo "[div style='margin:0px -20px 0px -20px;'][img src='/2014/03/doedsannonce_mbh.png' Width='628px' style='margin-bottom:5px;']";
foreach ($fulllist as $list):
  $image=$list->jpg;
  $post=$list->idannonce;
  $first=$list->fornavn;
  $last=$list->efternavn;
  $city=$list->bynavn;
  $columns=$list->spalter;
  if ($columns == 2)
  {$width="309px";}
  else
  {$width="154px";}

  if ($rowCount++ % 2 == 1 )
  {
    echo "[div style='float:left;width:309px;padding:5px 5px 5px 0px;text-align: center;clear:left;'][a title='".$first." ".$last.", ".$city."' href='http://www.afdoede.dk/index.php?page=visannonce&id=".$post."' target='_blank'][img style='float:middle;' Width=".$width."' src='".$image."' /][/a][/div]";
  }
  else
  {
    echo "[div style='float:right;width:309px;padding:5px 0px 5px 5px;text-align: center;clear:right;'][a title='".$first." ".$last.", ".$city."' href='http://www.afdoede.dk/index.php?page=visannonce&id=".$post."' target='_blank'][img style='float:middle;' Width=".$width."' src='".$image."' /][/div]";
  }
endforeach;
echo "[/div]";
[/php]
17. marts 2014 - 17:36 #3
aaaaaa
aaaaaa
              bbbbbb
              bbbbbb
              bbbbbb
cccccc
              dddddd
              dddddd
              dddddd
17. marts 2014 - 17:37 #4
Ignorer #3, en af mine ti tommelfingre landede på den forkerte knap mens jeg testede noget.  Jeg kommer tilbage med et indlæg.
17. marts 2014 - 17:46 #5
Jeg prøver igen.  Jeg vil gætte (jeg kan ikke teste det) at dine div'er kommer til at sidde som illustreret i #3.
Hvis du vil være tilfreds med en opstilling i retning af dette:

aaaaaa bbbbbb
aaaaaa bbbbbb
            bbbbbb
cccccc dddddd
            dddddd
            dddddd

så kunne du prøve at tilpasse koden, således at du udlader 'clear:left' og 'clear:right' og i stedet efter en 'right' div insætter en div med 'clear:both'.  Altså:

........
  if ($rowCount++ % 2 == 1 )
  {
    echo "[div style='float:left;width:309px;padding:5px 5px 5px 0px;text-align: center;'][a title=..............[/div]";
  }
  else
  {
    echo "[div style='float:right;width:309px;padding:5px 0px 5px 5px;text-align: center;'][a title=..............[/div]";
    echo "[div style='clear:both'] [/div]"
  }
........
Avatar billede bars Nybegynder
18. marts 2014 - 09:12 #6
Det jeg er på udkig efter er sådan her:

aaaaaa bbbbbb
aaaaaa bbbbbb
cccccc bbbbbb
eeeeee dddddd
eeeeee dddddd
gggggg dddddd
gggggg ffffff
gggggg hhhhhh
iiiiii hhhhhh
iiiiii
iiiiii

Men det lader til at jeg skal skrive mit array i to forskellige kolonner for at få dette opstillet direkte efter hinanden. men hvis der er andre gode ideer modtager jeg gerne.
Avatar billede bars Nybegynder
18. marts 2014 - 10:06 #7
I stede for at eEcho'e mine divs, så kalde den første left og den anden right, for derefter at styre det med 2 nye løkker som jeg kan styre i deres egne parent divs så venstre og højre kolonne slet ikke er afhængige af hinanden.

Men jeg har brug for lidt assistance for at lave disse arrays og udskrive dem.
18. marts 2014 - 10:45 #8
Jeg frygtede, at det var en opstilling som #6 du var ude efter.  Jeg kender ikke umiddelbart en 'smuk' løsning, men du har uden tvivl ret i, at det så ikke kan klares med at placere hver anden i en venstre eller højre kolonne.  Og for først at kunne placere halvdelen i en venstre kolonne og derefter den anden halvdel i en højre kolonne skal du på forhånd vide hvor mange der er, og heller ikke det er nok, hvis der for eksempel er flere høje divs i den første halvdel end i den anden halvdel.  Det må vel blive noget med, at du, som du er inde på, placere images'erne i en array og samtidig i en variabel lægger højderne sammen, derefter i en loop placerer images'erne i divs i en venstre kolonne indtil summen af højderne på disse images'er overstiger halvdelen af den totale højde, og derefter i en anden loop placerer resten af images'erne i en højre kolonne.  Jeg ville nok kunne programmere sådan noget, hvis jeg skulle bruge det til mit eget project, men jeg har ikke mod på at gå igang her.
18. marts 2014 - 10:49 #9
Yderligere, en løsning som jeg skitserede vil placere images'erne i retning af:

aaaaaa dddddd
aaaaaa eeeeee
bbbbbb eeeeee
bbbbbb eeeeee
bbbbbb ffffff
cccccc

Hvis du vil have

aaaaaa bbbbbb
aaaaaa bbbbbb
cccccc bbbbbb
dddddd eeeeee
o.s.v.

så kan jeg slet ikke overse det.
Avatar billede bars Nybegynder
18. marts 2014 - 10:57 #10
Det gør mig ikke noget at den total højde for de 2 kolonner er forskellige, og jeg har jo allerede mine Echos med hver anden udskrevet i en foreach løkke.
Jeg tænker, i stedet for at echoe det med det samme, så lægge det i 2 arrays, hvor jeg så bagefter kan i en venstre kolonne udskrive den ene array og i en højre kolonne udskrive højre array.
Avatar billede bars Nybegynder
18. marts 2014 - 12:00 #11
if ($rowCount++ % 2 == 1 )
  {
    arrayvenstre "[div style='float:left;width:309px;padding:5px 5px 5px 0px;text-align: center;'][a title=..............[/div]";
  }
  else
  {
    arrayhoejre "[div style='float:right;width:309px;padding:5px 0px 5px 5px;text-align: center;'][a title=..............[/div]";
  }

<div style="float:left;">
php udskriv arrayvenstre
</div>

<div style="float:right">
php udskriv arrayhoejre
</div>

Det er sådan noget jeg har i tankerne, jeg mangler bare lidt kodehjælp.
Avatar billede bars Nybegynder
18. marts 2014 - 13:39 #12
Jeg har selv fået lavet mine arrays nu og skrevet dem ud i hver sin kolonne gennem et par nye løkker.

Så jeg lukker og slukker.
Avatar billede bars Nybegynder
18. marts 2014 - 13:42 #13
Hvis nogen til fremtidig reference kunne bruge løsningen til et anden formål kommer koden lige her. $left og $right er de Echos fra foreach løkken:

$arrright=count($right);
for ($i = 0; $i < $arrright; $i++) {
    echo "[div style='margin:0px;padding:0px;display:inline;float:right;clear:right;width:309px;']".$right[$i]."[/div]";
}


$arrleft=count($left);
for ($i = 0; $i < $arrleft; $i++) {
    echo "[div style='margin:0px;padding:0px;display:inline:float:left;width:309px;']".$left[$i]."[/div]";
}
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

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