NieuwsArchief
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;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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";
?>
// 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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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);
?>
// 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?
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.
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.
Uit mijn hoofd:
Code (php)
1
<td nowrap><div class="style1"><a href="link_naar_pagina.php?id='.$line['artikel_id'].'">'.$line['Titel'].'</a></div></td>
Gewijzigd op 22/01/2012 11:54:18 door Obelix Idefix
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.
Mijn bedoeling was dat ik op http://mttv72.nl/index.php?pid=nieuws artikel 10 (in dit voorbeeld) gepresenteerd krijg.
Hoe los ik dat nu op?
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.
Gewijzigd op 22/01/2012 13:12:10 door Jurgen B
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 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.
De code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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);
?>
$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?
En waar moet $NieuwsNummer vandaan komen?
echo '<form><select name="$NieuwsNummer">'; //begin standaard het formulier
Uit jou vraag moet ik afleiden dat dat niet de manier is?
Resultaat zou dan moeten zijn: <form><select name="blabla">
Maar de $var is onbekend. En dat is in jouw geval ook niet echt belangrijk want je gebruikt bij de echo enkele quotes. Daardoor zal $var niet worden geparsed. Dus in jouw geval is het uiteindelijk resultaat: <form><select name="$var">
Gewijzigd op 23/01/2012 16:31:03 door - SanThe -
Het spijt me verschrikkelijk, maar of ik nu enkele of dubbele quotes gebruik, ik krijg nog steeds geen bruikbar $NieuwsNummer als uitslag van dit select statement.
Kun je ophalen na submit met $_POST['NieuwsNummer'].
N aeen hoop gepuzzel kwam ik erachter dat mijn script meerdere fouten had waardoor het niet wilde werken
Bedankt voor je geduld
Toine