Door
Twan de Langen
op 17-05-2015 18:06
gewijzigd op 17-05-2015 18:07
2.522 views
Ik heb een database gemaakt in 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
<?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");
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);
?>
Regel 2 t/m 5 kunnen in 1 regel. Dit is nodeloos kopieren met het risico dat je later (per ongeluk of wat dan ook) toch worden getoond ergens. Waarom het risico lopen?
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():
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.
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
ik dacht aan onderstaande code. Helaas werkt dit niet.
Iemand sugesties ?
<?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");
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.
<?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");
$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'