Data presenteren van nieuwste naar oud met loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Shawnty Blabla

Shawnty Blabla

14/10/2015 16:53:21
Quote Anchor link
Ik heb net mijn aller eerste PHP geprogrammeerd en het doet het volgende;

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)
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
<!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>




Insert.php

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

- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 14/10/2015 17:26:36 door - Ariën -
 
PHP hulp

PHP hulp

21/11/2024 22:45:15
 
Ben van Velzen

Ben van Velzen

14/10/2015 17:01:40
Quote Anchor link
Welke tutorial zit je te volgen? Dit is in elkaar gezet met praktisch alles dat je fout kan doen aan een script.
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.
 
Ivo P

Ivo P

14/10/2015 17:13:44
Quote Anchor link
open 1x per script de verbinding met je database. Niet steeds sluiten en weer een dure verbindingsactie uitvoeren omdat je toch verder wilt.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
  $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...
 
Bart V B

Bart V B

14/10/2015 17:20:17
Quote Anchor link
Er zijn nog veel dingen te verbeteren, maar dat is even voor nu niet zo van belang denk ik.
Maak eens in de database een veld aan met de naam: datum en deze word DATETIME.

In je script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
="INSERT INTO
              opcdev
             (msg,
              datum
              )
              VALUES('"
.mysql_real_escape_string($_POST['msg']."'),
                     NOW())"
;
?>

Bij het uitlezen:
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
<?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>'
;

}


?>

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
 

15/10/2015 09:30:41
Quote Anchor link
Niemand die hem/hara er even op wijst dat mysql eruit is en mysqli gebruikt moet worden?
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.
 
Shawnty Blabla

Shawnty Blabla

15/10/2015 09:37:19
Quote Anchor link
Hallo!

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 !
 
Joni Fleischer
Moderator

Joni Fleischer

15/10/2015 12:00:42
Quote Anchor link
Tip:

http://www.phptuts.nl/view/45/
http://www.phptuts.nl/view/41/

mysqli of PDO.

Prepared statements zijn een stuk veiliger.
 



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.