Fout Nieuwsscript

Status
Niet open voor verdere reacties.

mister_tom

Gebruiker
Lid geworden
28 okt 2005
Berichten
17
Hallo,

Ik heb een klein foutje in mijn nieuwsscript.

Hij zet de reacties namenlijk niet op volgorde van oud naar nieuw (of andersom...)

Nu staat het zo:

19-10
17-10
16-10
20-10

Zoals je begrijpt moet die reactie van 20-10 dus bovenaan... Maar dat doet ie niet :S

Site: http://xplosiveteam.xp-losion.com

Script (waar waarsch fout zit):

Zoniet daaronder het script van de pagina waarop de reacties verschijnen

gegevens.php
PHP:
<?php

// -------------------------------
// Voer deze tabel query's uit:
// -------------------------------

/*

CREATE TABLE Nieuwsartikelen (
  Naam varchar(255) NOT NULL default '',
  Datum varchar(255) NOT NULL default '',
  Titel varchar(255) NOT NULL default '',
  Categorie varchar(255) NOT NULL default '',
  Artikel text NOT NULL
) TYPE=MyISAM;

CREATE TABLE Nieuwsreacties (
  ID varchar(255) NOT NULL default '',
  Naam varchar(255) NOT NULL default '',
  Mail varchar(255) NOT NULL default '',
  Datum varchar(255) NOT NULL default '',
  Reactie text NOT NULL
) TYPE=MyISAM;

*/

// -------------------------------
// Verander de gegevens hieronder:
// -------------------------------

$MySQLHost = 'localhost';
// De MySQL host van uw server
$MySQLGebruikersnaam = '';
// De gebruikersnaam van de MySQL database op uw server
$MySQLWachtwoord = '';
// Het wachtwoord van de MySQL database op uw server
$MySQLDatabaseNaam = ;
// De naam van de database op uw server

$AantalNieuwsteArtikelen = 10;
// Hoeveel artikelen moeten er op nieuws.php komen?

$AantalBijLaatsteNieuws = 5;
// Hoeveel artikelen moeten er op laatstenieuws.php komen?

$ArtikelInKleinVensterOpenen = false;
// Nieuwsartikelen in een klein venster openen? true; of false;

$CategorieenActiveren = true;
// Categorieën activeren? true; of false;

$Categorieen["A"] = array("Algemeen","yellow");
$Categorieen["W"] = array("Aparatuur","blue");
$Categorieen["F"] = array("Feesten","green");
// De categorieën die je wilt gebruiken.
// Vul bij [""] de afkorting in, en bij
// 'array' eerst de naam en dan de kleur.
     

// -------------------------------
// Meer hoef je niet te veranderen!
// -------------------------------

@mysql_connect($MySQLHost, $MySQLGebruikersnaam, $MySQLWachtwoord) or die("Er kon geen verbinding worden gemaakt met de MySQL database.");
@mysql_select_db($MySQLDatabaseNaam) or die("De database kon niet geselecteerd worden!");

function VolledigeDatum($datum,$tijd) {
$maanden = array("","Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"); 
$dagen = array("Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"); 
if($tijd) { $tijd = " ".date("H:i:s",$datum); } else { $tijd = ""; }
return $dagen[date("w",$datum)] . " " . date("j",$datum) . " " . $maanden[date("n",$datum)] . " " . date("Y",$datum) . $tijd;
}

?>

nieuwsartikel.php
PHP:
<?php include("gegevens.php"); ?>
<?php include("style1.inc.php"); ?>
<body bgcolor="#333333">

