Database phpMyadmin
deze database bestaat uit :
1 lidnr
2 naam
3 achternaam
4 woonplaats
4 leeftijd
Nu heb ik een pagina waarmee ik leden kan toevoegen. Die werkt prima.
Nu moet ik een pagina maken waarmee ik de gegevens over de leden kan updaten.
Het liefst zoek ik een formulier waar ik de naam kan invoeren en dat een andere pagina de naam met de overige gegevens weergeeft en aanpassingen kan doen.
het formulier waarmee ik leden kan toevoegen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$host="localhost";
$gebruiker="xxxxxx";
$wachtwoord="xxxxx$";
$verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
de gegevens worden niet vastgelegd in de leden-tabel");
$naam=strip_tags(stripslashes(trim($_POST["naam"])));
$achternaam=strip_tags(stripslashes(trim($_POST["achternaam"])));
$woonplaats=strip_tags(stripslashes(trim($_POST["woonplaats"])));
$leeftijd=strip_tags(stripslashes(trim($_POST["leeftijd"])));
$sql = "INSERT INTO twandatabase.leden( naam, achternaam, woonplaats, leeftijd ) VALUES ('$naam','$achternaam','$woonplaats','$leeftijd')";
echo "<p>$sql</p>";
#mysql_select_db('twandatabase');
echo "<p>OK</p>";
$retval = mysql_query($sql);
echo "<p>OK</p>";
if (! $retval)
{
die("Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: ".mysql_error());
}
else
{
echo "De gegevens werden correct weggeschreven naar de database";
}
mysql_close($verbinding);
?>
$host="localhost";
$gebruiker="xxxxxx";
$wachtwoord="xxxxx$";
$verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
de gegevens worden niet vastgelegd in de leden-tabel");
$naam=strip_tags(stripslashes(trim($_POST["naam"])));
$achternaam=strip_tags(stripslashes(trim($_POST["achternaam"])));
$woonplaats=strip_tags(stripslashes(trim($_POST["woonplaats"])));
$leeftijd=strip_tags(stripslashes(trim($_POST["leeftijd"])));
$sql = "INSERT INTO twandatabase.leden( naam, achternaam, woonplaats, leeftijd ) VALUES ('$naam','$achternaam','$woonplaats','$leeftijd')";
echo "<p>$sql</p>";
#mysql_select_db('twandatabase');
echo "<p>OK</p>";
$retval = mysql_query($sql);
echo "<p>OK</p>";
if (! $retval)
{
die("Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: ".mysql_error());
}
else
{
echo "De gegevens werden correct weggeschreven naar de database";
}
mysql_close($verbinding);
?>
Gewijzigd op 17/05/2015 18:07:25 door Twan de Langen
Regel 5: gebruik mysqli, de oude mysql_-functies gaan binnenkort verdwijnen.
Regel 6: gebruik een gewone afhandeling. Je footer mag best verschijnen als de verbinding niet lukt. Komt niet vaak voor, maar toch.
Regel 10 t/m 13: ga mysqli_escape_string() gebruiken met een foreach():
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
foreach($_GET as $key => $value)
{
$$key = mysqli_escape_string(trim(strip_tags($value)));
}
?>
foreach($_GET as $key => $value)
{
$$key = mysqli_escape_string(trim(strip_tags($value)));
}
?>
Regel 17: haal je variabelen uit de quote. Dat voorkomt gedoe met add_slashes() etc:
Code (php)
1
2
3
2
3
<?php
$sql = "INSERT INTO twandatabase.leden ( naam, achternaam, woonplaats, leeftijd ) VALUES ('".$naam."','".$achternaam."','".$woonplaats."','".$leeftijd."'); ";
?>
$sql = "INSERT INTO twandatabase.leden ( naam, achternaam, woonplaats, leeftijd ) VALUES ('".$naam."','".$achternaam."','".$woonplaats."','".$leeftijd."'); ";
?>
Regel 23 en 25 kunnen in 1:
Regel 33 is onnodig. Dat gebeurt vanzelf aan het einde van het script.
mysqli_close() gebruik je vooral als je langdurende queries gebruikt.
Probeer het begrip database en tabellen van elkaar te onderscheiden.
Op een database-server kunnen meerdere databases aanwezig zijn. In deze databases kunnen verschillende tabellen aanwezig zijn. Een tabel bestaat uit een aantal kolommen. Bijv. id, naam, lidnr enz.
Elke regel of rij die aan een tabel wordt toegevoegd heet een record.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[sql-server]
|
|- [database] webshop
| |
| |---- [tabel] customers
| | |
| | |---- [kolom] customer_id
| | |---- [kolom] name
| | |---- [kolom] email
| |
| |---- [tabel] orders
| |
| |---- [kolom] order_id
| |---- [kolom] description
| |---- [kolom] amount
|
|- [database] webshop_backup
|
|---- [tabel] customers
| |
| |---- [kolom] customer_id
| |---- [kolom] name
| |---- [kolom] email
|
|---- [tabel] orders
|
|---- [kolom] order_id
|---- [kolom] description
|---- [kolom] amount
|
|- [database] webshop
| |
| |---- [tabel] customers
| | |
| | |---- [kolom] customer_id
| | |---- [kolom] name
| | |---- [kolom] email
| |
| |---- [tabel] orders
| |
| |---- [kolom] order_id
| |---- [kolom] description
| |---- [kolom] amount
|
|- [database] webshop_backup
|
|---- [tabel] customers
| |
| |---- [kolom] customer_id
| |---- [kolom] name
| |---- [kolom] email
|
|---- [tabel] orders
|
|---- [kolom] order_id
|---- [kolom] description
|---- [kolom] amount
Daarnaast krijg ik vlekken in mijn nek als ik een kolom met de naam 'leeftijd' zie. :P Dit kun je beter omzetten naar geboortedatum. Je kunt dan de leeftijd uitrekenen en je hoeft niet het hele jaar de verjaardagskalender bij te houden :-)
Dan iets in trant van antwoord op je vraag: CRUD
Create
Read
Update
Delete
Create query:
Code (php)
1
INSERT INTO leden (lidnr, naam, achternaam, woonplaats, geb_datum) VALUES (12345, 'Frank', 'NB', 'Lisse', '2001-01-02')
Read query:
Update query:
Delete query:
Gewijzigd op 17/05/2015 20:08:48 door Frank Nietbelangrijk
Iemand sugesties ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$host="localhost:3307";
$gebruiker="xxxxxx";
$wachtwoord="xxxx";
$verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
de gegevens worden niet vastgelegd in de leden-tabel");
$lidnr = $_POST['lidnr'];
$naam = $_POST['Naam'];
$achternaam = $_POST['achternaam'];
$woonplaats = $_POST['woonplaats'];
$leeftijd = $_POST['leeftijd'];
$SQL = "UPDATE twandatabase.leden ".
"SET lidnr = $lidnr ".
"WHERE lidnr = $lidnr" ;
$result = mysql_query($SQL);
echo "<h2>Er is content aangepast!</h2>";
?>
$host="localhost:3307";
$gebruiker="xxxxxx";
$wachtwoord="xxxx";
$verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
de gegevens worden niet vastgelegd in de leden-tabel");
$lidnr = $_POST['lidnr'];
$naam = $_POST['Naam'];
$achternaam = $_POST['achternaam'];
$woonplaats = $_POST['woonplaats'];
$leeftijd = $_POST['leeftijd'];
$SQL = "UPDATE twandatabase.leden ".
"SET lidnr = $lidnr ".
"WHERE lidnr = $lidnr" ;
$result = mysql_query($SQL);
echo "<h2>Er is content aangepast!</h2>";
?>
Verder raad ik aan om foutafhandeling in te bouwen:
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/algemene-structuur/1930/
Los daarvan ben je ook gevoelig voor SQL-injection, waarmee anderen je query kunnen manipuleren met gevaarlijke gevolgen van dien. Gebruik dus mysql_real_escape_string() om je $_POST-variabelen.
Verder raad ik aan om je te verdiepen in de MySQLi-functies.
Beetje.... onnodig?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
$host="localhost:3307";
$gebruiker="werknemer1";
$wachtwoord="1Kliko123$";
$verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
de gegevens worden niet vastgelegd in de leden-tabel");
$naam=strip_tags(stripslashes(trim($_POST["naam"])));
$achternaam=strip_tags(stripslashes(trim($_POST["achternaam"])));
$woonplaats=strip_tags(stripslashes(trim($_POST["woonplaats"])));
$leeftijd=strip_tags(stripslashes(trim($_POST["leeftijd"])));
$sql = " Update twandatabase.leden SET `Naam`=$naam,`Achternaam`=$achternaam,`Woonplaats`=$woonplaats,`Leeftijd`=$leeftijd WHERE naam =$naam ";
echo "<p>$sql</p>";
#mysql_select_db('twandatabase');
echo "<p>OK</p>";
$retval = mysql_query($sql);
echo "<p>OK</p>";
if (! $retval)
{
die("Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: ".mysql_error());
}
else
{
echo "De gegevens werden correct weggeschreven naar de database";
}
mysql_close($verbinding);
?>
$host="localhost:3307";
$gebruiker="werknemer1";
$wachtwoord="1Kliko123$";
$verbinding=mysql_connect($host,$gebruiker,$wachtwoord);
if (!$verbinding) die ("<br>Kan geen verbinding maken met de database,
de gegevens worden niet vastgelegd in de leden-tabel");
$naam=strip_tags(stripslashes(trim($_POST["naam"])));
$achternaam=strip_tags(stripslashes(trim($_POST["achternaam"])));
$woonplaats=strip_tags(stripslashes(trim($_POST["woonplaats"])));
$leeftijd=strip_tags(stripslashes(trim($_POST["leeftijd"])));
$sql = " Update twandatabase.leden SET `Naam`=$naam,`Achternaam`=$achternaam,`Woonplaats`=$woonplaats,`Leeftijd`=$leeftijd WHERE naam =$naam ";
echo "<p>$sql</p>";
#mysql_select_db('twandatabase');
echo "<p>OK</p>";
$retval = mysql_query($sql);
echo "<p>OK</p>";
if (! $retval)
{
die("Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: ".mysql_error());
}
else
{
echo "De gegevens werden correct weggeschreven naar de database";
}
mysql_close($verbinding);
?>
daarbij krijg ik deze foutcode. De naam Piet bestaat wel in de database
Update twandatabase.leden SET `Naam`=Piet,`Achternaam`=Piraatje,`Woonplaats`=spijkenisse,`Leeftijd`=23 WHERE naam =Piet
OK
OK
Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: Unknown column 'Piet' in 'where clause'
SET Naam='".$naam."',...........
Update twandatabase.leden SET `Naam`=Piet,`Achternaam`=Piraatje,`Woonplaats`=spijkenisse,`Leeftijd`=23 WHERE naam ='Piet'
OK
OK
Er treedt een fout op, de gegevens worden niet weggeschreven om de volgende reden: Unknown column 'Piet' in 'field list'
Bij je WHERE doe je het wel goed.
oke, hoe hoort die waarde dan te zijn? dit is de 1e dag dat ik me met php bezig houd
En je hebt Naam en naam, dat lijkt mij ook niet goed.
Twan de Langen op 17/05/2015 21:44:33:
oke, hoe hoort die waarde dan te zijn? dit is de 1e dag dat ik me met php bezig houd
Zo moet het:
- SanThe - op 17/05/2015 21:28:24:
SET Naam='".$naam."',...........
Iedereen bedankt voor het reageren
Good luck Twan.
Dat is niet handig, want die is morgen al weer achterhaald.
Geboortedatum is beter om op te slaan (in een kolom van het type DATE), zodat je altijd de juiste leeftijd kunt bepalen.