Opvragen uit Database + splitsen

Status
Niet open voor verdere reacties.

BoukeWeening

Gebruiker
Lid geworden
3 apr 2007
Berichten
232
Hoi allemaal,

Is er een manier om een tekst uit een database te laden en deze dan automatisch laten inkorten tot een intro waarbij je op < meer... > klikt en dat je dan de rest leest?

Dus 1 lang verhaal in uit een database wordt opgehaald, maar alleen de intro wordt getoond tot je op < meer...> klikt... is dit mogelijk en wat is het script hiervoor??
 
Daar is geen standaard script voor.

Wat je wil is gebruik maken van de text-knip functie:
PHP:
$hoeveel_tekens = 20;
$korte_tekst = substr( $lange_tekst, 0, $hoeveel_tekens );

Om vanaf het begin de eerste 20 tekens te pakken.

Maar dan ben je er nog lang niet. Heb je ervaring met PHP?
 
Ik heb dit:

PHP:
<?php


				// Performing SQL query

				$query = 'SELECT * FROM `sn_m_news_articles` ORDER BY date DESC LIMIT 0, 2';
				$result = mysql_query($query) or die('Query failed: ' . mysql_error());

				// Printing results in HTML
			    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
				    ?>
				    <div class="text">
				      <h2><?= $line['title']; ?></h2>
                      <a href="nieuws/"><p><?= $line['content']; ?></p>
                      </a></div>
				  <?
				}
				?>

En nu pakt hij dus de hele content... en dat wil ik dus niet op de homepage... dus die moet hij afkorten...
 
PHP:
<?php
				// Performing SQL query

				$query = 'SELECT * FROM `sn_m_news_articles` ORDER BY date DESC LIMIT 0, 2';
				$result = mysql_query($query) or die('Query failed: ' . mysql_error());

				// Printing results in HTML
			    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
				    ?>
				    <div class="text">
				      <h2><?= $line['title']; ?></h2>
                      <a href="nieuws/"><p><?php echo substr($line['content'], 1, 20).'...'; ?></p>
                      </a></div>
				  <?php
				}
				?>
Iets in deze richting?
 
Ja, dit werkt perfect... een makkelijkere oplossing dan ik dacht :) Al haalt hij zoals jij het hebt ook de eerste letter van elk stukje weg, maar dat is op te lossen :D

Mag ik dan nog een vraag stellen? Nu wil ik graag dat als ze op die link klikken (dus de het afgekorte stukje van content), dat ze dan naar de nieuwspagina gaan en dat daar dan het nieuwsbericht wel volledig getoond wordt... Voor de duidelijkheid, ik heb nu dit:

PHP:
<?php
                // Performing SQL query
 
                $query = 'SELECT * FROM `sn_m_news_articles` ORDER BY date DESC LIMIT 0, 3';
                $result = mysql_query($query) or die('Query failed: ' . mysql_error());
 
                // Printing results in HTML
                while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    ?>
                    <div class="text">
                      <h2><?= $line['title']; ?></h2>
                      <a href="nieuws/"><p><?php echo substr($line['content'], 0, 80).'...'; ?></p>
                      </a></div>
                  <?php
                }
                ?>
 
Heeft de rij in de database een unieke id? Zo, ja kan je bijvoorbeeld het volgende doen:

PHP:
<?php
                // Performing SQL query
 
                $query = 'SELECT * FROM `sn_m_news_articles` ORDER BY date DESC LIMIT 0, 3';
                $result = mysql_query($query) or die('Query failed: ' . mysql_error());
 
                // Printing results in HTML
                while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    ?>
                    <div class="text">
                      <h2><?= $line['title']; ?></h2>
                      <a href="nieuws.php?id=$line['id']"><p><?php echo substr($line['content'], 0, 80).'...'; ?></p>
                      </a></div>
                  <?php
                }
                ?>

Vervolgens in nieuws.php iets wat op het volgende lijkt:
PHP:
 <?php$query = "SELECT * FROM `sn_m_news_articles` WHERE id ='".$_GET['id']."'"; 