<style> BODY{scrollbar-3dlight-color:#333333;scrollbar-highlight-color:;scrollbar-face-color:#545454;scrollbar-shadow-color:;scrollbar-track-color:#333333;scrollbar-arrow-color:#333333;scrollbar-darkshadow-color:#FFFFFF;} </style>

<?php

function ControleerEmail($a) { 
return ereg("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",$a); 
}

$id = intval($id);
$Nieuwsartikel = mysql_fetch_object(mysql_query("SELECT * FROM Nieuwsartikelen WHERE Datum = '$id'"));
if(!$id) { echo("Er is geen ID opgegeven!"); }
elseif(!$Nieuwsartikel) { echo("Het Nieuwsartikel is niet gevonden!"); }
else {

if($reactieplaatsen) {
if(!trim($Naam) || !ControleerEmail($Mail) || !trim($Bericht)) {
header("Location: $PHP_SELF?id=$id&melding=ongeldig");
}
else {
$Naam = htmlspecialchars($Naam,ENT_QUOTES);
$Bericht = htmlspecialchars($Bericht,ENT_QUOTES);
mysql_query("INSERT INTO Nieuwsreacties VALUES('$id','$Naam','$Mail','".date("U")."','$Bericht')");
}
}

// -----------------------------
// PLAATS HIERONDER JE HTML!
// -----------------------------

?>

<Plaats hier je HTML!>

<?php

// -----------------------------
// PLAATS HIERBOVEN JE HTML!
// -----------------------------

if($melding == "succes") { echo("<b>De reactie is succesvol geplaatst!</b><hr><br>"); }
elseif($melding == "ongeldig") { echo("<b>Een of meerdere velden zijn niet goed ingevuld!</b><hr><br>"); }

echo("Titel: <b>".stripslashes($Nieuwsartikel->Titel)."</b><br>
Geschreven op: ".date("d-m-Y H:i:s",$Nieuwsartikel->Datum)."<br>
Geschreven door: ".stripslashes($Nieuwsartikel->Naam)."<br>
Categorie: {$Categorieen[$Nieuwsartikel->Categorie][0]}<br><br>
".nl2br(stripslashes($Nieuwsartikel->Artikel)));
$Reacties = mysql_query("SELECT * FROM Nieuwsreacties WHERE ID = '$Nieuwsartikel->Datum'");
while($Reactie = mysql_fetch_object($Reacties)) {
echo("<br><br><hr>Reactie door: <a href='mailto:$Reactie->Mail'>$Reactie->Naam</a><br>
Geschreven op: ".date("d-m-Y H:i:s",$Reactie->Datum)."<br><br>
".nl2br($Reactie->Reactie));
}
echo("<br><br><hr><b>Reactie plaatsen:</b><br><br><form method=post action='$PHP_SELF?id=$id'>
Naam: <input type=text name=Naam size=30 maxlength=255><br>
E-mail adres: <input type=text name=Mail size=30 maxlength=255><br><br>
Bericht:<br><br><textarea cols=30 rows=10 name=Bericht></textarea><br><br>
<input type=hidden name=reactieplaatsen value=1>
<input type=submit value='Reactie plaatsen'>
</form>");
}

?>
 
Laatst bewerkt:
VERWIJDER JE WACHTWOORD UIT JE SCRIPT

(heb geen tijd om je script helemaal te bekijken) maar je moet bij je sql regel het volgende neer zetten:

order by (kolomnaam (datum?)) DESC

Wil je hem anders om hebben dan moet je ADC gebruiken.
Dus als je kolomnaam met de datum erin 'datum' heet is het

order by datum DESC

of als je met id's werkt. Dan moet je

order by id DESC.

Heb je geen id, dan moet je je datum kolom anders maken. IK moet nu eerst weg. Als het niet lukt meld het dan even dan vertel ik het als ik terug ben (18.30 ofzo)
 
Laatst bewerkt:
Wat is precies het sql gedeelte?

Heb al op 3 plaatsen geprobeerd maar werkt niet :(
 
tekst in een mysql_query() functie is SQL, bijvoorbeeld een SELECT of INSERT statement. Lees eerst eens wat over SQL anders, want als je niet eens weet wat SQL is dan is het wel erg riskant om allerlei scripts op je website te zetten, die je vervolgens niet kunt aanpassen.
 
Njah ik ben idd ook niet helemaal iemand die voor de php scripts gaat, maar kan er wel iets mee en weet wel wat Sql is, maar niet zo goed dat ik precies weet wat wel en niet Sql is...

Maar om er nou van alles over te gaan lezen, ik gebruik de scripts amper. En verder is tot nu toe het meeste toch wel gelukt :)

Maar ik zal even proberen of het nu wel lukt dan...
 
SELECT * FROM Nieuwsartikelen ORDER BY id DESC

ik dacht dat het zoiets was, het moest in ieder geval daarin (dacht k) maar dit werkt ook nog niet helemaal...
 
Laatst bewerkt:
ja klopt, daar moet hij in. Dan moet het werken.
 
In alle berichten staat nu het oudste bericht bovenaan en het nieuwste onderaan. Op 1 na :S

Daar pakt ie m niet volgens mij...

kan dat er aan ligge omdat het eerst 3 datums zijn die beginne met 1:

16,17,19

en die ander met een 2:

20..

?
 
ja, dan heb je de datum zeker opgeslagen in een database tabel met als type: varchar. En de datum niet als datum opgeslagen maar als tekst.

Je moet je database omgooien anders gaat het niet lukken.
Of je moet je datum kolom veranderen. Of wat makkelijker is. Een kolom er bij doen net zoals bij je andere database tabel.

een id kolom erin proppen. (je hebt phpmyadmin?) Maak een nieuwe kolom aan met de naam "nid" (nieuwsartikel id) en geef hem primary_key en auto_increment (kan je gewoon kiezen).

Die moet je dan laten sorteren met "sort by nid DESC", dan krijgt gewoon elk nieuwsbericht een eigen getal. Beginnend bij 0. Dan kan je daar makkelijk op sorteren.
 
jezus ze maken het wel moeilijk hoor :P

dit gaat me denk ik allemaal niet lukken, dus laat ik het maar even zo...
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan