Nieuws op aparte pagina
Ik heb een simpel nieuwssysteem met een simpel 'form' om het toe te voegen op een beveiligde pagina gemaakt.
Nu zou ik op mijn display-pagina, waar een overzich te zien is van het nieuws graag willen dat je door op de titel te klikken naar een aparte pagina van dat artikel komt.
Dus bijvoorbeeld: www.ninovdbosch.com/news.php?artikel=4
Als het artikel waar je op klikt de ID 4 betreft dan.
Ik heb zelf al wat geprobeerd, maar dat lijkt nergens op; er wordt niks weergegeven na het klikken op de titel:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
if(isset($_GET['artikel'])) {
switch ($_GET['artikel']) {
case $row['id']:
$mysql_user = "ninovdbo_user";
$mysql_pass = "***";
$mysql_host = "localhost";
$mysql_db = "ninovdbo_db";
if (!@mysql_select_db($mysql_db, @mysql_connect($mysql_host, $mysql_user, $mysql_pass))){
echo "<p><strong>Verbinding met de database maken is mislukt. Probeert u het alstublieft opnieuw.</strong></p>";
exit();
}
$mysql = "SELECT naam,email,onderwerp,bericht,DATE_FORMAT(datum, '%d-%m-%Y') as datum, id FROM nieuws ORDER BY datum DESC";
$res = mysql_query($mysql);
while ($row = mysql_fetch_array($res)) {
$artikel = "<h4>" . $row['onderwerp'] . "</h4>
Geschreven door " . $row['naam'] . " op " . $row['datum'] . "
<p>" . $row['bericht'] . "</p>";
echo $artikel;
break;
}
}
} else {
$mysql_user = "ninovdbo_user";
$mysql_pass = "***";
$mysql_host = "localhost";
$mysql_db = "ninovdbo_db";
if (!@mysql_select_db($mysql_db, @mysql_connect($mysql_host, $mysql_user, $mysql_pass))){
echo "<p><strong>Verbinding met de database maken is mislukt. Probeert u het alstublieft opnieuw.</strong></p>";
exit();
}
$mysql = "SELECT naam,email,onderwerp,bericht,DATE_FORMAT(datum, '%d-%m-%Y') as datum, id FROM nieuws ORDER BY datum DESC";
$res = mysql_query($mysql);
while ($row = mysql_fetch_array($res)) {
?>
<div class="newscontent">
<strong><a href="?artikel=<? echo $row['id'] ?>"><? echo $row['onderwerp'] ?></a></strong>
<div class="gbcaption"><p>Door <? echo $row['naam'] ?> op <? echo $row['datum'] ?></p></div>
<p><? echo nl2br($row['bericht']) ?></p>
<div class="newscaption"><? echo $row['naam'] ?> • <a href="#" class="gblink">Omhoog</a></div>
</div>
<?php
}
}
?>
if(isset($_GET['artikel'])) {
switch ($_GET['artikel']) {
case $row['id']:
$mysql_user = "ninovdbo_user";
$mysql_pass = "***";
$mysql_host = "localhost";
$mysql_db = "ninovdbo_db";
if (!@mysql_select_db($mysql_db, @mysql_connect($mysql_host, $mysql_user, $mysql_pass))){
echo "<p><strong>Verbinding met de database maken is mislukt. Probeert u het alstublieft opnieuw.</strong></p>";
exit();
}
$mysql = "SELECT naam,email,onderwerp,bericht,DATE_FORMAT(datum, '%d-%m-%Y') as datum, id FROM nieuws ORDER BY datum DESC";
$res = mysql_query($mysql);
while ($row = mysql_fetch_array($res)) {
$artikel = "<h4>" . $row['onderwerp'] . "</h4>
Geschreven door " . $row['naam'] . " op " . $row['datum'] . "
<p>" . $row['bericht'] . "</p>";
echo $artikel;
break;
}
}
} else {
$mysql_user = "ninovdbo_user";
$mysql_pass = "***";
$mysql_host = "localhost";
$mysql_db = "ninovdbo_db";
if (!@mysql_select_db($mysql_db, @mysql_connect($mysql_host, $mysql_user, $mysql_pass))){
echo "<p><strong>Verbinding met de database maken is mislukt. Probeert u het alstublieft opnieuw.</strong></p>";
exit();
}
$mysql = "SELECT naam,email,onderwerp,bericht,DATE_FORMAT(datum, '%d-%m-%Y') as datum, id FROM nieuws ORDER BY datum DESC";
$res = mysql_query($mysql);
while ($row = mysql_fetch_array($res)) {
?>
<div class="newscontent">
<strong><a href="?artikel=<? echo $row['id'] ?>"><? echo $row['onderwerp'] ?></a></strong>
<div class="gbcaption"><p>Door <? echo $row['naam'] ?> op <? echo $row['datum'] ?></p></div>
<p><? echo nl2br($row['bericht']) ?></p>
<div class="newscaption"><? echo $row['naam'] ?> • <a href="#" class="gblink">Omhoog</a></div>
</div>
<?php
}
}
?>
Link:
http://ninovdbosch.com/news.php
r 25 waar komt de break vandaan?
- geen foutafhandelingen aanwezig
- gebruik geen @ om je fouten te onderdrukken.
@Jasper: Nee, aan de hand van een voorwaarde maak ik verbinding. Dit moest dus wel 2x, toch?
En over die foutafhandeling. Wat zou ik moeten afhandelen?
Dit is mijn foutafhandeling:
Code (php)
1
2
3
4
2
3
4
if (!@mysql_select_db($mysql_db, @mysql_connect($mysql_host, $mysql_user, $mysql_pass))){
echo "<p><strong>Verbinding met de database maken is mislukt. Probeert u het alstublieft opnieuw.</strong></p>";
exit();
}
echo "<p><strong>Verbinding met de database maken is mislukt. Probeert u het alstublieft opnieuw.</strong></p>";
exit();
}
En nee, ik hoef niet de ruwe errors. ;)
En je hoeft maar een keer te verbinden met mysql.
Ik bedoel, ik snap wel dat je mijn script wil perfectioneren maar ik ben maar een beginner en dan hoef ik al die code niet die ik toch nooit zelf zou verzinnen. ;)
En om even op Victor te reageren:
Ja, dat is inderdaad onhandig maar dit is toch de enige manier?
En ik maak niet 2 keer verbinding:
Als hij het bericht alleen toont
> maak verbinding
Anders:
> maak verbinding
Als ik die 2e command niet had zou hij alleen verbinding maken als hij het bericht afzonderlijk toont
je code is een rommeltje, maak gewoon één keer verbinding. Ik zou niet weten waarom je dat in een if-else constructie zou zetten. En leer ook inspringen als je codeert, dit is niet te lezen.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
$mysql_user = "ninovdbo_user";
$mysql_pass = "***";
$mysql_host = "localhost";
$mysql_db = "ninovdbo_db";
if (!@mysql_select_db($mysql_db, @mysql_connect($mysql_host, $mysql_user, $mysql_pass))){
echo "<p><strong>Verbinding met de database maken is mislukt. Probeert u het alstublieft opnieuw.</strong></p>";
exit();
}
$mysql = "SELECT naam,email,onderwerp,bericht,DATE_FORMAT(datum, '%d-%m-%Y') as datum, id FROM nieuws ORDER BY datum DESC";
$res = mysql_query($mysql);
while ($row = mysql_fetch_array($res)) {
if(isset($_GET['artikel'])) {
switch ($_GET['artikel']) {
case $row['id']:
$artikel = "<h4>" . $row['onderwerp'] . "</h4>
Geschreven door " . $row['naam'] . " op " . $row['datum'] . "
<p>" . $row['bericht'] . "</p>";
echo $artikel;
break;
}
} else {
?>
<div class="newscontent">
<strong><a href="?artikel=<? echo $row['id'] ?>"><? echo $row['onderwerp'] ?></a></strong>
<div class="gbcaption"><p>Door <? echo $row['naam'] ?> op <? echo $row['datum'] ?></p></div>
<p><? echo nl2br($row['bericht']) ?></p>
<div class="newscaption"><? echo $row['naam'] ?> • <a href="#" class="gblink">Omhoog</a></div>
</div>
<?php
}
}
?>
$mysql_user = "ninovdbo_user";
$mysql_pass = "***";
$mysql_host = "localhost";
$mysql_db = "ninovdbo_db";
if (!@mysql_select_db($mysql_db, @mysql_connect($mysql_host, $mysql_user, $mysql_pass))){
echo "<p><strong>Verbinding met de database maken is mislukt. Probeert u het alstublieft opnieuw.</strong></p>";
exit();
}
$mysql = "SELECT naam,email,onderwerp,bericht,DATE_FORMAT(datum, '%d-%m-%Y') as datum, id FROM nieuws ORDER BY datum DESC";
$res = mysql_query($mysql);
while ($row = mysql_fetch_array($res)) {
if(isset($_GET['artikel'])) {
switch ($_GET['artikel']) {
case $row['id']:
$artikel = "<h4>" . $row['onderwerp'] . "</h4>
Geschreven door " . $row['naam'] . " op " . $row['datum'] . "
<p>" . $row['bericht'] . "</p>";
echo $artikel;
break;
}
} else {
?>
<div class="newscontent">
<strong><a href="?artikel=<? echo $row['id'] ?>"><? echo $row['onderwerp'] ?></a></strong>
<div class="gbcaption"><p>Door <? echo $row['naam'] ?> op <? echo $row['datum'] ?></p></div>
<p><? echo nl2br($row['bericht']) ?></p>
<div class="newscaption"><? echo $row['naam'] ?> • <a href="#" class="gblink">Omhoog</a></div>
</div>
<?php
}
}
?>
Gewijzigd op 17/06/2011 19:44:21 door peter dhc
ik raad je nog aan om geen @-tekens te gebruiken en enkel quotes (') voor php en dubbele (") voor sql en html.
$row['onderwerp']
echo "hoi"
$artikel=$row['bericht']
Het werkt nu trouwens! :) Bedankt
Gewijzigd op 17/06/2011 19:47:32 door peter dhc
Dankjewel he. Wat orde kan(/kunnen) mijn script(s) wel gebruiken
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$link = mysql_connect('localhost', 'root', '');
if(!$link) {
$aErrors[] = error(mysql_error(), __FILE__, __LINE__);
}
$db = mysql_select_db('cms');
if(!$db) {
$aErrors[] = error(mysql_error(), __FILE__, __LINE__);
}
?>
$link = mysql_connect('localhost', 'root', '');
if(!$link) {
$aErrors[] = error(mysql_error(), __FILE__, __LINE__);
}
$db = mysql_select_db('cms');
if(!$db) {
$aErrors[] = error(mysql_error(), __FILE__, __LINE__);
}
?>
als je nu in je functie error zet of hij de foutmelding moet weergeven, of alleen opslaan in een logbestandje, dan kun je alle errors tegelijk bewerken.
voorderest lijkt je code wel te kloppen.
waarom zet je trouwens je mysql inloggegevens in aparte variabelen?
en als je maar een artikel laat zien heb je geen while() nodig
Toen ik wilde beginnen met het maken van deze website, wilde ik het meteen professioneel aanpakken. Ik wilde geen fouten meer zien in de W3C-validator. Dit is uiteindelijk ook gelukt, want de enige fouten staan in een tracking scriptje van de webhost, 000webhost, waar ik dus niks aan kan doen.
Deze code van 000webhost kan je wel uitzetten:
http://members.000webhost.com/analytics.php
Haha bedankt. Maar nu host ik niet meer bij 000webhost. Maar toch bedankt. Ik zal de tekst meteen eventjes aanpassen.