[MYSQL / PHP] Substring breekt te abrupt af

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
Beste mensen ik ben bezig met een site voor als ik op stage ga hier onder een linkje om te laten zien wat ik bedoel.



als je op mijn site kijkt zie je aan de rechter kant mijn laaste verhalen staan
deze stukjes tekst zijn een substring van een groter gedeelte tekst maar worden een beetje abrubt afgebroken als ik pech heb meestal midden in een woord :(

Deze stukjes genereer ik door middel van deze SQL query

SQL:
1
SELECT vID, titel, SUBSTRING(verhaal,1,164) AS verhaal FROM CURACAO_Verhalen ORDER BY vID desc LIMIT 4


Nu is mijn vraag is er een manier in SQL om ervoor te zorgen dat hij niet midden in een woord afbreekt maar bijv. aan het einde van een woord of een zin.
Ik los het het liefst met SQL op en niet met PHP omdat ik dan het hele verhaal moet ophalen en dan pas bewerken. En dat gaat denk ik stukken trager worden omdat het ontzettend grote lappen met tekst kunnen worden.


Eventuele andere op of aanmerkingen zijn ook van harte welkom.

[ Voor 4% gewijzigd door jvaneijk op 16-07-2006 20:59 ]

iRacing Profiel


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

Je moet deze query gewoon aanhouden, en dan in PHP de string gaan bewerken. Er is geen functie binnen MySQL die je string afkapt bij de laatste spatie van rechts, terwijl dat binnen PHP heel simpel is (en net zo snel). Natuurlijk moet je bij grote lappen tekst uit een database wel even opletten dat je niet meer dan nodig ophaalt, maar dit soort fine-tuning van strings (je haalt echt hooguit tien karakters te veel op) is juist weer efficienter in PHP.

MySQL is een rechttoe-rechtaan database van origine, die excelleert in het snel ophalen van veel gegevens uit een database met simpele SELECT queries. Ga je er meer logica tegenaan gooien, ben je dat voordeel kwijt.

Vergeet ook niet dat die string hoe dan ook ook in het geheugen wat PHP gebruikt terecht komt, want nadat je de mysql_fetch_array functie hebt gebruikt voor krijgt PHP de data in zijn geheugen. Laat gewoon een for-loopje lopen wat van 164 naar beneden telt (mits de string ook de volle 164 lang is) en kijk iedere keer of het teken wat op die plaats in de string staat een spatie is, en trek dan die string strak tot die lengte - 1 en zet er eventueel wat puntjes achter om aan te geven dat het afgekapt is.

[ Voor 28% gewijzigd door BikkelZ op 16-07-2006 21:09 ]

iOS developer


Acties:
  • 0 Henk 'm!

  • Upsal
  • Registratie: Mei 2005
  • Laatst online: 27-08-2024
Wat BikkelZ zegt.
Als alternatief kun je eens kijken naar een aantal string functies in PHP zoals wordwrap().

[ Voor 21% gewijzigd door Upsal op 16-07-2006 22:05 ]