MySQL tutorial deel 2

Home / Programmeren / Php / Mysql2


<< Terug naar de eerste MySQL tutorial

Kaarten invoegen

Omdat we niet de hele tijd met phpMyAdmin willen werken, en omdat het vaak ook niet ander kan, gaan ik nu uitleggen hoe je kaarten moet aanmaken met behulp van PHP, zonder phpMyAdmin. Als je het vorige deel hebt gesnapt is dit een koud kunstje, want het lijkt wel heel erg op het ophalen ervan. We gaan nu een kaart maken in de database testdatabase, in de tabel testtabel. De persoon is Jan en het telefoonnummer is 020-4567892. Dit gaat op de volgende manier:

<?php
mysql_connect("localhost","root","");
mysql_select_db("testbase");
$commando="INSERT INTO `testtabel` ('id','naam','telefoonnummer') VALUES (NULL,'Jan','020-4567892')";
mysql_query($commando);
?>

Als je naar het bovenstaande voorbeeld kijkt is de gelijkenis erg groot. Ook hier wordt weer een verbinding gemaakt, een database gekozen, een commando opgesteld en uitgevoerd. De enige verschillen zijn dat het commando anders is, en dat er geen resultaat wordt opgeslagen. Dit is ook niet nodig, want er wordt niets uitgehaald. Omdat het niet nieuw is ga ik alleen de SQL (het commando dus) doorspreken. INSERT INTO betekend 'stop in', `testtabel` is de naam van de tabel waar het in gaat, ('id','naam','telefoonnummer') zijn de velden waar iets ingaat, VALUES betekend zoiets als waardes en als achteraan staan de waardes die in de tabel gaan.

Zoals je hebt gezien staat er dat de waarde NULL in het veld id gaat. (de eerste waarde in het rijtje gaat in het eerste veld in het andere rijtje, de nummering komt overeen) NULL is echter een speciale waarde, dit betekend dat er niets in het veld id gaat. Er hoeft ook niets in, want de waarde er komt automatisch een waarde, omdat de optie auto_increment is ingeschakeld, en deze zorgt ervoor dat de inhoud automatisch wordt opgehoogd. De waardes die in de velden 'naam' en 'telefoonnummer' gaan zouden voorzich moeten spreken.

Alleen bepaalde kaarten ophalen

In de vorige tutorial heb je gezien hoe je de eerste kaart uit een database kunt halen. Waarschijnlijk wil je niet altijd de eerste ophalen, maar doms ook een met een met een speciale waarde, in het voorbeeld de kaart met de naam Jan. Dit is helemaal niet moeilijk, en eigenlijk vrij logisch. Je voegt namelijk aan het commando een voorwaarde toe. Je vraagt eigenlijk: "Selecteer kaarten van testtabel waarbij de naam Jan is". In SQL wordt dit:

<?php
mysql_connect("localhost","root","");
mysql_select_db("testbase");
$commando="SELECT * FROM `testtabel` WHERE naam='Jan'";
$result=mysql_query($commando);
$array=mysql_fetch_array($resultaat);

echo "Hallo bezoeker, <br />";
echo "De inhoud van de eerste kaart is:<br />";
echo "Naam: " . $array['naam'] . "<br />";
echo "Telefoonnummer: " . $array['telefoonnummer'] . "<br />";
echo "En het identificatienummer is: " . $array['id'];
?>

De bezoeker krijgt nu te zien dat de inhoud van de eerste kaart is: Naam: Jan, Telefoonnummer: 020-4567892 en het Identificatienummer is 2. Overigens kan dat nummer anders zijn, dat ligt aan hoeveel je al geëxperimenteerd hebt.

Meerdere kaarten tegelijk ophalen

Waarschijnlijk snap je nu hoe je een kaart in een database stopt, en hoe je hem inleest. Waarschijnlijk wil je vaak niet een kaart tegelijk inlezen, maar een hele hoop tegelijk. Dit verschilt eigenlijk weinig van de vorige scriptjes, alleen wordt er nu een lus ingebouwd om de kaarten op te halen. Als je niet meer weet wat een lus is, kijk dan even in de tutorial lussen. Hier is het script:

<?php
mysql_connect("localhost","root","");
mysql_select_db("testbase");
$commando="SELECT * FROM `testtabel`";
$result=mysql_query($commando);

echo "Hallo bezoeker, <br />";
while($array=mysql_fetch_array($resultaat)){
echo "De inhoud van een kaart:<br />";
echo "Naam: " . $array['naam'] . "<br />";
echo "Telefoonnummer: " . $array['telefoonnummer'] . "<br />";
echo "En het identificatienummer is: " . $array['id'];
}
?>

Als het goed is krijgt de bezoeker dit te zien. Het script even kort uitgelegd: Eerst wordt weer verbinding gemaakt met de MySQL server, en de database wordt geselecteerd. Vervolgens worden alle kaarten opgevraagd met het commando SELECT * FROM `testdatabase`. Dat komt het speciale, met een lus worden de kaarten weergegeven. De lus stopt namelijk als er geen kaarten meer zijn. Hoeveel kaarten je ook in de database stopt, telkens geeft hij ze allemaal weer.

Kaarten updaten

Het kan misschien voorkomen dat informatie veranderd en dat er data op de kaart gewijzigd moet worden. Hier is een speciaal commando voor. Deze heet UPDATE. Een voorbeeld: Het telefoonummer van Jan veranderd in 021-2233445. Nu moet je dus zeggen dat op de kaart van Jan het telefoonnummer moet worden aangepast. Dit gaat zo:

$commando="UPDATE `testdatabase` SET telefoonnummer='021-2233445' WHERE naam='jan'";

Zoals je ziet wordt er gevraagd om het telefoonnummer te veranderen op alle kaarten waar de naam Jan is. In totaal wordt het dus:

<?php
mysql_connect("localhost","root","");
mysql_select_db("testbase");
$commando="UPDATE `testdatabase` SET telefoonnummer='021-2233445' WHERE naam='jan'"; $result=mysql_query($commando);
?>

Wil je meerdere dingen tegelijk vervangen, dan moet je die scheiden met een komma. Het commando wordt dan:

$commando="UPDATE `testdatabase` SET telefoonnummer='021-2233445', naam='jan-klaas' WHERE naam='jan'";

In dit voorbeeld werd dus zowel de naam als het telefoonnummer veranderd. Snap je het niet helemaal, lees het geheel dan nog even rustig door.

Kaarten verwijderen

Vervolgens is er nog een laatste mogelijkheid, om kaarten te verwijderen. Je krijgt dan dit:

$commando="DELETE FROM `testdatabase` WHERE naam='jan'";

In dit voorbeeld werd de kaart waarbij de naam Jan is verwijderd.