Mijn Tabel Tbl_Nieuws:
Velddefinitie
. Datum: timestamp NOT NULL,
. Auteur: varchar(20) NOT NULL,
. Titel: varchar(50) NOT NULL,
. Verhaal: text,
. Categorie: varchar(10) default 'Senioren'

Het idee:
Ik wil een lijst met nieuwstitels presenteren waaruit men kan kiezen welk item men wil zien.
De lijst wil ik uit mijn tabel genereren. Met een code zoals;
<?php
// Performing SQL Query
$query= 'SELECT Titel FROM Tbl_Nieuws WHERE Categorie=\'Senioren\' ORDER BY Datum ASC'.' ';
$result=mysql_query($query) or die('Query failed: ' . mysql_error());

// Printing results in HTML
echo '<table width="100%" border="1">';
$line = mysql_fetch_array($result, MYSQL_ASSOC);
foreach (array_keys($line) as $col_value)
do {
echo '<tr><td nowrap><div class="style1">'.$line['Titel'].'</div></td>';
echo "\t</tr>\n";
} // do
while ($line = mysql_fetch_array($result, MYSQL_ASSOC));
echo "</table>\n";
?>

Nu wil ik het datumveld van de het gekozen item als selectie overhouden zodat ik deze kan gebruiken in het presenteren van het nieuwsartikel.

<?php
// Performing SQL Query
$query= 'SELECT Titel, Verhaal FROM Tbl_Nieuws WHERE GekozenDatum=Datum';
$result=mysql_query($query) or die('Query failed: ' . mysql_error());

// Printing results in HTML
$line = mysql_fetch_array($result, MYSQL_ASSOC);
foreach (array_keys($line) as $col_value)
do {
echo '<h1>'.$line['Titel'].'</h1>';
echo $line['Verhaal'];
} // do
while ($line = mysql_fetch_array($result, MYSQL_ASSOC));

// Free resultset
mysql_free_result($result);

// Closing connection
mysql_close($link);
?>

Mijn bedoeling is om in de linkerkolom het verhaal te presenteren terwijl er in de rechterkolom het nieuwsarchief staat.

Kunnen jullie me helpen?
Begrijp je vraag niet helemaal.

Waar maak je de link aan naar een artikel? Zie nergens a href staan.

Je wilt de datum gebruiken om je artikel te presenteren, maar wat als er 2 artikelen zijn met dezelfde datum? Is het niet logischer om in je tabel een kolom id op te nemen en dat te koppelen aan een artikel?

Als er 1 artikel gekozen wordt, waarom dan do/while lus?

Andere opmerking: script op 1 manier. Zie in je 1e code de ene keer echo " staan en de andere keer echo ' . Niet consequent en de kans dat je daar een keer de mist mee ingaat.
Verder uitleg van mijn verhaal:

Het maken van die link is het probleem, ik wil nl niet van de pagina gaan maar op dezelfde pagina blijven en daarvervolgens het artikel presenteren.

Ik kan natuurlijk een id sleutelveld gebruiken ipv datum.

De do/while lus kan anders net zoals het scripten met ' en " dat is inderdaad best lastig om consequent te blijven.
Wat is er lastig om een a href op te nemen?

Uit mijn hoofd:

<td nowrap><div class="style1"><a href="link_naar_pagina.php?id='.$line['artikel_id'].'">'.$line['Titel'].'</a></div></td>
De pagina (index) die nu met de pid kijkt of de pagina een string is en voorkomt in een bekend lijstje met pagina's (of wordt opgezocht in de database) en deze dan laat zien kan aangepast worden. In geval dat pid een string is kan de lijst met pagina's afgewerkt/geladen worden. In geval van een ctype_digit kan gekeken worden of deze pagina in de database voorkomt en, zoja, geladen worden.

Een andere en duidelijkere oplossing is een tweede parameter meegeven bij pid=nieuws&artikel=[id naar artikel]. Indien de pagina bestaat uit nieuws kan gekeken worden of er ook een artikel id is meegegeven en kan deze worden weergegeven na controle of deze ook echt bestaat.

Uiteraard is het misschien voor de overzichtelijkheid/structuur mooier om een pagina nieuws.php te maken die dit stuk afhandelt, maar voor het idee maakt het niks uit.
Ik snap het idee (denk ik) alleen hoe voer je dat nu uit?
Toine van der Ven op 22/01/2012 12:47:19


Ik vertrek vanaf http://mttv72.nl/index.php?pid=nieuws

Daar kies ik in de rechterkolom een ander nieuws bericht en krijg nu een lege pagina http://mttv72.nl/index.php?pid=10 bijvoorbeeld.

Ik zou in ieder geval niet pid gebruiken voor een categorie (nieuws) en een nummer (10); dat gaat (in de toekomst) zeker verwarring geven.

Begin de pagina met php en controleer of er een artikel-id in de url staat. Zo ja; voer een query uit en zoek dat artikel er bij en toon het. Zo niet, dan geen query en een 'standaard'tekst dat ze uit nieuwsitems kunnen kiezen.

Aangezien ik het bovenstaande verhaal niet werkend krijg, wil ik het over een andere boeg gooien en wel d.m.v een keuze menu.

De code:
<?php
$query= 'SELECT NieuwsID, Titel FROM Tbl_Nieuws WHERE Categorie=\'Senioren\' ORDER BY Datum DESC'.' ';
$result=mysql_query($query) or die('Query failed: ' . mysql_error());

// Vul Nieuwsarchief
echo '<form><select name="$NieuwsNummer">'; //begin standaard het formulier
$line = mysql_fetch_array($result, MYSQL_ASSOC);
foreach (array_keys($line) as $col_value)
do {
echo '<option value="'.$line['NieuwsID'].'" >'.$line['Titel'].'</option>';
}
while ($line = mysql_fetch_array($result, MYSQL_ASSOC));
echo '</select>';
echo '</form>';

$NieuwsNummer = intval($NieuwsNummer);
echo '$NieuwsNummer = '.$NieuwsNummer;

// Free resultset
mysql_free_result($result);

// Closing connection
mysql_close($link);
?>

Zoals je kunt zien wil ik het $NieuwsNummer overhouden, tot mijn verbazing blijft deze variabele leeg.

Weet iemand de oplossing?
$NieuwsNummer = intval($NieuwsNummer);

En waar moet $NieuwsNummer vandaan komen?
In regel 6 denk ik deze variabele te definieren
echo '<form><select name="$NieuwsNummer">'; //begin standaard het formulier

Uit jou vraag moet ik afleiden dat dat niet de manier is?

Reageren