Table word groter als er langere tekst in voorkomt

Pagina: 1
Acties:

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
Voordat dit topic op slot gaat zal ik even zeggen dat ik alvast gezocht heb en vrij veel hits over hetzelfde probleem heb gevonden, maar helaas geen een met een werkende oplossing.

Het probleem is als volgt ik ben een gastenboek aan het maken, de gegevens worden uit een DB gelezen en in een tabel gegooid, de tabel ziet er ongeveer als volgt uit, je hebt links een fotootje (als mensen deze aan hun profiel hebben toegevoegd) en rechts staat hun tekst.

Nu is het zo dat als de tekst te groot word, de tabel breder word, terwijl er bovenaan de tabel toch echt staat <table width=75%> (en nog paar meer parameters).

Nu is dit dus niet te bedoeling zoals jullie al wel zouden verwachten, want zo ziet het er niet uit. Ik heb geprobeerd zoals in vele topics omtrend hetzelfde probleem om de tabel in een tabel te zetten, ook heb ik geprobeerd om de Linker en de Recherkolom in een tabel te zetten, maar niks mocht baten :(

De site waar het omgaat, staat Hier

Verder heb ik, omdat het een ASP pagina betreft, de source ook nog even gepost in een rarretje, zodat de degene die dat willen de complete orginele source kunnen bekijken, deze staat hier

Ik hoop dat iemand een oplossing heeft voor dit probleem, want ik word het een beetje beu na een dag proberen, terwijl het waarschijnlijk, maar een klein foutje of probleempje is.

If it is broken, fix it. If it ain't broken, make it better!


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 26-05 13:03

Not Pingu

Dumbass ex machina

dit is nou eenmaal het standaard gedrag van tabellen.
Makkelijke oplossing: geef de tabel een overflow: hidden CSS attribuut, wat als nadeel heeft dat het te lange stuk van de zin verdwijnt.

Moeilijke oplossing: schrijf zelf een functie die stukken tekst checkt op VbCrLf en als er teveel letters op 1 regel staan, er zelf een enter (oftewel VbCrLf) tussenpropt.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
Gunp01nt schreef op 22 januari 2004 @ 18:46:

Moeilijke oplossing: schrijf zelf een functie die stukken tekst checkt op VbCrLf en als er teveel letters op 1 regel staan, er zelf een enter (oftewel VbCrLf) tussenpropt.
Over die functie had ik al zitten denken, maar goed dat is wel te doen, maar had gehoopt dat er een makkelijkere oplossing zou zijn, want met zo'n functie, moet je niet alleen het aantal letters gaan tellen ook op hele woorden afkappen, het probleem is eigenlijk dat de pagina waar het bericht gepost word, de regels die zijn afgekapt door de tekstbox zelf niet ziet als vbCrLf, want daar word wel opgecheked en opgevangen.

If it is broken, fix it. If it ain't broken, make it better!


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 26-05 13:03

Not Pingu

Dumbass ex machina

dan worden ze misschien als VbLf gezien?

Certified smart block developer op de agile darkchain stack. PM voor info.


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
Nee helaas, net geprobeerd, thx for the tip anyways.

If it is broken, fix it. If it ain't broken, make it better!


  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Cascading Stylesheet:
1
2
3
4
table
{
    table-layout: fixed;
}

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
Rickets schreef op 22 januari 2004 @ 19:19:
Cascading Stylesheet:
1
2
3
4
table
{
    table-layout: fixed;
}
Op deze manier wordt de tekst gewoon afgehakt, dat is eigenlijk ook niet de bedoeling.

If it is broken, fix it. If it ain't broken, make it better!


Verwijderd

table-layout:fixed werkt goed, maar ik krijg er geen scrollbars mee om de 'verborgen' tekst te lezen.
code:
1
2
3
<table style="table-layout:fixed;width:200px;">
<tr><td><p style="background-color:green;overflow:auto;word-wrap:break-word;">testtetrgsdfghghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhjlkhh</p></td></tr>
</table>

Hiermee krijg je wel een scrollbar. Je bent wel verplicht om een extra p-tag te gebruiken.

word-wrap:break-word; werkt vanaf ie5.5

edit:

Hmm, mogen ze hier ook wel eens gebruiken geloof ik ;)

[ Voor 19% gewijzigd door Verwijderd op 22-01-2004 19:41 ]


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
Sommige teksten breekt ie inderdaad goed af, maar soms breekt hij midden in een letter af :S

edit: en ik krijg als ik layout fixed pakt, de eerste kolom met de foto niet meer klein :?

[ Voor 34% gewijzigd door BlackBurn op 22-01-2004 19:53 ]

If it is broken, fix it. If it ain't broken, make it better!


  • stefanvverk
  • Registratie: Oktober 2002
  • Niet online
Probeer eerst eens een width-tag in de HTML toe te voegen.

code:
1
2
3
4
5
6
7
<table>
  <tr>
    <td width=200>
      Blaaatdieblat blaaaaaaaaaaat
    </td>
  </tr>
</table>


Die width-tag had je dus nog niet, waardoor je never nooit een goed resultaat krijgt. Let wel op: width-tag in de <td> zetten !!

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
stefanvverk schreef op 22 januari 2004 @ 20:39:
Probeer eerst eens een width-tag in de HTML toe te voegen.

code:
1
2
3
4
5
6
7
<table>
  <tr>
    <td width=200>
      Blaaatdieblat blaaaaaaaaaaat
    </td>
  </tr>
</table>


