1e 10woorden tekst uit database

Status
Niet open voor verdere reacties.

turbojohn

Gebruiker
Lid geworden
26 jun 2007
Berichten
262
Hoi,

Op mijn site heb ik nu een nieuwsfunctie toegevoegd.
Ik kan nieuws uploaden vanaf mijn CP.
Nu wil ik op de homepage onderaan de eerste 3 berichten incl datum, met zegmaar de 1e 10 woorden uit het bericht, gevolgd door ... klik hier voor meer nieuws..

Dus je krijgt dit als resultaat:
HTML:
1.</font></b> 22.04.2007 - <span>Eerste 10regels</span> <a href="#">Klik voor meer nieuws...

Hoe kan ik dit voor elkaar krijgen? Ik heb het volgende:
PHP:
	<?php
									require('./include/Database.php');

									$db = new Database();
									$db->connect();
									
									$news = $db->getRows('SELECT * FROM nieuws ORDER BY datum DESC LIMIT 0,3');
									$newsbericht = $db->getRows('SELECT * FROM nieuws WHERE id='.$new['id'].'');
									$result = mysql_query($nieuwsbericht);
									$rij = mysql_fetch_object($result);
									$bericht = $rij->bericht;
									$datum = $rij->datum;
									if ($news)
									{
										foreach ($news as $new)
										{
											echo '<a href= "nieuws.php?id='.$new['id'].'"></a>[COLOR="Red"]hier datum + eerste 10 woorden uit bericht[/COLOR]<br>';
										}
									} else
									{
										echo 'Er zijn nog geen nieuwsbericht's aanwezig';
									}
									?>

Wie kan mij hiermee vooruit helpen?:thumb:
 
Je kunt beter ipv 10 woorden gewoon een X aantal tekens nemen, dan is de lengte van de tekst namelijk een stuk consistenter.
Om X tekens uit een tekst te knippen, kun je dit doen:

PHP:
$aantal_tekens = 50;
$stuk = substr( $hele_tekst, 0, $aantal_tekens );

Als je perse een aantal woorden wilt, kun je het snelst en makkelijkst de tekst 'exploden' zodat hij alleen uit woorden bestaat, en vervolgens de eerste 10 daarvan weer aan elkaar plakken:
PHP:
$woorden = explode ( ' ', $hele_tekst );
$aantal_woorden = 10;
$deel_van_woorden = array_slice ( $woorden, 0, $aantal_woorden );
$stuk_tekst = implode ( ' ', $deel_van_woorden );

Succes :)
 
Hoi,

Bedankt frats, ik had het inmiddels op een andere manier bedacht, namelijk alleen de titel laten zien.
Dit met het volgende script:
PHP:
<?php 
									require('./include/Database.php');

									$db = new Database();
									$db->connect();
									
									$news = $db->getRows('SELECT id,titel,datum** FROM nieuws ORDER BY datum DESC LIMIT 0,3');
									$res = mysql_query($news);
									
									if (mysql_num_rows($res) >= 1)
    									{
							
							
									while ($row = mysql_fetch_array($res))
     							   {
            //-- maakt linkje naar nieuws.php?id=<nummer>
        
            //-- pak alleen de eerste 10 karakters van $row['datum']
            //-- zodat alleen de datum en niet ook de tijd wordt
            //-- getoond.
          $row['datum'] = substr($row['datum'], 0, 10);
          
       echo $row['datum'] . ' <a href="nieuws.php?id=' . $row['id'] .'">' . htmlentities($row['titel']) . '</a><br>';



        }
    }
    //-- laat dit dus zien als er geen nieuwsberichten
    //-- zijn.
    else
    {
        echo "Er zijn geen nieuwsberichten.";
    }
?>

(de ** moet er 1 zijn, maar bij het selectere/plakken gaat er iets fout, in mijn script is het gewoon 1 *)
Maar ik doe iets fout, want de rest van mijn pagina wordt niet geladen en er komt gelijk 'Er zijn geen nieuwsberichten'

Ik heb een stuk verder in de pagina een soortgelijk script, wat de 3 laatste foto's ophaalt (wat wel werkt), maar wel apart met <?php ?>
Kan het zijn dat dát het probleem is, of zit er in het bovenste script iets fout?
 
Laatst bewerkt:
Eh, als je deze pagina rechtstreeks aanroept, komt er idd vrij weinig uit... er zit geen HTML in.

Als het een include is, zou het gewoon goed moeten gaan; er staan geen exit's oid in.

Hoe gebruik je dit stukje code?
 
Staat in html, zie onder:
(Wat zou er fout kunnen zijn? Het onderste script wordt niet aangeroepen).
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>About me</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<link href="style.css" rel="stylesheet" type="text/css">


</head>
<body>

<table  class="bg" align="center">
	<tr>
		<td width="766" height="160">
			<br style="line-height:115px">
			<img alt="" src="images/spacer.gif" width="29" height="1"><img src="images/k1.gif" alt="" border="0" width="114" height="45"><img src="images/k2.gif" alt="" border="0" width="107" height="45"><img src="images/k3.gif" alt="" border="0" width="122" height="45"><img src="images/k4.gif" alt="" border="0" width="105" height="45"><a href="index.html"><img src="images/logo.gif" alt="" border="0" width="260" height="45"></a><br>
		</td>
	</tr>
	<tr>
		<td width="766" height="15" class="menu" style="background-image:url('images/1_bg.gif')">
			<table>
				<tr>
					<td width="29" height="15"></td>
					<td width="113" height="15" align="center" style="background:url('images/bg1.gif') no-repeat right top; "><strong>
                    <a href="index-1.php">about me</a></strong></td>
					<td width="110" height="15" align="center" style="background:url('images/bg1.gif') no-repeat right top; ">
                    <a href="portfolio.php">portfolio</a></td>
					<td width="118" height="15" align="center" style="background:url('images/bg1.gif') no-repeat right top; ">
                    <a href="index-4.html">events</a></td>
					<td width="109" height="15" align="center" style="background:url('images/bg1.gif') no-repeat right top; "><a href="index-5.html">
                    contact</a></td>
					<td width="287" height="15"></td>
				</tr>
			</table>
		</td>
	</tr>
	<tr>
	  <td width="766" height="473">
	  	<table>
			<tr>
				<td width="29" height="473" style="background:#1E272D url('images/left.gif') no-repeat top; "></td>
				<td width="1" height="473" style="background-image:url('images/bg_1.gif')"></td>
				<td width="705" height="473" bgcolor="#13181C">
					<table>
						<tr>
							<td width="30" height="473"></td>
							<td width="433" height="473">
								<table>
									<tr>
										<td width="433" height="64"><br style="line-height:29px">
                                        <img src="images/1_w1.gif" alt="" border="0" width="167" height="26"><br></td>
									</tr>
									<tr>
										<td width="433" height="141">
											<div style="overflow:auto; width:425; height:344 ; margin-left:0px; margin-right:0; margin-top:0; margin-bottom:0">
												<table height="201">
													<tr>
														<td width="425" height="201">
															<p style="margin-top: 0; margin-bottom: 0" align="right"><b><font color="#98CA00">
														<SCRIPT language=javascript>
															var x=new Date;
															var dagn=x.getDay();
															if (dagn==1) dagn="Maandag";
															if (dagn==2) dagn="Dinsdag";
															if (dagn==3) dagn="Woensdag";
															if (dagn==4) dagn="Donderdag";
															if (dagn==5) dagn="Vrijdag";
															if (dagn==6) dagn="Zaterdag";
															if (dagn==0) dagn="Zondag";
															var datum=dagn+", ";
															document.write(datum);
															var z = x.getDate()
															document.write(z)
															var maand=x.getMonth();
															if (maand==0) maand="januari";
															if (maand==1) maand="februari";
															if (maand==2) maand="maart";
															if (maand==3) maand="april";
															if (maand==4) maand="mei";
															if (maand==5) maand="juni";
															if (maand==6) maand="juli";
															if (maand==7) maand="augustus";
															if (maand==8) maand="september";
															if (maand==9) maand="october";
															if (maand==10) maand="november";
															if (maand==11) maand="december";
															var datum="  "+maand;
															var jaar = x.getYear()
															document.write(datum+" "+jaar+".   ");
														    </SCRIPT></font></b>

															</p>
                                                            <p style="margin-top: 0; margin-bottom: 0">
                                                            <b>Welkom</b> op mijn website</p>
                                                            <p style="margin-top: 0; margin-bottom: 0">
                                                            </p>
                                                            </td>
													</tr>
													<tr>
														<td width="425" height="16">
															</td>
													</tr>
												</table>
											</div>
										</td>
									</tr>
									
										
									<tr>
										<td width="433" height="102" class="set">
											<br style="line-height:30px">
                                            <img src="images/1_w2.gif" alt="" border="0" width="145" height="22"><br>
											<div style="margin:12 0 0 11px ">
											
											
											<?php 
									require('./include/Database.php');

									$db = new Database();
									$db->connect();
									
									$news = $db->getRows('SELECT id,titel,datum** FROM nieuws ORDER BY datum DESC LIMIT 0,3');
									$res = mysql_query($news);
									
									if (mysql_num_rows($res) >= 1)
    									{
							
							
									while ($row = mysql_fetch_array($res))
     							   {
            //-- maakt linkje naar nieuws.php?id=<nummer>
        
            //-- pak alleen de eerste 10 karakters van $row['datum']
            //-- zodat alleen de datum en niet ook de tijd wordt
            //-- getoond.
          $row['datum'] = substr($row['datum'], 0, 10);
          
       echo $row['datum'] . ' <a href="nieuws.php?id=' . $row['id'] .'">' . htmlentities($row['titel']) . '</a><br>';



        }
    }
    //-- laat dit dus zien als er geen nieuwsberichten
    //-- zijn.
    else
    {
        echo "Er zijn geen nieuwsberichten.";
    }
?>
									
									
											<br>	<em><font color="#98CA00"><b>3</b></font>. 20.04.2007 - <span>L</span><font color="#98CA00">ast
                                                news...</font> <a href="#">more</a></em><br>
										  </div>
										</td>
									</tr>
									
									<tr>
										<td width="433" height="1" style="background-image:url('images/1_line.gif')"></td>
									</tr>
									<tr>
										<td width="433" height="46" class="set">
											<div style="margin:7 0 0 11px ">
												<em><b><font color="#98CA00">2.</font></b> 21.04.2007 - <span>
                                                Last neuws....</span> <a href="#">more</a></em><br>
										  </div>
										</td>
									</tr>
									<tr>
										<td width="433" height="1" style="background-image:url('images/1_line.gif')"></td>
									</tr>
									<tr>
										<td width="433" height="58" class="set">
											<div style="margin:7 0 0 11px ">
												<em><b><font color="#98CA00">1.</font></b> 22.04.2007 - <span>
                                                Last news...</span> <a href="#">more</a></em><br>
										  </div>
										</td>
									</tr>
									
									<tr>
										<td width="433" height="1" style="background-image:url('images/1_line.gif')"></td>
									</tr>
									<tr>
										<td width="433" height="59">
											<br style="line-height:13px">
											<a href="#" class="more">Compleet overzicht...</a><br>
									  </td>
									</tr>
								</table>
							</td>
							<td width="25" height="473"></td>
							<td width="217" height="473">
								<p align="center">
								<br style="line-height:29px">
                                <img src="images/1_w3.gif" alt="" border="0" width="105" height="26"><br>
								Laatste serie fotoshoots:<br style="line-height:13px">
								<?php
									require('./include/Database.php');

									$db = new Database();
									$db->connect();

									$fotos = $db->getRows('SELECT * FROM foto ORDER BY datum DESC LIMIT 0,3');

									if ($fotos)
									{
										foreach ($fotos as $foto)
										{
											echo '<a href= "portfolio.php?id='.$foto['id'].'"><img src="fotos/thumbs/'.$foto['id'].'.jpg" style="margin-bottom: 4px;" alt="" border="0" width="150" height="150"></a><br>';
										}
									} else
									{
										echo 'Er zijn nog geen foto's aanwezig';
									}
								/*
								<a href="#">
                                <img src="images/1_p2.jpg" alt="" border="0" width="186" height="107"></a><br>
								<br style="line-height:12px">
								<a href="#">
                                <img src="images/1_p3.jpg" alt="" border="0" width="186" height="107"></a><br>
								<br style="line-height:13px">
								<a href="#">
                                <img src="images/1_p4.jpg" alt="" border="0" width="186" height="107"></a><br>
								<br style="line-height:13px">
								<img alt="" src="images/spacer.gif" width="113" height="1"><a href="#" class="more">Bekijk...</a><br>
								*/?>

							</td>
						</tr>
					</table>
				</td>
				<td width="1" height="473" style="background-image:url('images/bg_1.gif')"></td>
				<td width="30" height="473" style="background:#26323B url('images/right.gif') no-repeat top; "></td>
			</tr>
		</table>
	  </td>
	</tr>
	<tr>
		<td width="766" height="118" class="footer" style="background:url('images/1_bg1.gif') no-repeat top left; ">
			<a href="#">
            <img src="images/k5.gif" style="margin-left:29px" alt="" border="0" width="708" height="15"></a><br>
			<br style="line-height:54px">
			<img src="images/spacer.gif" width="89" height="1">

	  </td>
	</tr>
</table>

</body>
</html>
 
Laatst bewerkt:
Staat hier toevallig een Class definitie in?
PHP:
require('./include/Database.php');

Want je mag een Class maar 1x definieren; als je dezelfde pagina nog eens opent gaat het fout.

Zet trouwens ook de error_reporting aan, dan zie je dit soort dingen ;)
 
hoi,

Ja staan Classes in ja.
Hoe moet ik dit dan oplossen? Bovenaan gewoon <?php require... ?> zetten?
 
Voor een file met class definities altijd require_once gebruiken, zodat je zeker weet dat ie niet meer dan eens wordt meegenomen :)

En in dit geval kun je het idd gewoon 1x bovenaan zetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan