Mysql met Php
Inleiding
Mysql is handig voor berichten van een forum of gasten boek op te slaan of de van de gebruikers bij een leden systeem. De bases van php moet je wel kennen. Ik schrijf het hier doormiddel van een voorbeeld ( een gastenboek)
De volgende dingen bespreek ik hier:
- Verbinding maken
- Tabel maken.
- Gegevens uit de tabel halen.
- Gegevens uit de tabel veranderen.
Verbinding maken
Voor je begint met het werken met Mysql moet je altijd eerst een connectie met de database. Dan is hier het sript kun je de in de pagina verbinden.php zetten en alle pagina’s waar je met Mysql werkt include “verbinden.php”; zetten
001 002 003 004 005 006 007 008 009 010 011 012 013 |
<? $host = "localhost"; // de host van de DATABASE (meestal localhost). $gebruikersnaam = "***"; // De gebruikersnaam van de DATABASE. $wachtwoord = "****"; // Het wachtwoord van de DATABASE $db = "*****"; // de DATABASE naam. // en nu de verbinding maken. mysql_connect($host,$gebruikersnaam,$wachtwoord); mysql_select_db($db) OR die(mysql_error); ?> |
Tabelen maken
In een tabel wordt alle informatie opgeslagen en is die makkelijk er uit de halen te verwijderen en de veranderen. Voor ik een voorbeeld geef eerst de meest gebruikte data types.
De data types:
Getallen:
TINYINT. getal tussen de -128 en 127 bevatten. Als je het. UNSIGNED maakt, dan is het een getal tussen de 0 en 255.
SMALLINT. getal van -32768 tot 32767. UNSIGNED is het 0 tot 65535.
MEDIUMINT. getal van -838860 tot 838860, UNSIGNED is dit 0 tot 16777215.
INT. getal van -2147483648 tot 2147483647 en UNSIGNED is het 0 tot 4294967295.
BIGINT. getal van -9223372036854775808 tot 9223372036854775807. En unsigned dus 0 tot 1844674407370955161
FLOAT. Kommagetal van 32 tekens
DOUBLE. Kommagetal van 64 tekens
Datum en tijd:
DATE. Geeft de tijd aan van 1000-01-01 00:00:00 tot 9999-12-31 23:59:59
TIMESTAMP. De tijd in seconden vanaf 1970-01-01 00:00:00 tot aan nu.
TIME. De tijd van -838:59:59 tot 838:59:59
YEAR. Dit kan in 2 of 4 tekens. Standaard is met 4 tekens. Dan is het van 1901 tot 2155 en 0000. In 2 tekens is het van 70 tot 69.
Strings:
CHAR. is een string met een vast aantal tekens, van 0 tot 255.
VARCHAR. (Variable Character). Je er strings in zetten met verschillend aantal karakters van 0 tot 255.
TinyBLOB en TinyTEXT. Een BLOB (binairy large object) of TEXT met een maximale lengte van 255 tekens
BLOB en TEXT. Een BLOB of TEXT met een maximale lengte van 65,535 tekens.
MEDIUMBLOB en MEDIUMTEXT. Een BLOB of TEXT met een maximale lengte van 16,777,215 tekens.
LONGBLOB en LONGTEXT. Een BLOB of TEXT met een maximale lengte van 4,294,967,295 tekens.
ENUM(‘value1′,’value2′,…). Een string object dat geen of 1 waarde kan hebben. De waarden moeten bij het maken van de tabel/kolom aangegeven worden, in het voorbeeldje
dus value1 of value2. Er is een maximum van 65,535 mogelijkheden.
SET(‘value1′,’value2′,…). Hetzelfde als ENUM alleen hier met maximaal 64 tekens.
Dit zijn zo wat de meest gebruikte data types.
DEFAULT. Hiermee geef je een standaard waarde aan.
Vb.
CREATE TABLE `gastenboek` (
`naam` VARCHAR( 10 ) DEFAULT ‘anoniem’ NOT NULL
);
AUTO_INCREMENT word er elke keer 1 bijgeteld zodat er elke keer een uniek getal komt gemaakt word.
Vb.
CREATE TABLE `gastenboek` (
`id` INT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `id` )
);
Primaire sleutel. Hiermee word het zoeken in de ze kolom versneld. (geeft aan dat hier het meeste op gezocht moet worden).
Vb.
CREATE TABLE `gastenboek` (
`id` INT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `id` )
);
Index. Wordt automatisch gesorteerd op de kolom die je index hebt gemaakt.
Vb.
CREATE TABLE `gastenboek` (
`naam` VARCHAR(25) NOT NULL ,
INDEX ( `naam` )
);
Unique. In de hele kolom mag maar 1 keer de zelfde waarde voorkomen
Vb.
CREATE TABLE `gastenboek` (
`naam` VARCHAR( 25 ) NOT NULL ,
UNIQUE (
`naam`
)
);
NOT NULL. Er moet iets worden ingevuld als er niets ingevuld hoeft te worden kies je NULL.
Vb.
CREATE TABLE `gastenboek` (
`naam` VARCHAR( 25 ) NOT NULL ,
UNIQUE (
`naam`
)
);
Unsigned. Er zijn alleen positieve getallen mogelijk
Vb.
CREATE TABLE `gastenboek` (
`id` INT UNSIGNED NOT NULL
);
Je kan ook het maximaal aantal tekens van een kolom maken door achter het data type het max. tekens te zetten.
Vb.
CREATE TABLE `gastenboek` (
`naam` VARCHAR( 25 ) NOT NULL ,
);
Tabel
en dan hier de voorbeeld tabel van een gastenboek
CREATE TABLE `gastenboek` (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
naam VARCHAR(50) NOT NULL,
bericht TEXT NOT NULL,
ip VARCHAR(20) NOT NULL
);
Dat was de tabel de kan je dan invoegen in je Mysql database management bijvoorbeeld phpmyadmin.
Gegevens uit tabel halen
het script:
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 |
<? // Verbinding maken !!!!! $select = "SELECT * FROM gastenboek ORDER BY kolom DESC"; $query = mysql_query($select) OR die(mysql_error()); $aantal = mysql_num_rows(); if ($aantal =0) {
echo "Er zij geen berichte"; } else {
while ($lijst = mysql_fetch_array($query)); {
echo "Bericht id: $lijst->id<br>"; echo "van: $lijst->naam<br>"; echo "Bericht: <br>$lijst->bericht<br><br>"; } } ?> |
* haalt alles uit de tabel maar kan je ook vervangen voor de kolomnaam bij meerdere kolommen zet je er komma tussen.
Vb.
001 002 003 |
<?php $select = "SELECT id, naam, bericht FROM gastenboek ORDER BY kolom DESC"; ?> |
$aantal = mysql_num_rows(); telt het aantal gevonden rijen $aantal geeft dat het aantal rijen weer.
while ($lijst = mysql_fetch_array($query)); zorgt ervoor dat het gene tussen {} zo vaak word weergegevan als er gevonden kolomen zijn maar dan steeds met andere gegevens. Om een gegeven op te vragen typ je $lijst->kolomnaam vb. $lijst->naam. Voor maar een rij weer te geven gebruik je $lijst = mysql_fetch_array($query) dan word allen de eerst gevonden resultaat weergegeven
WHERE haalt de gegevens uit de database waar het aangegeven kolom het gegeven bevat.
Vb.
001 002 003 |
<?php $select = "SELECT * FROM gastenboek WHERE naam='pietje' ORDER BY kolom DESC"; ?> |
Nu selecteert hij nog alleen de rijen waar de naam pietje is om nog een andere naam te selecteren kan je er achter plakken OR naam=’jantje’ je kan ook nog zeggen dat een andere kolom een speciale waarde moet hebben door er AND ip=’192.424.234′ achter te plakken dan kan je allen de berichten van de persoon met dat ip adres zien en pietje heet.
Om de gegevens in een bepaalde volgorde de plaatsen moet de het onderstaande achter WHERE kolom=’gegeven’ zetten.
- ORDER BY kolom DESC (voor volgorde op datum van kolom)
- ORDER BY kolom ASC (voor volgorde van alfabetische volgorde van kolom)
vb.
001 002 003 |
<?php $select = "SELECT * FROM gastenboek WHERE naam='pietje' ORDER BY kolom DESC"; ?> |
Dat was gegevens er uit halen, lijkt me zo ook allemaal duidelijk.
Gegevens veranderen
hier gebruik ik niet helemaal het script voor het gastenboek anders zou het te groot worden (het is al 8 bladzijdes).
001 002 003 004 005 006 007 008 |
<? // vebinding maken !!! $update = "UPDATE gastenboek SET bericht ='$nieuw_bericht' WHERE id ='$id'"; $query = mysql_query($update) OR die(mysql_error()); ?> |
$nieuw_bericht is de nieuwe waarde van bericht.
En dan word gedaan waar id $id is, $id moet is dan meestal een getal.
SET verandert de inhoud van de kolom naar gegeven, je kan meerdere gegevens veranderen door er na AND naam=’$nieuwe_naam’ aan toe te voegen.
Hier moet je wel WHERE gebruiken anders zou hij alles rijen veranderen.

Categories:
Tags: |