eerst nog even een foutje uit default.php halen:
PHP:
<?php
session_start();
$dbname = "mmu0102_"; // database naam
$user = "timo"; // gebruikersnaam van mysql
$pass = "*********"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
$dbh=mysql_connect("$host","$user","$pass");
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );
$time=time();
if($_SESSION['rand']==$_POST['rand'] AND $_POST['rand']!=''){
$_SESSION['rand']=rand(101,200);
$title=$_POST['title'];
$text=$_POST['text'];
$time=$_POST['time'];
$query="INSERT INTO `blog` (`ID`,`title`,`text`,`time`) VALUES('','$title','$text','$time');";
$res=mysql_query($query);
$fout=mysql_errno($dbh);
if ($fout != 0) {
$fout=mysql_error($dbh);
echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";
mysql_close($dbh);
echo "</body></html>";
exit;
}
echo "Post gemaakt.";
}
Ik zal nu even een uitgebreide uitleg geven van hoe je een code maakt die gegevens uit de database op een pagina weergeeft, zodat je het daarna zelf ook zou kunnen. Als je dit overbodig vind, ga dan direct naar onderen. Daar heb ik het eindresultaat neergezet.
Je wilt een code die de gegevens uit de database haalt, en ze op je pagina laat zien. Ik maar ik heven een nieuw bestand voor aan: show.php. Om te beginnen moeten we op deze pagina een connectie te maken met de database, omdat we daar gegevens uit gaan ophalen:
PHP:
<?php
$dbname = "mmu0102_"; // database naam
$user = "timo"; // gebruikersnaam van mysql
$pass = "*********"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
$dbh=mysql_connect("$host","$user","$pass");
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );
je ziet dat ik hier geen session_start() gebruik, omdat ik niet vanplan ben om sessions op deze pagina te gaan gebruiken. Als je dat wel wilt doen, voeg gewoon op een apparte regel session_start() toe. Zet session_start() zo hoog mogelijk (het liefst gelijk na de <?php).
nu moeten we de gegevens uit de database gaan halen. Daarvoor moeten we eerst een query opstellen. We willen dus uit de tabel blog alles selecteren. In mysql taal ziet dat er zo uit: SELECT * FROM `blog`;. Je kan hier als je nog iets specifieks wilt selecteren een where achter zetten, bijvoorbeeld: SELECT * FROM `blog` where `ID`='1';. Maar de eerste is voor nu nog even goed genoeg.
PHP:
$query="SELECT * FROM `blog`;";
We hebben nu wel een query, maar we moeten deze ook nog uitvoeren. in princiepe kan het met een lijn ($res=mysql_query($query); ), maar als je een fout in je query hebt staan is het altijd wel handig om deze te laten weergeven. Daarom gebruik ik daarvoor meestal de volgende code.
PHP:
$res=mysql_query($query);
$fout=mysql_errno($dbh);
if ($fout != 0) {
$fout=mysql_error($dbh);
echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";
mysql_close($dbh);
echo "</body></html>";
exit;
}
de eerste regel voert de opdracht uit, en zet alles in de variabele $res.
De tweede regel neemt als er een fout is deze over in de variabele $fout, en zolang er geen fout is, geeft die 0.
In de derde regel controleer de code of er een fout is (dus of $fout niet gelijk is aan 0)
in de vierde regeld kan je je eigen persoonelijke foutbericht weergeven. Meestal is het handig om het foutbericht te laten weergeven en de query. Maar je kan ook gewoon neerzetten dat er een fout is opgetreden, en dat ze jouw moeten waarschuwen.
De vijfde t/m de zevende regel sluit alles af, en stopt het script. Dit is niet perse nodig, maar wel veilig.
We hebben nu dus alle opgevraagde gegevens uit de database in de variabele $res staan. Maar helaas kunnen we er nog niet zo veel mee in deze vorm. we zullen het eerst om moeten zetten in leesbare gegevens. Dat kan op twee manieren:
PHP:
$row=mysql_fetch_row($res);
of
PHP:
$row=mysql_fetch_assoc($res);
de mysql_fetch_row() geeft de resultaten weer in een array, waar je op de volgende manier bij kan:
PHP:
$ID=$row[0];
$title=$row[1];
etc.
Deze is dus afhankelijk van de volgorde in je database.
de mysql_fetch_assoc() geeft de resultaten ook in een array, maar op de volgende manier:
PHP:
$ID=$row['ID'];
$title=$row['title'];
etc.
Deze is dus hafhankelijk van de naam van de rij in je database.
de keuze is dus aan jouw, maar in dit geval zal ik de mysql_fetch_assoc() gebruiken. De code tot nu toe ziet er dus zo uit:
PHP:
<?php
$dbname = "helpmij"; // database naam
$user = "root"; // gebruikersnaam van mysql
$pass = ""; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
$dbh=mysql_connect("$host","$user","$pass");
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );
$query="SELECT * FROM `blog`;";
$res=mysql_query($query);
$fout=mysql_errno($dbh);
if ($fout != 0) {
$fout=mysql_error($dbh);
echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";
mysql_close($dbh);
echo "</body></html>";
exit;
}
$row=mysql_fetch_assoc($res);
$ID=$row['ID'];
$title=$row['title'];
$text=$row['text'];
$time=$row['time'];
de gegevens staan nu onder elkaar in een array, maar we willen ze een voor een eruithalen. Ook dit kan weer op verschillende manieren. Ik zal hier met een for loop werken. Een forloop ziet er zo uit:
PHP:
for($teller=0;$teller<$aantal_loops;$teller++){
}
in ons geval willen we dat het aantal loops gelijk is aan hoeveel blog posts we moeten weergeven, en dus hoeveel rijen er in onze database staan:
PHP:
$aantal_loops=mysql_num_rows($res);
we moeten nu alleen nog even de tijd in een leesbaar formaat omzetten (voor meer informatie hierover zie
http://nl.php.net/manual/en/function.date.php):
$leesbare_tijd=date(j-m-y h:i:s, $time);
hier is hoe de code er nu uit ziet:
PHP:
<?php
$dbname = "helpmij"; // database naam
$user = "root"; // gebruikersnaam van mysql
$pass = ""; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
$dbh=mysql_connect("$host","$user","$pass");
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );
$query="SELECT * FROM `blog`;";
$res=mysql_query($query);
$fout=mysql_errno($dbh);
if ($fout != 0) {
$fout=mysql_error($dbh);
echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";
mysql_close($dbh);
echo "</body></html>";
exit;
}
$aantal_loops=mysql_num_rows($res);
for($teller=0;$teller<$aantal_loops;$teller++){
$row=mysql_fetch_assoc($res);
$ID=$row['ID'];
$title=$row['title'];
$text=$row['text'];
$time=$row['time'];
$leesbare_tijd=date("j-m-y h:i:s", $time);
}
We hebben nu alle gegevens opgehaald, en we kunnen nu beginnen aan het leuke werk, het neerzetten van je blog!
het makkelijkste is het om een tabel voor iedere post te maken, maar denk eraan dat dit in de loop gezet moet worden.
PHP:
echo "<center><table border='1'>";
echo "<tr align='center'><td><h2>$title</h2>";
echo "<tr align='center'><td>This post was made on $leesbare_tijd";
echo "<tr align='center'><td>$text";
echo "</table></center>";
en dat was het dan zo'n beetje. Je kan dit natuurlijk nog heel erg gaan uitbreiden, met apparte pagina's voor elke blog, dat lezers comment's kunnen plaatsen, een mooie css stylesheet toevoegen etc.
Dit is dan nu de uiteindelijke code:
PHP:
<?php
<?php
$dbname = "mmu0102_"; // database naam
$user = "timo"; // gebruikersnaam van mysql
$pass = "*********"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
$dbh=mysql_connect("$host","$user","$pass");
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );
$query="SELECT * FROM `blog`;";
$res=mysql_query($query);
$fout=mysql_errno($dbh);
if ($fout != 0) {
$fout=mysql_error($dbh);
echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";
mysql_close($dbh);
echo "</body></html>";
exit;
}
$aantal_loops=mysql_num_rows($res);
for($teller=0;$teller<$aantal_loops;$teller++){
$row=mysql_fetch_assoc($res);
$ID=$row['ID'];
$title=$row['title'];
$text=$row['text'];
$time=$row['time'];
$leesbare_tijd=date("j-m-y h:i:s", $time);
echo "<center><table border='1'>";
echo "<tr align='center'><td><h2>$title</h2>";
echo "<tr align='center'><td>This post was made on $leesbare_tijd";
echo "<tr align='center'><td>$text";
echo "</table></center>";
}
?>
hoeveel je kan kletsen over zo'n klein stukje code

. In ieder geval veel plezier ermee.
succes :thumb: