Nieuws op aparte pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter dhc

peter dhc

17/06/2011 17:22:48
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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'] ?> &bull; <a href="#" class="gblink">Omhoog</a></div>
</div>
<?php
}
}

?>


Link:
http://ninovdbosch.com/news.php
 
PHP hulp

PHP hulp

20/02/2025 07:31:40
 
Victor -

Victor -

17/06/2011 17:26:19
Quote Anchor link
r 15 , achter bericht moet weg
r 25 waar komt de break vandaan?
 
Jasper DS

Jasper DS

17/06/2011 17:28:32
Quote Anchor link
ga je nu echt telkens verbinding maken met de db?!

- geen foutafhandelingen aanwezig
- gebruik geen @ om je fouten te onderdrukken.
 
Peter dhc

peter dhc

17/06/2011 18:11:27
Quote Anchor link
@Victor: Nee, dat is nodig om de datum goed weer te geven en die break is toch voor de case?

@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)
PHP script in nieuw venster Selecteer het PHP script
1
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();
}


En nee, ik hoef niet de ruwe errors. ;)
 
Victor -

Victor -

17/06/2011 18:15:11
Quote Anchor link
Je hebt maar 1 case in je switch een beetje onhandig?
En je hoeft maar een keer te verbinden met mysql.
 
Jasper DS

Jasper DS

17/06/2011 18:34:36
 
Peter dhc

peter dhc

17/06/2011 18:46:40
Quote Anchor link
Ik weet niet hoor maar dat is echt onnodige shit. Serieus, ik heb hier nooit een probleem mee gehad. En ik weet niet wat daar nou beter aan is, behalve dat je meer onnodige code in je script stopt, maar op deze manier pikt hij ook elke error eruit. Gewoon als het niet lukt, zegt ie dat t niet lukt. Wat wil je nog meer? Ik zie echt geen directe aanleiding om dat aan te passen, sorry.

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
 
Jasper DS

Jasper DS

17/06/2011 19:30:38
Quote Anchor link
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.
 
Peter dhc

peter dhc

17/06/2011 19:38:57
Quote Anchor link
Dat heb ik nu gedaan, en nu heb nu ook wat geordend en wat duidelijkheid proberen scheppen door inspringen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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'] ?> &bull; <a href="#" class="gblink">Omhoog</a></div>
</div>
<?php
    }
}

?>
Gewijzigd op 17/06/2011 19:44:21 door peter dhc
 
Jasper DS

Jasper DS

17/06/2011 19:41:07
Quote Anchor link
ik raad je nog aan om geen @-tekens te gebruiken en enkel quotes (') voor php en dubbele (") voor sql en html.
 
Peter dhc

peter dhc

17/06/2011 19:47:10
Quote Anchor link
Oke dus dan bijvoorbeeld:
$row['onderwerp']
echo "hoi"
$artikel=$row['bericht']

Het werkt nu trouwens! :) Bedankt
Gewijzigd op 17/06/2011 19:47:32 door peter dhc
 
Jasper DS

Jasper DS

17/06/2011 19:54:09
Quote Anchor link
neen! vars buiten quotes!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
# vb1:
$var = 'Hallo';
echo $var;
echo $var.', ik ben Jasper';
?>
Gewijzigd op 17/06/2011 19:54:27 door Jasper DS
 
Peter dhc

peter dhc

17/06/2011 21:38:38
Quote Anchor link
Dankjewel he. Wat orde kan(/kunnen) mijn script(s) wel gebruiken
 
Victor -

Victor -

17/06/2011 21:54:53
Quote Anchor link
Mijn eigen verbinding ziet er zo uit: dan hoef je geen @ te gebruiken,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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__);
    }

?>


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
 
Gerhard l

gerhard l

18/06/2011 12:50:14
Quote Anchor link
offtopic, ik zag op je website dit staan:

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
 
Peter dhc

peter dhc

18/06/2011 13:55:03
Quote Anchor link
Haha bedankt. Maar nu host ik niet meer bij 000webhost. Maar toch bedankt. Ik zal de tekst meteen eventjes aanpassen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.