Door
Marcus Tullius
op 27-07-2010 11:17
gewijzigd op 27-07-2010 11:33
2.785 views
Ik wil graag dat op een bepaalde pagina de drie laatst toegevoegde rijen weergegeven worden van mijn database. Daarnaast wil ik ook dat de laatst toegevoegde rij bovenaan wordt weergegeven. Dit is het stuk script dat me het belangrijkste lijkt voor deze functie:
$sql = "SELECT * FROM ... LIMIT 3";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
Het probleem is echter dat hij wel drie rijen weergeeft, maar na 4 posts de volgorde in de war wordt geschopt. Weet iemand hoe dit de voorkomen is, zodat de rijen in de oorspronkelijke volgorde blijven?
Alvast bedankt.
?
Onbekende gebruiker
27-07-2010 15:45
gewijzigd op 27-07-2010 15:47
Marcus Tullius op 27/07/2010 15:40:28
<?php
if ($_POST["submit"] && $_POST["title"] && $_POST["posts"] && $_POST["name"]) {
$db = mysql_connect("localhost", "naam", "wachtwoord")
or die("Could not connect to the database: " . mysql_error());
mysql_select_db("database", $db);
$sql = "INSERT INTO bugs (title,post,date,name) VALUES (
'".addslashes($_POST['title'])."',
'".addslashes($_POST['posts'])."',
'".addslashes(date('F d, Y'))."',
'".addslashes($_POST['name'])."')";
if (!mysql_query($sql)) {
echo "Fail.";
} else {
echo "Success!";
}
mysql_close($db);
}
?>
Controleren of een form gepost is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST')
[php]die[/php] is geen nette afhandeling. Je kunt toch nog steeds een normale pagina laten zien?
Bovendien wil je alleen [php]mysql_error[/php] voor jezelf gebruiken, aangezien hackers daar misbruik van kunnen maken.
Gebruik nooit of te nimmer [php]addslashes[/php]!!!
Addslashes verneuken je data, gebruik gewoon [php]mysql_real_escape_string[/php].
Zet het type van het veld date in de database op DATE, dan kan je gewoon NOW() gebruiken, en niet een of ander eigen verzonnen standaard.
Oke, bedankt.
Ik wilde trouwens deze laten zien, daar ging het om:
<?php
$db = mysql_connect("localhost", "naam", "wachtwoord")
or die("Could not connect to the database: " . mysql_error());
mysql_select_db("database", $db);
$sql = "SELECT * FROM bugs ORDER BY ID DESC LIMIT 3";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
echo "<p class=\"subtitle\">".$row["title"]."</p>".$row['post]."<br/><div id=\"postbottom\">".$row['date']." by ".$row['name']."</div><br /><br />";
}
?>
Ik wil gewoon alles hebben van de tabel. Daarom de *.
Maar is het ook gewoon mogelijk om de posts in de juiste volgorde te krijgen aan de hand van hun ID, en niet de date?
?
Onbekende gebruiker
28-07-2010 11:21
Marcus Tullius op 27/07/2010 16:20:33
Ik wil gewoon alles hebben van de tabel. Daarom de *.
Maar is het ook gewoon mogelijk om de posts in de juiste volgorde te krijgen aan de hand van hun ID, en niet de date?
Dan selecteer je nog wat je wilt hebben. Want misschien weet je later niet meer wa je allemaal wilt hebben, dus kan je duidelijk zien wat je wilt hebben. SQL documenteert zichzelf. Verder is het dus ook nog zo dat doordat in principe * een wildcard is, de database ook gewoon velden mag negeren.
Nee, je kunt niet aan een id de volgorde van reacties vinden.