Logisch dat hij het niet doet, want jij gaat er vanuit dat je de velden gewoon kunt opvragen met
$achternaam = "achernaam";
Dit is niet zo! je moet deze als volgt opvragen:
$achternaam = $_POST['achternaam'];
ik heb je script verbeterd, want er zaten wel wat schoonheidsfoutjes in, zo kun je de if statement beter met empty() maken, en de mysql connectie hoeft niet afgesloten te worden aangezien hij dit zelf doet wanneer hij klaar is.
Ook was je query niet goed, je kunt beter altijd specificeren in welke velden je gaat inserten, als je dit niet doet telt mysql vanaf de eerste kolom wat waarschijnlijk een id kolom is (hoop ik tenminste).
Ook moet je jezelf aanleren variabelen buiten de quotes te halen, als je dan ook nog met een goede editor werkt met kleuren zie je al je variabelen in een oogopslag.
Leer tevens netjes te scripten door in te springen.
<?php
mysql_connect('localhost','root','Ronald08');
mysql_select_db('test');
if(!empty($achternaam) && !empty($woonplaats))
{
$achternaam = $_POST['achternaam'];
$woonplaats = $_POST['woonplaats'];
$query = "INSERT INTO ron (achternaam, woonplaats) VALUES ('".$achternaam."','".$woonplaats."')";
$result = mysql_query($query);
echo "Uw gegevens zijn toegevoegd!";
}
else
{
echo "U heeft nog niet alle verplichte velden ingevuld!";
}
?>
@Lissy, bedoel je dat er een veld al ingevuld moet zijn wanneer de pagina wordt geladen? deze kun je dan invullen met het attribuut value = "" van het input type.
En als je bedoeld dat je wilt controleren, of die al dan niet is geset:
<?php
$fout= FALSE;
$showerror="";
if (empty($_POST['waarde'])){
$fout=TRUE
$showerror .= "De waarde van [naam veld] is niet ingevuld<br/>";
}
// en zo verder voor de post velden
//vervolgens
if (!$fout){//geen fouten gevonden
// verwerk het formulier
}
elseif ($fout || $_SERVER['REQUEST_METHOD'] != "post"){//fout gevonden, of formulier nog niet verzonden
// je formulier en evt foutmeldingen laten zien
}
?>
Dat is de kern van een goed systeem. Jij neemt nu aan dat iedere query wel zal lukken, maar in werkelijkheid heb je de garantie dat queries vroeg of laat zullen mislukken. Dus altijd controleren of het is gelukt.
Verder moet je altijd de functie mysql_real_escape_string() gebruiken wanneer je variabelen in de query opneemt. Doe je dat niet, krijg je vroeg of laat met een hacker te maken die jouw database om zeep helpt: SQL-injection.
<?php
$query = "
SELECT
*
FROM
tabelnaam
WHERE
naam = '".mysql_real_escape_string($_POST['naam'])."'
";
$result = mysql_query($query);
if(!$result){ // query is mislukt
echo 'Mislukt vanwege: '.mysql_error();
echo 'Met query: '.$query;
}
else {
// doe iets met het resultaat
}
// en de rest van je script
?>