Avatar billede encorez Nybegynder
21. december 2008 - 21:04 Der er 12 kommentarer og
1 løsning

Opsætning af tabeller

Hej

Jeg skal forsøge at simplificere mit problem med denne tabelkode.

<table width=100%>
<tr><td colspan="2">Dette skal gerne stå mellem de 2 celler nedenunder</td></tr>
<tr><td width=50%>Første celle er meget meget meget land</td><td width=50%>Kort celle</td></tr>
</table>

Problem er jeg ønsker at indholdet i den øverste celle stå midt mellen 2 to celler nedenunder. Men på trods af at jeg angiver begge nedre celler til 50% bredde så laver den den ene bredere hvis indholdet er længere.

Nogen god ide til at sikre dette?
Avatar billede olebole Juniormester
21. december 2008 - 21:08 #1
<ole>

"Men på trods af at jeg angiver begge nedre celler til 50% bredde så laver den den ene bredere hvis indholdet er længere." >> Så må du vise det ... jeg kan ikke få den til det  =)

Centrering af tekst gørs sådan:
    <tr><td colspan="2" style="text-align:center">Dette skal gerne stå mellem de 2 celler nedenunder</td></tr>

- og husk i øvrigt altid gåseøjne omkring dine attributter: width="100%" - osv

/mvh
</bole>
Avatar billede encorez Nybegynder
21. december 2008 - 21:17 #2
Hej
Selvfølgelig bliver teksten i den øverste celle centreret. Det er ikke selve problemet. Problemet er mere at hvis du tabellen bliver så bred at den fylder hele skærmen, så laver den ikke de to nederste celler LIGE store. Den der fylder mere får også mere plads. Og fordi indholdet i den øverste er rigtig centreret så kommer det ikke til at stå lige i midten af de to celler.

Jeg har gåseøjn og det hele. Dette var et hurtigt skrevet eksempel for at illustreret tabel-problematikken :)
Avatar billede olebole Juniormester
21. december 2008 - 21:34 #3
Som sagt: Vis et eksempel ... jeg kan ikke eftergøre dit problem  =)

Dette funker da fint:

<table width="100%" border="1">
<tr><td colspan="2" style="text-align:center">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eu mi at turpis sagittis posuere. Ut consequat turpis a dui. Curabitur consequat lacus at elit. Morbi vel velit a enim interdum cursus. Integer tempor libero in sem. Duis sed mi. Aliquam ut augue sed dui iaculis semper. Aliquam erat volutpat.</td></tr>
<tr><td width="50%">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eu mi at turpis sagittis posuere. Ut consequat turpis a dui. Curabitur consequat lacus at elit. Morbi vel velit a enim interdum cursus. Integer tempor libero in sem. Duis sed mi. Aliquam ut augue sed dui iaculis semper. Aliquam erat volutpat.</td><td width="50%">Kort celle</td></tr>
</table>
Avatar billede olebole Juniormester
21. december 2008 - 21:35 #4
- og så er der ikke nogen selvfølgelighed i, at de ting, du viser, ikke er de ting, du har problemer med. Vi andre ved jo kun, hvad du fortælller og viser os  ;o)
Avatar billede encorez Nybegynder
21. december 2008 - 21:52 #5
Dobbelt korret. Beklager. Jeg havde ikke vist en centrering. Den skal selvf være der. Du har ret i at dit eksempel er fint. Min rigtige tabel er meget større og indholder tabeller i tabeller der skaber mit problem.

Jeg tror jeg kan illustrere det med dit eksempel, modificeret:

<table width="100%" border="1">
<tr><td colspan="2" style="text-align:center">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In eu</td></tr>
<tr><td width="50%" nowrap="nowrap">Integer tempor libero in sem. Duis sed mi. Aliquam ut augue sed dui iaculis semper. Aliquam erat volutpat.Integer tempor libero in sem. Duis sed mi. Aliquam ut augue sed dui iaculis semper. Aliquam erat volutpat.Integer tempor libero in sem. Duis sed mi. Aliquam ut augue sed dui iaculis semper. Aliquam erat volutpat.</td><td width="50%">Kort celle</td></tr>
</table>

