Ophalen gegevens database
$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.
Gewijzigd op 27/07/2010 11:33:24 door Marcus Tullius
een ORDER BY meegeven in de SELECT
Ja, zoiets dacht ik al, maar wat moet het dan zijn? ORDER BY...?
wanneer je een oplopend id in je tabel hebt.
anders op een datum wellicht ?
ORDER BY ....
Gewijzigd op 27/07/2010 15:27:45 door Marcus Tullius
Marcus Tullius op 27/07/2010 11:48:14:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in status.php on line 36
Laat eens je hele query code zien, want dit is gewoon gissen tot we een ons wegen natuurlijk ;)
Bouw foutafhandeling in en echo de query eens.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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);
}
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);
}
'".date('Y'-'d'-'f')."',
Marcus Tullius op 27/07/2010 15:40:28:
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
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);
}
?>
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')
die is geen nette afhandeling. Je kunt toch nog steeds een normale pagina laten zien?
Bovendien wil je alleen mysql_error voor jezelf gebruiken, aangezien hackers daar misbruik van kunnen maken.
Gebruik nooit of te nimmer addslashes!!!
Addslashes verneuken je data, gebruik gewoon mysql_real_escape_string.
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.
Ik wilde trouwens deze laten zien, daar ging het om:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?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 />";
}
?>
$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 />";
}
?>
Selecteer ook wat je wilt hebben. Gebruik niet *.
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?
Gewijzigd op 27/07/2010 16:23:31 door Marcus Tullius
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?
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.