Data presenteren van nieuwste naar oud met loop
1. In een HTML form voer je data in (index.php)
2. In insert.php wordt deze data naar mijn mysql database geschreven
3. in insert.php (en ook nog in een volgende pagina) worden alle rows uitgelezen met een while loop en ge-echo' ed.
Wat hij automatisch doet is bovenaan de pagina de oudste entry en elke keer als er een nieuwe entry komt deze onderaan plakken (logisch)
Alleen wil ik heel graag de nieuwste entry bovenaan. Ik kom er werkelijk waar niet uit. Code hieronder.
Any help is appreciated!
Index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>OPC Dev new entry</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<p>
<form action="insert.php" method="post">
<p> <input type="text" name="date" value="<?php echo date("d-m-Y");?>" /><br><br>
<input type="text" name="time" value="<?php echo date("H:i");?>" /><br><br>
Message: <input type="text" name="msg" width="700" height="700" id="txtbox"/><br><br>
<input type="submit" />
</p>
</form>
</p>
<body>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>OPC Dev new entry</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<p>
<form action="insert.php" method="post">
<p> <input type="text" name="date" value="<?php echo date("d-m-Y");?>" /><br><br>
<input type="text" name="time" value="<?php echo date("H:i");?>" /><br><br>
Message: <input type="text" name="msg" width="700" height="700" id="txtbox"/><br><br>
<input type="submit" />
</p>
</form>
</p>
<body>
</body>
</html>
Insert.php
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Feedback inserting new entry</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<p>
<?php
$con = mysql_connect("xxxxxxx","xxxxxxx","xxxxxxxxxx");
$dbhost = "xxxxxx";
$dbuser = "xxxxxx";
$dbpass = "xxxxxx";
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xxxxxxxxx", $con);
$sql="INSERT INTO opcdev (date, time, msg)
VALUES
('$_POST[date]','$_POST[time]','$_POST[msg]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "One update added<br><br>";
mysql_close();
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$query="SELECT * FROM opcdev"; //get all data from database
$result=mysql_query($query); //store them in a variable
$num=mysql_numrows($result); //count how many rows (=entry's) are in your database
mysql_close();
$i=0;
while ($i < $num) {
$date=mysql_result($result,$i,"date");
$time=mysql_result($result,$i,"time");
$msg=mysql_result($result,$i,"msg");
echo " Update added on <b> $date </b> at <b> $time </b> <BR>
<br>
$msg<br><br>
--------------------------------------------------------------<br><br>";
$i++;
}
?>
<br />
<br />
<a href="http://www.santivandentoorn.com/opcdev/opcdev.php">zie hier</a>
</p>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Feedback inserting new entry</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<p>
<?php
$con = mysql_connect("xxxxxxx","xxxxxxx","xxxxxxxxxx");
$dbhost = "xxxxxx";
$dbuser = "xxxxxx";
$dbpass = "xxxxxx";
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xxxxxxxxx", $con);
$sql="INSERT INTO opcdev (date, time, msg)
VALUES
('$_POST[date]','$_POST[time]','$_POST[msg]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "One update added<br><br>";
mysql_close();
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$query="SELECT * FROM opcdev"; //get all data from database
$result=mysql_query($query); //store them in a variable
$num=mysql_numrows($result); //count how many rows (=entry's) are in your database
mysql_close();
$i=0;
while ($i < $num) {
$date=mysql_result($result,$i,"date");
$time=mysql_result($result,$i,"time");
$msg=mysql_result($result,$i,"msg");
echo " Update added on <b> $date </b> at <b> $time </b> <BR>
<br>
$msg<br><br>
--------------------------------------------------------------<br><br>";
$i++;
}
?>
<br />
<br />
<a href="http://www.santivandentoorn.com/opcdev/opcdev.php">zie hier</a>
</p>
</body>
</html>
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 14/10/2015 17:26:36 door - Ariën -
Geen escaping, gebruik van mysql_ functies, willekeurig mengen van HTML en PHP en ga zo maar door.
Het antwoord op je vraag is eenvoudig genoeg: pas de query op regel 37 aan zodat deze sorteert op datum. Al heb ik niet het vermoeden dat het datumveld daadwerkelijk DATETIME is.
Datum en tijd laat je weg uit je form.
Haal ook die kolommen uit je tabel en zet daarvoor in de plaats 1 kolom van het type DATETIME.
Die vul je met NOW() is je query:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql = "INSERT INTO opcdev (datumtijd, msg)
VALUES
(NOW(),'". mysql_real_escape_string($_POST[msg])."')";
?>
$sql = "INSERT INTO opcdev (datumtijd, msg)
VALUES
(NOW(),'". mysql_real_escape_string($_POST[msg])."')";
?>
Daarna kun je in de select-query sorteren op die datumtijd.
SELECT * FROM opcdev ORDER BY datumtijd DESC
(of ASC als je andersom wilt sorteren)
PS:
mysql_numrows() is zo oud dat dat niet eens meer op php.net te vinden is (zonder de 2e underscore.
Daarnaast is het nu minstens mysqli om mee te werken.
Deze tutorial is waarschijnlijk een jaar of 10 oud...
Maak eens in de database een veld aan met de naam: datum en deze word DATETIME.
In je script:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql="INSERT INTO
opcdev
(msg,
datum
)
VALUES('".mysql_real_escape_string($_POST['msg']."'),
NOW())";
?>
$sql="INSERT INTO
opcdev
(msg,
datum
)
VALUES('".mysql_real_escape_string($_POST['msg']."'),
NOW())";
?>
Bij het uitlezen:
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
$query="SELECT msg,
date_format(datum, '%d-%m-%Y %H:%i:%s') AS datum_NL
FROM opcdev ORDER BY datum DESC"; //get all data from database
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
echo ' Update added on <b>'.$row['datum_NL'].'</b><br>
<br>
'.$row['msg'].'<br><br>
--------------------------------------------------------------<br><br>';
}
?>
$query="SELECT msg,
date_format(datum, '%d-%m-%Y %H:%i:%s') AS datum_NL
FROM opcdev ORDER BY datum DESC"; //get all data from database
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
echo ' Update added on <b>'.$row['datum_NL'].'</b><br>
<br>
'.$row['msg'].'<br><br>
--------------------------------------------------------------<br><br>';
}
?>
EDIT Ivo was me voor.. Dahm, moet m'n tiksnelheid eens onder de loep gaan nemen. :s
Gewijzigd op 14/10/2015 21:16:33 door Bart V B
En als dan toch mysqli gebruikt word er beter meteen de OOP benadering gebruikt kan worden.
Dan krijgen ze ook de pauper procudurele shit niet mee tijdens het leer proces.
Bedankt voor alle reacties. Het was geen tutorial die ik volgde, ik had iets bedacht wat ik wilde maken en ben gewoon begonnen. Mysql ken ik van de tutorials die ik op codeacademy heb gevolgd. PHP ken ik vrijwel niet, maar de logica kwam mij enigszins bekend voor van Java.
Ik heb de kolum datetime gemaakt en voeg de data daarin via NOW(). Ik heb gezorgd dat de connectie met de database maar 1x per script wordt aangehaald en gesloten en het is zelfs gelukt om de data te sorteren op aflopende datum :).
Bedankt voor al jullie reacties, ik ga weer hard aan de slag om te zorgen dat als ik weer iets post het er beter uitziet !
http://www.phptuts.nl/view/45/
http://www.phptuts.nl/view/41/
mysqli of PDO.
Prepared statements zijn een stuk veiliger.