# Gepost op 23-01-2010 13:07
Bewerkt door vlerknozem op 16-05-2010 22:28
Bewerkt door vlerknozem op 16-05-2010 22:28
MySQL is een database systeem. Je kan er een hoop data in opslaan die je vervolgens kan gebruiken op bijvoorbeeld je website. MySQL is in feite een aparte virtuele server en staat los van je je website. Om op je website gebruik te maken van MySQL moet je eerst een connectie maken. Vervolgens kan je de MySQL server opdrachten geven d.m.v querys. Deze opdrachten bestaan uit SQL. Dit is een soort van programmeer taal waarmee je de hele MySQL server kan beheren (afhankelijk van je rechten).
Als je data wilt opslaan in MySQL dan moet je eerst database aanmaken. Als je een host hebt dan is er vaak standaard al een database voor jou gemaakt en soms heb je niet eens de rechten om een database aan te maken. Maar als je lokaal op je eigen pc werkt dan moet je wel eerst een database maken. Natuurlijk kan je via SQL een database maken, maar we gaan het via de gebruikelijke manier doen. Open eerst maar phpMyAdmin. Dit is meestal te vinden op http://localhost/phpmyadmin/, maar bij jou kan dit ook anders zijn. Log in met je inloggegevens. Als je het zelf hebt geinstalleerd is de gebruikersnaam standaard 'root' en het wachtwoord is leeg.
Eenmaal ingelogd dan zie je een input met bij 'create database'. Vul daar de naam in. In deze tutorial gebruik ik de database 'tutorial'. Klik vervolgens op Create. Je database is nu aangemaakt.
Tip: Als je in phpmyadmin een opdracht hebt uitgevoerd zoals het maken van een database, dan zie je ook de SQL die daarvoor is gebruikt.
We gaan nu een tabel maken in phpmyadmin. Deze gaan we straks gebruiken in de tutorial. Nadat je de database hebt aangemaakt kom je vanzelf op de pagina om iets te doen in deze database. Bovenaan zie je dan ook 'Server: localhost - Database: tutorial '. Is dit niet het geval dan kan je in het linker vlak de database alsnog kiezen.
Je ziet nu de tekst 'Create new table on database tutorial'. Hieronder kan je de tabelnaam opgeven en het aantal velden kiezen. Kies als tabelnaam 'test' en kies voor 3 velden. Klik dan op go. Je ziet nu een hoop dat je kan invullen, maar voordat je je computer uit het raam gooit wil ik even zeggen dat je niet alles hoeft in te vullen. Bij 'Field' vul je de naam voor het veld in. Bij type vul je de datatype in. Bij 'Length/Values1' vul je de het aantal toegestaande tekens in. Dat is verplicht bij VARCHAR.
We gaan nu drie velden maken. De eerst wordt een id. Dit wordt een getal (INT) die zich automatisch optelt. Om te voorkomen dat er twee keer hetzelfde ID komt gebruiken we PRIMARY en om ervoor te zorgen dat het automatisch optelt gebruiken we AUTO_INCREMENT. Het tweede veld wordt een korte tekst (VARCHAR) voor een titel. De derde een bericht waar meer data in moet kunnen (TEXT). Hieronder vertel ik precies wat je moet invullen. De dingen die er niet bij staan hoef je dus ook niet in te vullen.
Veld 1:
Field: id
Type: INT
Index: kies voor primary.
AUTO_INCREMENT: vink deze aan.
Veld 2:
Field: titel
Type: Varchar
Length/Values1: 256 Let op! 256 kan je aanpassen. Nu kan in dit veld maar maximaal 256 tekens.
Veld 3:
Field: bericht
Type: text
Klik nu op 'save'. Als alles goed is gegaan zie je nu de volgende tekst 'Table `tutorial`.`test` has been created.'. Daaronder staat de volgende query die is uitgevoerd om de tabel aan te maken:
Als je je computer nog niet uit het raam hebt gegooid kunnen we eindelijk in php beginnen. Eerst moet er een verbinding zijn tussen jou php pagina en de mysql server. Maak een nieuwe php pagina aan 'tutorial.php'.
Bij host vul je de host van de mysql server in. Standaard is dit altijd 'localhost'. Voor de rest vul je je inloggegevens in die je ook gebruikt op in te loggen in phpnyadmin. Ook vul je de database in wat in dit geval 'tutorial' is. Als je de pagina test dan zie je een witte pagina. Als error_reporting aanstaat dan is je verbinding succesvol. Anders zet error_reporting aan om erachter te komen of de verbinding wel of niet succesvol is.
Nu we een verbinding hebben kunnen we communiceren met MySQL. Dit doen we met behulp van querys in de vorm van SQL.
Op de plek van 'SQL' vul je dus de SQL-code in. Meteen zie je een nieuwe functie. De functie mysql_error() geeft de details van wat er precies mis is als er fouten zijn.
Voordat we data kunnen opvragen uit de database moet er wel eerst data aanwezig zijn. Want nu hebben we niets meer dan een lege tabel. Data invoegen doen we met INSERT. Om je geheugen op te frissen, we hebben de tabel 'test' met de velden 'id', 'titel' en 'bericht'. Het eerste veld gaan we niks mee doen. Deze wordt namelijk automatisch ingevuld. De query houden we nu even heel simpel.
Met het SET command zeg je dat je de velden wil invullen. Meerdere velden scheid je met komma's. Mensen die al kennis hebben van SQL zullen zeggen dat je ook hetvolgende kan gebruiken:
De rede dat ik gebruik maak van SET is omdat ik vind dat het overzichtelijker is. Bovendien gebruik je SET ook bij UPDATE querys en is dat dus nu veel makkelijker om te onthouden.
Ga nu naar phpmyadmin en open de tabel 'test'. Als deze al open is dan klik je op 'browse' links boven. Als het goed is zie je nu hetvolgende:
Je weet nu dat het bericht succelvol is geplaatst. Nu moet je de mysql_query die je net hebt geschreven even escapen in tutorial.php door er '//' voor te zetten. Anders krijg je iedere keer als je de pagina herlaad dit bericht overnieuw.
Om het nu meteen goed te doen gaan we een html formulier maken om dit proces automatisch te maken. Onderaan de php-code komt nu het html-formulier:
Nu nog de php-code:
Tip: Als er een fout is opgetreden kan je dat debuggen met mysql_error.
Zoals je ziet gebruik ik $SQL. Deze vul ik steeds aan. Dit om het even overzichtelijk te houden. De functie mysql_real_escape_string is puur voor de beveiliging tegen SQL-injectie. Deze fuctie moet je dus altijd gebruiken bij het invoegen van alle data dat van buitenaf komt.
In feite is dit deel erg gevarieerd. Maar om te voorkomen dat er weer een computer uit het raam vliegt probeer ik het simpel te houden. We gaan nu gebruik maken van SELECT.
Natuurlijk kan je ook in één keer alle velden selecteren:
De data die je ontvangt is een MySQL resource. Nu gebruik je de functie mysql_fetch_array om de data op te vragen. Dit kan je dan met een while-loop uitlezen. Plaats nu tussen de huidige php-code en het html formulier de volgende code:
Tip: gebruik htmlspecialchars() of strip_tags() om te voorkomen dat mensen htmlcode kunnen invoegen.
Tip 2: gebruik nl2br() om te zorgen dat de enters die je in het formulier gebruikt worden omgezet naar <br />. Let wel op dat je dit gebruikt nadat je de html-tags hebt verwijderd om hebt omgezet.
Om de volgorde van de berichten te bepalen gebruik je ORDER BY. Met ASC krijg je de standaard volgorde 1,2,3 en met DESC de omgekeerde volgorde 3,2,1.
Bij 'id' vul je dus de veldnaam in. Als je bijvoorbeeld op titel sorteerd dan let hij op de (bij DESC omgekeerde) alphabetische volgorde.
Natuurlijk kan je ook selecteren op voorwaardes. Mijn tabel ziet er nu zo uit:
Je wilt nu alleen het tweede bericht ontvangen. Hiervoor gebruiken we WHERE. Dus WHERE id = 2. Of where titel = 'test'. Of misschien WHERE id = 2 AND titel = 'test'. Met AND kan je dus meerdere velden controleren. Met OR moet het dus of voldoen aan het ene veld of aan het andere.
Maar als je bijvoorbeeld een bericht uit een gastenboek wil weergeven kijken we gewoon naar het id. Wat als je naar de titel zou kijken en je hebt twee berichten met dezelfde titel, dan weet je nog niet welk bericht van de twee je wilt.
Om dit in de praktijk te doen gaan we een php-script maken. Voor de overzichtelijkheid maken we een nieuwe php pagina aan genaamd 'tutorial_where.php'. De volgende code:
Nu we weten dat dit werkt een leuk praktijk voorbeeld. Ga weer naar tutorial.php en vervang ALLES door deze code:
Maar stel a.u.b nu niet de vraag of dit een gastenboek tutorial is want dan gooi ik mijn computer uit het raam.
Dit doen we met UPDATE. Deze lijkt in feite heel erg op de INSERT.
Let op! Nu worden bij alle rows de titels geupdate naar Appel.
Omdat je vaak maar één row wilt update gebruiken we weer WHERE.
Kijk maar even in phpmyadmin of het heeft gewerkt.
Omdat het nu toch op een gastenboek lijkt gaan we ons mooie script weer aanpassen. Kijk nog eens naar deze code:
Dit ga je nu veranderen in dit:
Zoals je ziet is er weinig verschil tussen de UPDATE en de INSERT. Maar nu weer een goede tip om minder code te hoeven schrijven. Verander deze nieuwe code in dit:
Dan moet je nog het formulier aanpassen en een linkje maken. De complete code van tutorial.php wordt dan nu:
Verwijderen doe je met DELETE.
Nu heb ik al heel veel uitgelegd. In deze tutorial hebben we tot nu toe alleen INT, VARCHAR en TEXT gebruikt. Maar in de praktijk zal je meer gaan gebruiken.
INT: een cijfer
VARCHAR: een string
TEXT: voor bijvoorbeeld een bericht
LONGTEXT: zelfde als TEXT maar ondersteund meer data.
DATE: voor het opslaan van datums (mm-dd-yyyy)
TIME: voor het opslaan van tijd (hh:mm:ss)
DATETIME: datum en tijd samen (mm-dd-yyyy hh:mm:ss)
>> Voor een uitgebreid overzicht: http://www.w3schools.com/SQL/sql_datatypes.asp
Als je dit leest dan is je computer nog heel en ligt niet op straat. Ik hoop dat jullie de basis nu onder de knie hebben. Met behulp van deze tutorial zou je in principe zelf een simpel gastenboek kunnen maken. Wellicht komt later een nieuwe tutorial waar verder inga op SQL. Dan wil ik JOIN, LIMIT en nog een aantal sql functies behandelen.
Inhoudsopgave
- Database maken
- Een tabel maken in phpmyadmin
- Een MySQL connectie
- Een query
- Data invoegen
- Opvragen van data
- Volgorde van selecteren
- Een bericht selecteren op een voorwaarde
- Data wijzigen
- Uitgebreide toepassing van UPDATE
- Verwijderen van berichten
- Datatypes
- Tot slot
Database maken
Als je data wilt opslaan in MySQL dan moet je eerst database aanmaken. Als je een host hebt dan is er vaak standaard al een database voor jou gemaakt en soms heb je niet eens de rechten om een database aan te maken. Maar als je lokaal op je eigen pc werkt dan moet je wel eerst een database maken. Natuurlijk kan je via SQL een database maken, maar we gaan het via de gebruikelijke manier doen. Open eerst maar phpMyAdmin. Dit is meestal te vinden op http://localhost/phpmyadmin/, maar bij jou kan dit ook anders zijn. Log in met je inloggegevens. Als je het zelf hebt geinstalleerd is de gebruikersnaam standaard 'root' en het wachtwoord is leeg.
Eenmaal ingelogd dan zie je een input met bij 'create database'. Vul daar de naam in. In deze tutorial gebruik ik de database 'tutorial'. Klik vervolgens op Create. Je database is nu aangemaakt.
Tip: Als je in phpmyadmin een opdracht hebt uitgevoerd zoals het maken van een database, dan zie je ook de SQL die daarvoor is gebruikt.
Een tabel maken in phpmyadmin
We gaan nu een tabel maken in phpmyadmin. Deze gaan we straks gebruiken in de tutorial. Nadat je de database hebt aangemaakt kom je vanzelf op de pagina om iets te doen in deze database. Bovenaan zie je dan ook 'Server: localhost - Database: tutorial '. Is dit niet het geval dan kan je in het linker vlak de database alsnog kiezen.
Je ziet nu de tekst 'Create new table on database tutorial'. Hieronder kan je de tabelnaam opgeven en het aantal velden kiezen. Kies als tabelnaam 'test' en kies voor 3 velden. Klik dan op go. Je ziet nu een hoop dat je kan invullen, maar voordat je je computer uit het raam gooit wil ik even zeggen dat je niet alles hoeft in te vullen. Bij 'Field' vul je de naam voor het veld in. Bij type vul je de datatype in. Bij 'Length/Values1' vul je de het aantal toegestaande tekens in. Dat is verplicht bij VARCHAR.
We gaan nu drie velden maken. De eerst wordt een id. Dit wordt een getal (INT) die zich automatisch optelt. Om te voorkomen dat er twee keer hetzelfde ID komt gebruiken we PRIMARY en om ervoor te zorgen dat het automatisch optelt gebruiken we AUTO_INCREMENT. Het tweede veld wordt een korte tekst (VARCHAR) voor een titel. De derde een bericht waar meer data in moet kunnen (TEXT). Hieronder vertel ik precies wat je moet invullen. De dingen die er niet bij staan hoef je dus ook niet in te vullen.
Veld 1:
Field: id
Type: INT
Index: kies voor primary.
AUTO_INCREMENT: vink deze aan.
Veld 2:
Field: titel
Type: Varchar
Length/Values1: 256 Let op! 256 kan je aanpassen. Nu kan in dit veld maar maximaal 256 tekens.
Veld 3:
Field: bericht
Type: text
Klik nu op 'save'. Als alles goed is gegaan zie je nu de volgende tekst 'Table `tutorial`.`test` has been created.'. Daaronder staat de volgende query die is uitgevoerd om de tabel aan te maken:
- CREATE TABLE `tutorial`.`test` (
- `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
- `titel` VARCHAR( 256 ) NOT NULL ,
- `bericht` TEXT NOT NULL
- ) ENGINE = MYISAM ;
Een MySQL connectie
Als je je computer nog niet uit het raam hebt gegooid kunnen we eindelijk in php beginnen. Eerst moet er een verbinding zijn tussen jou php pagina en de mysql server. Maak een nieuwe php pagina aan 'tutorial.php'.
- <?php
- ?>
Bij host vul je de host van de mysql server in. Standaard is dit altijd 'localhost'. Voor de rest vul je je inloggegevens in die je ook gebruikt op in te loggen in phpnyadmin. Ook vul je de database in wat in dit geval 'tutorial' is. Als je de pagina test dan zie je een witte pagina. Als error_reporting aanstaat dan is je verbinding succesvol. Anders zet error_reporting aan om erachter te komen of de verbinding wel of niet succesvol is.
Een query
Nu we een verbinding hebben kunnen we communiceren met MySQL. Dit doen we met behulp van querys in de vorm van SQL.
- <?php
- ?>
Op de plek van 'SQL' vul je dus de SQL-code in. Meteen zie je een nieuwe functie. De functie mysql_error() geeft de details van wat er precies mis is als er fouten zijn.
Data invoegen
Voordat we data kunnen opvragen uit de database moet er wel eerst data aanwezig zijn. Want nu hebben we niets meer dan een lege tabel. Data invoegen doen we met INSERT. Om je geheugen op te frissen, we hebben de tabel 'test' met de velden 'id', 'titel' en 'bericht'. Het eerste veld gaan we niks mee doen. Deze wordt namelijk automatisch ingevuld. De query houden we nu even heel simpel.
- <?php
- mysql_query("INSERT INTO test SET titel = 'Hallo wereld', bericht = 'Wat een mooie dag'") or die(mysql_error());
- ?>
Met het SET command zeg je dat je de velden wil invullen. Meerdere velden scheid je met komma's. Mensen die al kennis hebben van SQL zullen zeggen dat je ook hetvolgende kan gebruiken:
- INSERT INTO tabel_naam (veld1, veld2) VALUES ('aap', 'noot')
De rede dat ik gebruik maak van SET is omdat ik vind dat het overzichtelijker is. Bovendien gebruik je SET ook bij UPDATE querys en is dat dus nu veel makkelijker om te onthouden.
Ga nu naar phpmyadmin en open de tabel 'test'. Als deze al open is dan klik je op 'browse' links boven. Als het goed is zie je nu hetvolgende:
Plain | Plain new window | code:
- +---++---------------+--------------------+
- | id | titel | bericht |
- +----+---------------+--------------------+
- | 1 | Hallo wereld | Wat een mooie dag |
- +----+---------------+--------------------+
Je weet nu dat het bericht succelvol is geplaatst. Nu moet je de mysql_query die je net hebt geschreven even escapen in tutorial.php door er '//' voor te zetten. Anders krijg je iedere keer als je de pagina herlaad dit bericht overnieuw.
Om het nu meteen goed te doen gaan we een html formulier maken om dit proces automatisch te maken. Onderaan de php-code komt nu het html-formulier:
Nu nog de php-code:
- <?php
- // Controleren op een POST request
- if($_SERVER['REQUEST_METHOD'] == 'POST') {
- // Zeggen dat we gaan inserten
- $SQL = "INSERT INTO test ";
- // Veld titel
- // Veld bericht
- // Query uitvoeren
- // Kijken of de query succesvol is. Zoja dan is $q true, anders false.
- if($q) {
- echo "Het bericht is gepost";
- } else {
- echo "Er is een fout opgetreden.";
- }
- }
- ?>
Tip: Als er een fout is opgetreden kan je dat debuggen met mysql_error.
Zoals je ziet gebruik ik $SQL. Deze vul ik steeds aan. Dit om het even overzichtelijk te houden. De functie mysql_real_escape_string is puur voor de beveiliging tegen SQL-injectie. Deze fuctie moet je dus altijd gebruiken bij het invoegen van alle data dat van buitenaf komt.
Opvragen van data
In feite is dit deel erg gevarieerd. Maar om te voorkomen dat er weer een computer uit het raam vliegt probeer ik het simpel te houden. We gaan nu gebruik maken van SELECT.
- SELECT id, titel, bericht FROM test
Natuurlijk kan je ook in één keer alle velden selecteren:
- SELECT * FROM test
De data die je ontvangt is een MySQL resource. Nu gebruik je de functie mysql_fetch_array om de data op te vragen. Dit kan je dan met een while-loop uitlezen. Plaats nu tussen de huidige php-code en het html formulier de volgende code:
- <h1>Berichten</h1>
- <?php
- // $data is nu een array. De keys zijn de veldnamen en de values is de data dat bij de velden hoort.
- ?>
- <p>
- </p>
- <p>
- <b>Bericht:</b><br />
- </p>
- <hr />
- <?php
- }
- ?>
Tip: gebruik htmlspecialchars() of strip_tags() om te voorkomen dat mensen htmlcode kunnen invoegen.
Tip 2: gebruik nl2br() om te zorgen dat de enters die je in het formulier gebruikt worden omgezet naar <br />. Let wel op dat je dit gebruikt nadat je de html-tags hebt verwijderd om hebt omgezet.
Volgorde van selecteren
Om de volgorde van de berichten te bepalen gebruik je ORDER BY. Met ASC krijg je de standaard volgorde 1,2,3 en met DESC de omgekeerde volgorde 3,2,1.
- SELECT * FROM test ORDER BY id DESC
Bij 'id' vul je dus de veldnaam in. Als je bijvoorbeeld op titel sorteerd dan let hij op de (bij DESC omgekeerde) alphabetische volgorde.
Een bericht selecteren op een voorwaarde
Natuurlijk kan je ook selecteren op voorwaardes. Mijn tabel ziet er nu zo uit:
Plain | Plain new window | code:
- [code]+---++---------------+--------------------+
- | id | titel | bericht |
- +----+---------------+--------------------+
- | 1 | Hallo wereld | Wat een mooie dag |
- +----+---------------+--------------------+
- | 2 | test | vis |
- +----+---------------+--------------------+
Je wilt nu alleen het tweede bericht ontvangen. Hiervoor gebruiken we WHERE. Dus WHERE id = 2. Of where titel = 'test'. Of misschien WHERE id = 2 AND titel = 'test'. Met AND kan je dus meerdere velden controleren. Met OR moet het dus of voldoen aan het ene veld of aan het andere.
Maar als je bijvoorbeeld een bericht uit een gastenboek wil weergeven kijken we gewoon naar het id. Wat als je naar de titel zou kijken en je hebt twee berichten met dezelfde titel, dan weet je nog niet welk bericht van de twee je wilt.
- SELECT * FROM test WHERE id = 2
Om dit in de praktijk te doen gaan we een php-script maken. Voor de overzichtelijkheid maken we een nieuwe php pagina aan genaamd 'tutorial_where.php'. De volgende code:
- <?php
- // MySQL verbinding maken
- // Het id dat we willen opvragen
- $id = 2;
- // Kijken of we resultaat hebben
- // $data is nu een array. De keys zijn de veldnamen en de values is de data dat bij de velden hoort.
- ?>
- <p>
- </p>
- <p>
- <b>Bericht:</b><br />
- </p>
- <?php
- }
- ?>
Nu we weten dat dit werkt een leuk praktijk voorbeeld. Ga weer naar tutorial.php en vervang ALLES door deze code:
- <?php
- // mysql_query("INSERT INTO test SET titel = 'Hallo wereld', bericht = 'Wat een mooie dag'") or die(mysql_error());
- // Controleren op een POST request
- if($_SERVER['REQUEST_METHOD'] == 'POST') {
- // Zeggen dat we gaan inserten
- $SQL = "INSERT INTO test ";
- // Veld titel
- // Veld bericht
- // Query uitvoeren
- // Kijken of de query succesvol is. Zoja dan is $q true, anders false.
- if($q) {
- echo "Het bericht is gepost";
- } else {
- echo "Er is een fout opgetreden.";
- }
- }
- ?>
- <h1>Berichten</h1>
- <?php
- // $data is nu een array. De keys zijn de veldnamen en de values is de data dat bij de velden hoort.
- ?>
- <p>
- <b>Titel:</b> <a href="?id=<?php echo $data['id'];?>"><?php echo htmlspecialchars($data['titel']); ?></a>
- </p>
- <p>
- <b>Bericht:</b><br />
- </p>
- <hr />
- <?php
- }
- ?>
- <h1>Nieuw bericht toevoegen</h2>
- <form action="" method="post">
- <p>
- Titel: <input type="text" name="titel" />
- </p>
- <p>
- Bericht:<br />
- <textarea name="bericht" rows="5" cols="100"></textarea>
- </p>
- <p>
- <input type="submit" value="insert" />
- </p>
- </form>
- <?php
- } else {
- $query = mysql_query("SELECT * FROM test WHERE id = '". mysql_real_escape_string($_GET['id']) ."' ");
- // Kijken of we resultaat hebben
- // $data is nu een array. De keys zijn de veldnamen en de values is de data dat bij de velden hoort.
- ?>
- <p>
- </p>
- <p>
- <b>Bericht:</b><br />
- </p>
- <?php
- }
- }
- ?>
Maar stel a.u.b nu niet de vraag of dit een gastenboek tutorial is want dan gooi ik mijn computer uit het raam.
Data wijzigen
Dit doen we met UPDATE. Deze lijkt in feite heel erg op de INSERT.
- UPDATE test SET titel = 'Appel'
Let op! Nu worden bij alle rows de titels geupdate naar Appel.
Omdat je vaak maar één row wilt update gebruiken we weer WHERE.
- UPDATE test SET titel = 'Appel' WHERE id = 2
Kijk maar even in phpmyadmin of het heeft gewerkt.
Uitgebreide toepassing van UPDATE
Omdat het nu toch op een gastenboek lijkt gaan we ons mooie script weer aanpassen. Kijk nog eens naar deze code:
- // Controleren op een POST request
- if($_SERVER['REQUEST_METHOD'] == 'POST') {
- // De code binnen deze if
- }
- ?>
Dit ga je nu veranderen in dit:
- // Controleren op een POST request
- if($_SERVER['REQUEST_METHOD'] == 'POST') {
- // Zeggen dat we gaan inserten
- $SQL = "UPDATE test ";
- // Veld titel
- // Veld bericht
- // Waar het is gelijk is aan $_GET['id']
- // Query uitvoeren
- // Kijken of de query succesvol is. Zoja dan is $q true, anders false.
- if($q) {
- echo "Het bericht is aangepast";
- } else {
- echo "Er is een fout opgetreden.";
- }
- } else {
- // Zeggen dat we gaan inserten
- $SQL = "INSERT INTO test ";
- // Veld titel
- // Veld bericht
- // Query uitvoeren
- // Kijken of de query succesvol is. Zoja dan is $q true, anders false.
- if($q) {
- echo "Het bericht is gepost";
- } else {
- echo "Er is een fout opgetreden.";
- }
- }
- }
Zoals je ziet is er weinig verschil tussen de UPDATE en de INSERT. Maar nu weer een goede tip om minder code te hoeven schrijven. Verander deze nieuwe code in dit:
- if($_SERVER['REQUEST_METHOD'] == 'POST') {
- // Zeggen dat we gaan inserten of updaten
- // Veld titel
- // Veld bericht
- // Waar het is gelijk is aan $_GET['id']
- // Query uitvoeren
- }
- // Kijken of de query succesvol is. Zoja dan is $q true, anders false.
- if($q) {
- echo "Het bericht is gepost of aangepast";
- } else {
- echo "Er is een fout opgetreden.";
- }
- }
Dan moet je nog het formulier aanpassen en een linkje maken. De complete code van tutorial.php wordt dan nu:
- <?php
- // mysql_query("INSERT INTO test SET titel = 'Hallo wereld', bericht = 'Wat een mooie dag'") or die(mysql_error());
- // Controleren op een POST request
- if($_SERVER['REQUEST_METHOD'] == 'POST') {
- // Zeggen dat we gaan inserten
- $SQL = "UPDATE test ";
- // Veld titel
- // Veld bericht
- // Query uitvoeren
- // Kijken of de query succesvol is. Zoja dan is $q true, anders false.
- if($q) {
- echo "Het bericht is gepost";
- } else {
- echo "Er is een fout opgetreden.";
- }
- } else {
- // Zeggen dat we gaan inserten
- $SQL = "INSERT INTO test ";
- // Veld titel
- // Veld bericht
- // Query uitvoeren
- // Kijken of de query succesvol is. Zoja dan is $q true, anders false.
- if($q) {
- echo "Het bericht is gepost";
- } else {
- echo "Er is een fout opgetreden.";
- }
- }
- }
- // Kijken of we in de verander-modus zitten
- $query = mysql_query("SELECT * FROM test WHERE id = '". mysql_real_escape_string($_GET['id']) ."' ");
- // Kijken of we resultaat hebben
- // Deze variabelen hebben we zo nodig voor het formulier
- } else {
- echo 'Bericht bestaat niet.';
- exit;
- }
- } else {
- ?>
- <h1>Berichten</h1>
- <?php
- // $data is nu een array. De keys zijn de veldnamen en de values is de data dat bij de velden hoort.
- ?>
- <p>
- <b>Titel:</b> <a href="?id=<?php echo $data['id'];?>"><?php echo htmlspecialchars($data['titel']); ?></a>
- <a href="?action=verander&id=<?php echo $data['id'];?>">Veranderen</a>
- </p>
- <p>
- <b>Bericht:</b><br />
- </p>
- <hr />
- <?php
- }
- }
- echo ($verandermodus) ? '<h1>Bericht aanpassen</h1>' : '<h1>Nieuw bericht toevoegen</h2>';
- ?>
- <form action="" method="post">
- <p>
- Titel: <input type="text" name="titel" value="<?php echo $titel;?>" />
- </p>
- <p>
- Bericht:<br />
- <textarea name="bericht" rows="5" cols="100"><?php echo $bericht;?></textarea>
- </p>
- <p>
- <input type="submit" value="insert" />
- </p>
- </form>
- <?php
- } else {
- $query = mysql_query("SELECT * FROM test WHERE id = '". mysql_real_escape_string($_GET['id']) ."' ");
- // Kijken of we resultaat hebben
- // $data is nu een array. De keys zijn de veldnamen en de values is de data dat bij de velden hoort.
- ?>
- <p>
- </p>
- <p>
- <b>Bericht:</b><br />
- </p>
- <?php
- } else {
- echo 'Bericht bestaat niet.';
- }
- }
- ?>
Verwijderen van berichten
Verwijderen doe je met DELETE.
- DELETE FROM test WHERE id = 2
Datatypes
Nu heb ik al heel veel uitgelegd. In deze tutorial hebben we tot nu toe alleen INT, VARCHAR en TEXT gebruikt. Maar in de praktijk zal je meer gaan gebruiken.
INT: een cijfer
VARCHAR: een string
TEXT: voor bijvoorbeeld een bericht
LONGTEXT: zelfde als TEXT maar ondersteund meer data.
DATE: voor het opslaan van datums (mm-dd-yyyy)
TIME: voor het opslaan van tijd (hh:mm:ss)
DATETIME: datum en tijd samen (mm-dd-yyyy hh:mm:ss)
>> Voor een uitgebreid overzicht: http://www.w3schools.com/SQL/sql_datatypes.asp
Tot slot
Als je dit leest dan is je computer nog heel en ligt niet op straat. Ik hoop dat jullie de basis nu onder de knie hebben. Met behulp van deze tutorial zou je in principe zelf een simpel gastenboek kunnen maken. Wellicht komt later een nieuwe tutorial waar verder inga op SQL. Dan wil ik JOIN, LIMIT en nog een aantal sql functies behandelen.
Lees de forum regels