Die width-tag had je dus nog niet, waardoor je never nooit een goed resultaat krijgt. Let wel op: width-tag in de <td> zetten !!
Was ik in mijn startpost vergeten te zetten, maar dit had ik ook al geprobeerd, desondanks heb ik ze er nu maar weer even bijgezet, er moet toch een makkelijke oplossing zijn?

Een losse functie schrijven zie ik niet zitten :|

If it is broken, fix it. If it ain't broken, make it better!


  • stefanvverk
  • Registratie: Oktober 2002
  • Niet online
Nog een tip dan:

Niet werken met DIV's waar dat niet nodig is. Dus niet dit doen:

code:
1
2
3
4
5
<td>
  <div>
    text
  </div>
</td>


Hier kan je je DIV met gemak weglaten, voor hetzelfde resultaat.
Ik weet 100% zeker dat het met HTML goed opgelost kan worden, maar je code is erg vuil, dus tis moeilijk zoeken naar een goede oplossing. Anywayz, haal je DIV's even weg om te beginnen :)

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 26-05 13:03

Not Pingu

Dumbass ex machina

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Function knipLengte(instring)
  Dim i, output, letterteller

  For i = 1 To Len(instring)
    If Not Mid(instring, i, 1) = VbCrLf Then
      letterteller = letterteller + 1

      If letterteller => 50 Then      'Vervang 50 met de max. regellengte
        output = output & VbCrLf
      Else
        output = output & Mid(instring, i, 1)
      End If

    Else
      letterteller = 0
      output = output & Mid(instring, i ,1)
    End If
  Next

  knipLengte = output
End Function


zo moeilijk is het niet :P
Disclaimer: dit script zal best ontzettend rammelen maar ik zuig het hier ook maar effe ter plekke uit mijn duim.
Als je dit echt wilt laten werken moet je natuurlijk van een fixed-width font gebruikmaken.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
Lijkt me erg gaaf als het via HTML opgelost kan worden, maar ik ben er bang voor, dat er toch een dergelijke functie in moet komen als hierboven, al zou ik dat wel jammer vinden.

Maar goed, ik ga het eerst nog met HTML proberen, ik heb de divjes weggehaald op eentje na, dat is degen die ervoor zorgt dat het forum in het midden staat.

De code ziet er inderdaad slordig uit als je gewoon de source van de geparsde pagina kijkt, dit komt voornml. doordat er veel uit ASP code komt. Zie de bovenstaande rar file, die ik ook maar meteen heb geupdated.

Kan ik nog ergens meer op letten?

If it is broken, fix it. If it ain't broken, make it better!


  • stefanvverk
  • Registratie: Oktober 2002
  • Niet online
Ik kijk morgen even naar je source, en dan post ik een nieuwe HTML code, die werkt en clean is.
Alleen dus ff geduld tot morgen (nu geen zin meer en me nest in :))

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
stefanvverk schreef op 22 januari 2004 @ 22:57:
Ik kijk morgen even naar je source, en dan post ik een nieuwe HTML code, die werkt en clean is.
Alleen dus ff geduld tot morgen (nu geen zin meer en me nest in :))
Dat zou echt tof zijn, ik moet nu zo gaan werken, maar ik benieuwd en als het even kan wel zeggen waar de fout zat, want anders leer ik er nog niks van.

In ieder geval vast bedankt! O+ ;)

If it is broken, fix it. If it ain't broken, make it better!


Verwijderd

Waarom doe je dit uberhaupt in een tabel? 1 DIVje en een paar P'tjes per post en je bent klaar. Cross-browser etc. en standard-compliant.

  • stefanvverk
  • Registratie: Oktober 2002
  • Niet online
Ik heb even heel snel uit mn hoofd iets in elkaar gezet, table-based zeg maar. Kijk hier maar even, en kijk goed naar de bron, dan zie je hoe het zo schoon en simpel mogelijk kan, met exact hetzelfde resultaat.
Klik

Grtz en ik hoor het graag als het gelukt is !!!!

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 06:44

BlackBurn

One Ring To Rule Them All

Topicstarter
stefanvverk schreef op 23 januari 2004 @ 21:06:
Ik heb even heel snel uit mn hoofd iets in elkaar gezet, table-based zeg maar. Kijk hier maar even, en kijk goed naar de bron, dan zie je hoe het zo schoon en simpel mogelijk kan, met exact hetzelfde resultaat.
Klik

Grtz en ik hoor het graag als het gelukt is !!!!
Ik heb de code aangepast zoals bij jou, maar helaas word deze nog steeds breder, de code is hetzelfde als bij jouw, alleen springt het af en toe wat raar in door de ASP code, het ASP bestand zelf ziet er netjes uit, heb daarom ook even de rar geupdated, zodat je misschien nog even kunt kijken.

Ik vind het voor vandaag wel genoeg, als het me morgen niet lukt, gooi ik er een splitfunctie in op lange woorden/zinnen.

If it is broken, fix it. If it ain't broken, make it better!


Verwijderd

hier staan misschien nuttige tips

http://robm.fastmail.fm/web/table_autosize-old.html
http://robm.fastmail.fm/web/table_autosize.html
http://robm.fastmail.fm/web/testcsswidth.html

[ Voor 17% gewijzigd door Verwijderd op 23-01-2004 22:16 ]


  • stefanvverk
  • Registratie: Oktober 2002
  • Niet online
Ik gebruik altijd CGI / Perl, en heb dan zulke situaties niet. Het script print dan gewoon plain HTML, en iedere browser vangt dat goed op. Hoe dat met ASP zit; geen idee.. sorry....
Jammer dat t niet leuk zo... echt rot....

  • pim
  • Registratie: Juli 2001
  • Laatst online: 22-05 23:05

pim

Pagina: 1