Ikke der meget sagt at jeg bruger nowrap, men jeg har har nogle celler hvor der vises billeder og de kommer lige efter hinanden. Enten er det det eller så er det tabeller inde i tabeller der gør den ikke kan finde ud af at lave de to celler lige store.
PS: For at lave de tabeller i tabeller laver jeg en rekursiv funktion. Det er et stamtræ jeg forsøger at få til at se pænt ud.
Avatar billede olebole Juniormester
21. december 2008 - 22:36 #6
Det er klart, at når du aktivt forsøger at udvide cellen med nowrap - ja, så skal det jo gå galt. Men jeg forstår ikke rigtig din strategi med at vise en hel masse, du i virkeligheden slet ikke bruger.

Derfor er det naturligvis også komplet umuligt at sige, hvad det er, du gør galt. Når man bruger tabeller til layout kan alt ske - hvorfor man ophørte med den slags for små 10 år siden. Om det er dér, dine problemer opstår, kan jeg dog som sagt intet vide om  =)
Avatar billede encorez Nybegynder
22. december 2008 - 09:33 #7
Til sidst i mit sidste indlæg forsøger jeg netop at sige at jeg IKKE bruger nowrap, men det er for at illustrere effekten.
Og jeg forstår ikke hvad du mener du ikke forstår min strategi. Jeg forsøger at vise problemet så kort som muligt for at gøre det forståeligt men det lykkes vist ikke for mig. Det er min fejl.

Og ja, det er sikkert fordi jeg bruger tabeller i tabeller jeg ikke kan styre bredden. Men det er jo derfor jeg spørger her inde og der er en løsning.
Det kan være lige gyldigt om jeg bruger nowrap eller ej. HVIS vi antog jeg brugte no wrap i den første af de nederste celler, så er min pointe netop at jeg gerne vil have cellen 2 til at være lige så bred som celle 1 (stadig de to nederste celler).
Avatar billede roenving Novice
22. december 2008 - 14:49 #8
-- men du kan klare det med en enkel løsning, sæt elementer ind i dine celler, der har en fast bredde !-)

F.eks.

<td><div style="width:50%">Noget</div></td>
<td><div style="width:50%">Noget</div></td>
Avatar billede olebole Juniormester
22. december 2008 - 17:57 #9
Hvis du lægger indhold i en celle, som ikke kan wrappe, vil du naturligvis udvidde cellen - eller skære det væk, som rager udenfor, med overflow. Hvis indholdet derimod kan wrappe, kan jeg ikke forstå, du får de problemer.

Jeg tror ikke, vi kommer meget længere, hvis ikke du viser, hvad problemet i virkeligheden er  =)
Avatar billede encorez Nybegynder
22. december 2008 - 18:52 #10
Jeg håbede ellers at <div> tingen ville gøre det, men ikke lige på den måde.
Se en modificeret version af mit stamtræ her
http://img185.imageshack.us/my.php?image=mitstamtrerp0.jpg
Pointen er at den valgte person er i toppen i midten. Det er ikke noget problem. Men som I kan se er min fars side (højre) mindre end min mors side. Og det gør at jeg om jeg står øverst midt i tabellen så kommer jeg ikke til at stå lige midt mellem min mor og far.
Desuden skal jeg bagefter i gang med at finde ud af hvordan jeg laver streger fra min mor og ned til hendes mor og far. Og så videre. Det er som sagt en rekursive funktion der generere tabeller i tabeller så længe der er familiemedlemmer til det.
Til info, de personer der står til venstre for "Mor" er hendes søskende. Og de der står til højre for "Far" er hans søskende.
Borders skal væk når jeg er færdig og det er kommet til at se "pænt" ud (hvis nogen sinde)
Avatar billede olebole Juniormester
26. december 2008 - 16:56 #11
Billeder er ikke til megen hjælp, når vi taler kode. Hvad er det dog, der er så uoverstigelig vanskeligt ved at vise os den kode, du har problemer med?
Avatar billede encorez Nybegynder
04. januar 2009 - 12:53 #12
Her er koden fra en primære rekursive funktion.

function create_mor_far($child, $maks_width, $sex){
    $find_mother = mysql_query("SELECT Users.id, Users.fornavn, Users.efternavn FROM Stam_relation, Users WHERE Stam_relation.user1='$child' and Stam_relation.stam_type='1' and Stam_relation.user2=Users.id order by Stam_relation.stam_type asc");
    if(mysql_num_rows($find_mother)){
        $parent         = mysql_fetch_array($find_mother);
        $mother_name     = $mother[fornavn].' '.$mother[efternavn];
        $mother_id        = $parent[id];
        $navn_width     = strlen($mother_name);
        if($navn_width<=15) $mother_width = 85; else $mother_width=$navn_width*5.6;
    }
    else return false;
   
    $find_father = mysql_query("SELECT Users.id, Users.fornavn, Users.efternavn FROM Stam_relation, Users WHERE Stam_relation.user1='$child' and Stam_relation.stam_type='2' and Stam_relation.user2=Users.id order by Stam_relation.stam_type asc");
    if(mysql_num_rows($find_father)){
        $parent         = mysql_fetch_array($find_father);
        $father_name     = $father[fornavn].' '.$father[efternavn];
        $father_id        = $parent[id];
        $navn_width     = strlen($father_name);
        if($navn_width<=15) $father_width = 85; else $father_width=$navn_width*5.6;
    }
    else return false;
   
    ?>
      <table border="0" <? if($sex=='1'){?>align="right"<? }else if($sex=='2'){?>align="left"<? }else if($sex=='3'){?>align="center"<? }?> cellpadding="0" cellspacing="0">
    <tr>
      <td valign="top">
       
        <table border="0" align="right" cellpadding="2" cellspacing="0">
        <tr><td align="right" nowrap="nowrap"><img src="gfx/trans.gif" width="<?=$maks_width?>" height="1" /><br /><table border="0" cellpadding="0" cellspacing="0"><tr><?=create_simblings($mother_id);?> <td><?=show_user($mother_id)?></td></tr></table></td></tr>
        <? if(mor_far_exist($mother_id) || mor_far_exist($father_id)){?>
        <tr><td align="center"><?=$mother_width?>--------------<?=$father_width?></td></tr>
        <tr><td><?=create_mor_far($mother_id, 0, 1);?></td></tr>
        <? }?>
        </table>
   
    </td>
    <td height="100%"><img src="gfx/trans.gif" width="15" height="1" /><? if(mor_far_exist($mother_id) || mor_far_exist($father_id)){?><br /><table border="0" cellpadding="0" align="center" cellspacing="0" height="100%"><tr><td><img src="gfx/trans.gif" width="1" height="80" /></td></tr>
    <tr><td height="100%"><img src="gfx/dot_lightgreen.gif" width="2" height="100%" /></td></tr></table><? }?></td>
    <td valign="top">
   
        <table border="0" align="left" cellpadding="2" cellspacing="0">
        <tr><td nowrap="nowrap"><img src="gfx/trans.gif" width="<?=$maks_width?>" height="1" /><br /><table border="0" cellpadding="0" cellspacing="0"><tr><td><?=show_user($father_id)?></td><td><img src="gfx/trans.gif" width="8" height="1" /></td> <?=create_simblings($father_id);?></tr></table></td></tr>
        <? if(mor_far_exist($mother_id) || mor_far_exist($father_id)){?>
        <tr><td align="center">--------------</td></tr>
        <tr><td><?=create_mor_far($father_id, 0, 2);?></td></tr>
        <? }?>
        </table>
    </td>
    </tr>
    </table>
    <?
}// Function - create-mor-far


Funktionen "create-mor-far" bliver kaldt 2 gange inde i funktionen og det er det der gør træet skævt og at mor og far-siden bliver lige brede.
Avatar billede encorez Nybegynder
14. januar 2009 - 21:03 #13
Jeg fandt ikke den ønskede løsning på problemet. Men har opgået det ved at lave en funktion der laver samme rekursive gennemløb som den rigtige funktion, men den beregner blot bredden af indholdet. Med det kan jeg sætte bredden på tabellen således at begge sider bliver lige brede. Det er ikke smukt men det virker
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