$result = mysql_query($query);
$array = mysql_fetch_array($result);
?>
echo $array['content']

Als je geen id kolom hebt moet je deze dus even maken, auto increment en primary key, wellicht even googlen.
 
Laatst bewerkt:
Oke, dit werkt gedeeltelijk! Natuurlijk heeft mijn nieuwsbericht een uniek ID:D Dus dat werkt! Alleen laat hij nu altijd Het eerste bericht zien i.p.v. het bericht waar ik o pklik...

Voor de duidelijkheid, ik heb nu dit:
PHP:
<?php
                // Performing SQL query
 
                $query = 'SELECT * FROM `sn_m_news_articles` ORDER BY date DESC LIMIT 0, 3';
                $result = mysql_query($query) or die('Query failed: ' . mysql_error());
 
                // Printing results in HTML
                while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    ?>
                    <div class="text">
                      <h2><?= $line['title']; ?></h2>
                      <a href="nieuws/index.php?id=$line['id']"><p><?php echo substr($line['content'], 0, 80).'...'; ?></p>
                      </a></div>
                  <?php
                }
                ?>

En in nieuws/index.php:

PHP:
<?php $query = "SELECT * FROM `sn_m_news_articles` WHERE id ='".$_GET['id']."'"; 
$result = mysql_query($query);
$array = mysql_fetch_array($result);
?>
<? echo $array['content']?>

En hij laat dus de hele tijd het bericht met ID 1 zien...

UPDATE: Ik heb foute info gegeven.. hij laat helemaal niks zien... had het bestand nog niet geupload :s... maar nu wel en hij laat nu helemaal niks zien...
 
Laatst bewerkt:
PHP:
<?php
                // Performing SQL query
 
                $query = 'SELECT * FROM `sn_m_news_articles` ORDER BY date DESC LIMIT 0, 3';
                $result = mysql_query($query) or die('Query failed: ' . mysql_error());
 
                // Printing results in HTML
                while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
                    ?>
                    <div class="text">
                      <h2><?= $line['title']; ?></h2>
                      <a href='nieuws/index.php?id=<?php echo $line['id']?>'><p><?php echo substr($line['content'], 0, 80).'...'; ?></p>
                      </a></div>
                  <?php
                }
                ?>
 
Mooi :), begrijp je ook hoe het werkt?
Dan kan je volgende keer gewoon zelf doen...
 
Ja, ik weet ook hoe het werkt alleen het bedenken van codes lukt nog niet helemaal.. Combineren en snappen lukt al!!! Nog even en ik ben een expert :D
 
Mooi :). Ik heb nog wel een vraagje, kan je mij misschien een link geven waar de <?= en ?> haakjes voor dienen. Nou ja, volgens mij begrijp ik het wel, maar kan je misschien wat documentatie leveren waar het wordt uitgelegd? Of het misschien zelf uitleggen?

O, ja; druk even op de "vraag opgelost" onderaan de pagina.
 
<? en ?> zijn PHP-shorttags. Gewoon vervangingen voor <?php en ?> . Ik gebruik ze nooit, omdat ze niet op elke server aanstaan.

<?= is een vervanging voor <? echo en dus eigenlijk <?php echo . Maar ook <?= werkt niet al shorttags uitstaan.
 
<? i.p.v. <?php wist ik wel, maar gebruik van shorttags is dus niet echt verstandig?
 
Ik vind van niet, aangezien het zomaar zou kunnen dat je script op een andere server niet werkt.

Maarja, het scheelt wel 3 letters typen, elke keer dat je een PHP blok opent :rolleyes:
 
Nou ja, voor <?php shorttag gebruikte ik sowieso al niet, maar <?= i.p.v. echo is wel handig... Maar ga ik dus niet gebruiken, want beetje zonde als het op andere servers niet werkt.

P.s sorry voor het lenen van dit topic voor mijn vraag.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan