Gegevens aan een tabel toevoegen

Info 
Door: Mirax Moeilijkheidsgraad: 2/3
Views:16.919Reacties: 14(Bekijken)
  Log in om zelf te reageren
 Waardering:7.7/10 (3 stemmen)

Basiscursus MySQL» Inleiding MySQL | Verbinding maken met de database | Tabellen maken | Gegevens aan een tabel toevoegen | Gegevens uit de database halen | Gegevens aanpassen en verwijderen




Nu je eenmaal een tabel gemaakt hebt, wordt het tijd om er wat in te stoppen. We beginnen weer met de query die je daarvoor nodig hebt. Het implementeren in de PHP kan dan weer met mysql_query().

Gegevens invoegen
Om maar direct met de deur in huis te vallen.

#Code
1
2
INSERT INTO `producten`( `naam`)
VALUES('Schoenen');


Dit is een query waarmee je een product aan de tabel kunt toevoegen die we net gemaakt hebben. Op deze manier krijg je een rij die als id 1 heeft (die automatisch oploopt), als naam 'Schoenen' (die we net invoerden) en als prijs 100 (de standaardwaarde). Nu blijkt ook de sterke kant van AUTO_INCREMENT, we hoeven de unieke id niet meer expliciet te vermelden.

Je kunt ook direct een getal invullen in de kolom prijs, dat doe je zo.

#Code
1
2
INSERT INTO `producten`( `naam`, `prijs`)
VALUES('Sokken', 5);


Waar je op moet letten is dat het aantal kolommen dat je wilt invullen in je tabel producten (tussen haakjes op de eerste regel), even groot is als het aantal waardes dat je meegeeft in je query (tussen haakjes op de tweede regel). Bovendien moet de volgorde van je kolommen, overeenkomen met de volgorde van de waarden, dit gaat dus niet werken:

#Code
1
2
INSERT INTO `producten`( `naam`, `prijs`)
VALUES(5, 'Sokken');


Implementeren in PHP
Dit kan je weer direct weer met mysql_query() uitvoeren, maar het wordt pas leuk als je een formuliertje gebruikt! Even een voorbeeldje dat je zelf mag uitpluizen.

formulier.html
#Code
1
2
3
4
5
<form method="post" action="verwerk.php">
Naam product: <input type="text" name="naam" maxlength="100" /><br />
Prijs &euro;: <input type="text" name="prijs" /><br />
<input type="submit" value="Product toevoegen aan de database!" />
</form>


verwerk.php
#Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$qProduct = 'INSERT INTO `producten`( `naam`, `prijs`)
VALUES('
' . $_POST['naam'] . '',' . $_POST['prijs'] . ');';
$rProduct = mysql_query( $qProduct );
if( $rProduct )
{
 
echo 'Product: ' . $_POST['naam'] . ' met prijs: ' . $_POST['prijs'] . ' werd toegevoegd aan de database 

onder id: '
 . mysql_insert_id();
}
else
{
 
echo 'Er ging iets mis: ' . mysql_error();
}
?>


De input van een gebruiker moet je nooit vertrouwen, dus eigenlijk moet je wel controleren wat de gebruiker invult. Dit laat ik aan jou over. Overigens heb ik stiekem een nieuwe functie gebruikt: mysql_insert_id(), deze geeft de id terug.

Het stoppen van informatie in een database is een ding, je wilt de gegevens ook weer op kunnen vragen. Hierover gaat het volgende deel.

«Tabellen maken Gegevens uit de database halen »

14 reacties
hellboy3331 Geplaatst op 29-08-2008 om 23:09
 

Regular
edit: Ik heb de fout gevonden. Ik was de hoofdletter in de variabele $qProduct vergeten. Helaas werkt het nog niet, mijn methode pakt hij niet aan. Hoe krijg ik het voor elkaar dat hij die parameters van VALUES correct leest?

Edit 2: De methode van Peck blijkt wel correct te werken. Toch snap ik noch niet helemaal waarom die verschillende aanhalingstekens nu precies op die plaatsen staan, en hoe de parser dat interpreteert.

Ik vond jouw regel met al die ' ' quotes nogal verwarrend. Door enkel $_POST['naam'] en $_POST['prijs'] te gebruiken als parameters, kreeg ik een error. Ik heb het dan dus maar zo gedaan:

#Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$naam = $_POST['naam'];
$prijs = $_POST['prijs'];
$qProduct = 'INSERT INTO Producten ( naam, prijs ) 
VALUES( $naam, $prijs );'
;
$rProduct = mysql_query ( $qproduct );
if ( $rProduct )
{
echo 'Product: ' . $_POST['naam'] . 'met prijs: ' . $_POST['prijs'] . 'werd toegevoegd aan de database
 onder id: '
 . mysql_insert_id();
}
else
{
echo 'Er ging iets mis: ' . mysql_error();
}
?>


Nu krijg ik echter error: Query was empty als ik beide velden invul en op de knop klik. Nochtans bestaan ze uit voldoende karakters, dus vanwaar deze error dan? De variabelen worden toch eerst een waarde toegewezen voor ze gebruikt worden ?
dj170590 Geplaatst op 30-04-2008 om 23:22
 

Regular
Ja aardige uitleg.
Ik vind alleen de eerste 2 codes niet erg goed uitgelegd en dat kan zoals dat bij mij deed bij mensen voor verwarring zorgen. Vele zoals ik hebben totaal geen idee wat MySQL is en wat voor tekens je eromheen mag plaatsen.
Totibbs Geplaatst op 04-02-2008 om 10:29
 

Regular
Als ik gegevens aan de tabel wil toevoegen, dan krijg ik de foutmelding: Fout: Table 'my_db.persononeel' doesn't exist

Ik gebruik Apache en WinMySQL op Windows XP.
Ik heb het idee dat de computer niet op de juiste plek zoekt want als ik zelf op mijn harddisk kijk zie ik wel een map my_db staan met de bestanden personeel.frm ; personeel.myd en personeel.myi

Waar kan ik instellen dat de computer op de juiste plek zoekt?
Totibbs Geplaatst op 04-02-2008 om 10:25
 

Regular
Als ik gegevens aan de tabel wil toevoegen, dan krijg ik de foutmelding: Fout: Table 'my_db.persononeel' doesn't exist

Ik gebruik Apache en WinMySQL op Windows XP.
Ik heb het idee dat de computer niet op de juiste plek zoekt want als ik zelf op mijn harddisk kijk zie ik wel een map my_db staan met de bestanden personeel.frm ; personeel.myd en personeel.myi

Waar kan ik instellen dat de computer op de juiste plek zoekt?
Mirax Geplaatst op 27-11-2007 om 10:07
 

Moderator
Zie daarvoor ook: http://www.websitemaken.be/index.php?page=show_item&id=856

Pagina 1 2 3 

Om te reageren moet je ingelogd zijn.
Nog niet geregistreerd? Doe dat dan nu!


Terug naar gewone pagina

Websitemaken wordt gehost door Nucleus.be, uw Hosting Solution Builder