[php] Tekst verdelen over twee kolommen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Is het mogelijk een stuk tekst uit een database te halen en die automatisch te verdelen over twee kolommen van een tabel?
Het grafische ontwerp van de website vraagt om twee kolommen, en ik heb geen zin om een extra kolom in de db aan te maken, alleen voor die extra HTML-kolom.

Acties:
  • 0 Henk 'm!

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 08-09 11:55
met welke taal?
wat heb je zelf al geprobeerd?

antwoord op je vraag:
ja
extra kolom is niet nodig...

Everyday's an endless stream, of cigarettes and magazines...


Acties:
  • 0 Henk 'm!

Verwijderd

Tja, welke taal inderdaad. Je kan alle tekens / woorden tellen en die vervolgens verdelen bijvoorbeeld.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP/MySQL.

Ik heb nog niks "geprobeerd", ik zit nog in de analyse-fase. Ik kon me niet bedenken hoe het opgelost zou worden, behalve dan misschien het opdelen van de tekst na een bepaald aantal woorden en de beide delen in de twee kolommen te zetten.
Maar wellicht is er een andere mogelijkheid?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah, ivy dacht hetzelfde...

Acties:
  • 0 Henk 'm!

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 08-09 11:55
tja
ik zou dus (op meta niveau)
- de lengte van de tekst inlezen
- delen door 2
- even kijken of je geen halve woorden overhoudt
- vervolgens de tekst wegschrijven (dl 1 = 0 to (length / 2), dl2 = (length / 2) to end)

ongeveer...
:)

Everyday's an endless stream, of cigarettes and magazines...


Acties:
  • 0 Henk 'm!

  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 27-08 11:32
Watvoor soort output krijg je uit de database. Wil je die output net als bijvoorbeeld in een Word-document eerst in kolom 1 hebben en kolom 2 opvullen met de rest?
of komen er per record 2 delen uit die je gescheiden wilt laten zien?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee, het is inderdaad net als met een Word-document: eerst kolom 1 opvullen en dan de rest in kolom 2. Maar ik denk dat ik er met wat offsetjes en strposjes wel uitkom.
Thanks!

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
Bedoel je zoiets?

kolom 1
deze tekst
kolom 2
loopt door

(tekst uit database: 'deze tekst loopt door')

of:

kolom 1
dit is deel 1 van de tekst. Dit kunnen heel wat regels zijn en die kunnen weer bestaan uit heel wat zinnen.. het is maar om een idee te krijgen...
kolom 2
En een tweede deel dat verdergaat na deel 1.

(tekst uit database: 'dit is deel 1 van de tekst. Dit kunnen heel wat regels zijn en die kunnen weer bestaan uit heel wat zinnen.. het is maar om een idee te krijgen...En een tweede deel dat verdergaat na deel 1.')

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, het tweede voorbeeld. Maar beide kolommen moeten even breed zijn (kol. 1 wordt dus langer dan 2)

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
ja ik wist even niet hoe ik die 50% op GoT moest instellen :)

maar als je dan 50% van de tekst in kolom 1 wil, en 50% in kolom 2 (qua tekst) dan zou je gewoon het midden van de tekst moeten zoeken en dan kijken waar de punt het dichtst bij is (voor of achter de 50%). Dan neem je dat stuk. (persoonlijk denk ik dat het mooier is als links meer tekst staat, maar dat moet je zelf weten).

Acties:
  • 0 Henk 'm!

Verwijderd

Lekker zinnetjes tellen dus, en woorden. En daar mee gaan spelen..

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 15 May 2003 @ 13:07:
Lekker zinnetjes tellen dus, en woorden. En daar mee gaan spelen..
Daarmee kom je er nog niet helemaal. Als namelijk in de eerste 50% heel veel enters (\n) zitten, kom je veel lager uit dan bij de laatste 50%. Als je het nog iets nauwkeuriger wil doen moet je de hele lap tekst in een string zetten en vervolgens exploden op \n. dan heb je het aantal zinnen. Die doorloop je allemaal en maak vervolgens bij iedere zin een schatting van hoeveel regels dat in je kolom in beslag neemt (adhv het aantal karakters). Op die manier kun je dan ook uitrekenen hoeveel zinnen er in de eerste en tweede kolom komen.
Is nog niet perfect, maar allicht wat dichter in de buurt

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Ik vindt dat het maken van kolommen eigenlijk opgenomen had moeten worden in de HTML/CSS standaard (of dat browsers dan tenminste té brede tekst automatisch in kolommen zouden renderen). Zonder kolommen is tekst lezen over de gehele breedte van het scherm niet te doen. :(

Maar goed; dat lost je probleem niet op. Ik denk dat party42's suggestie erg bruikbaar is, behalve dat als je eerst 1 kolom wilt opvullen, je niet halverwege maar op een vast punt af wilt breken.

Acties:
  • 0 Henk 'm!

Verwijderd

probleem zal ook nog wel zijn dat in de praktijk niet elke kolom evenveel karakters heeft. een kolom met veel korte worden kan efficienter gevuld worden dan een met lange woorden. als je weet hoeveel karakters er ongeveer op een regel gaan, zou je van te voren kunnen bepalen hoeveel regels je ongeveer krijgt. dat lijkt mij een betere maatstaf...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor alle tips!

Hier is mijn gebruikte procedure:

Check de lengte van de tekst. Als deze kleiner is dan 850, zet hem dan in zijn geheel in de eerste kolom. Als hij groter is dan 1700, deel hem dan netjes in tweeën (50/50, zie hieronder) en plaats de tekst in beide kolommen.

Als hij groter is dan 850 en kleiner dan 1700 (2*850), zoek dan binnen 100 tekens naar achtereenvolgens '<br>', '<span>' (bijv. subkopjes), punten en komma's.

Breek de tekst op dat punt in tweeën.

Haal de eventuele <br>'s aan het begin van het tweede deel van de tekst weg (anders begint de tekst in de tweede kolom te laag).

Zet de eerste helft in de eerste, en de tweede helft in de tweede kolom, en hoplakee!

[ Voor 23% gewijzigd door Verwijderd op 15-05-2003 17:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
(hoe verwijder je een bericht?)

[ Voor 93% gewijzigd door Verwijderd op 15-05-2003 17:40 ]

Pagina: 1