Wie kan mij helpen, ben nog beginneling met PHP. Ik wil graag dat een bericht ingekort wordt tot een bepaald aantal tekens, en dan een lees meer >> naar het hele bericht.
Tot nu toe heb ik deze zin:

$rij = nl2br(substr($rij, 0, 800));
echo "<a href='leesNieuws.php?id= ".$rij[id]."' class='leesnieuws'> lees&nbsp;&raquo;</a>";

hij laat het bericht zien en verwijsd ook naar het juiste bronbericht, maar ik wil niet het hele bericht, maar alleen de eerste regels... wie kan me helpen...
hanneke schreef op 05.07.2006 20:03
Die doet het iniedergeval, nu nog toepassen in mijn scriptje


Je zou er een functie van kunnen maken:
<?php
function korte_tekst ($txt, $max_tekens) {
$kort = substr ($txt, 0, $max_tekens);
$laatste_spatie = strrpos ($kort, ' ');
return (substr ($kort, 0, $laatste_spatie));
}
?>
In jouw script zou je dan kunnen doen:
<?php
$kort_bericht = korte_tekst ($bericht, 800);
?>
en het resultaat op je pagina echoën met een "lees meer" link er achter.
Dat is ook interresant, dat ga ik ook nog proberen! Ben allang blij dat hij het doet, er zit alleen nog een probleempje, hij laat alle berichten in een array zien en dan helemaal onderaan >>lees meer, terwijl dit onder elk berichtje zou moeten komen te staan...
Wel geweldig dat jullie me zo helpen, ik begin net met PHP vind het heel leuk, maar frustrerend als je een dag op jezelfde code aan het staren bent...
Hoe ziet de code er uit waarmee je je berichten uit de database haalt?
<?php
$sql=mysql_query("hier is je query");
while($rij=mysql_fetch_array($sql)){
$bericht = nl2br(substr($rij['bericht'], 0, 800));
echo $bericht;
echo "<a href='leesNieuws.php?id= ".$rij[id]."' class='leesnieuws'> lees&nbsp;&raquo;</a>";
}
?>
echo "<a href='leesNieuws.php?id= ".$rij[id]."' class='leesnieuws'> lees&nbsp;&raquo;</a><hr>";

zo, dus:

bericht
>>lees meer
<hr>
ALTIJD aan foutafhandeling doen in queries:
<?php
$sql = "
SELECT id, titel, tekst
FROM berichten
ORDER BY datum DESC
";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_errno () . ': ' . mysql_error ());
}
else {
while ($row = mysql_fetch_assoc ($res)) {
$korte_tekst = korte_tekst ($row['tekst'], 800); // gebruik hier de functie uit mijn vorige post
echo '<p>' . $row['titel'] . '</p>';
echo '<p>' . $korte_tekst . '</p>';
echo '<p><a href="#">Lees meer...</a></p>';
}
}
?>
@Jan: Waarom stop je het eerst in een $var? Dat is toch niet nodig.
<?php
$sql = "
SELECT id, titel, tekst
FROM berichten
ORDER BY datum DESC
";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_errno () . ': ' . mysql_error ());
}
else {
while ($row = mysql_fetch_assoc ($res)) {
echo '<p>' . $row['titel'] . '</p>';
echo '<p>' . korte_tekst($row['tekst'], 800) . '</p>';
echo '<p><a href="#">Lees meer...</a></p>';
}
}
?>
Je hebt gelijk. Goeie correctie.
maar in deze code wordt niet op id geselecteerd

Reageren