Ik heb de afgelopen tijd heel veel vragen gesteld maar ik kom tot de ontdekking het niet goed te begrijpen. Daarom back to basic. Als mensen mij willen helpen zou ik het leuk vinden anders houd het op.
Ik begin wel met een database.
Ik heb een connectie gemaakt. Daar heb ik mijn eerste vraag dan ook over:
Ik zal de code later hieronder plaatsen. De vraag is waarom krijg ik geen echo als de connectie mislukt en wel als deze lukt?
Klopt, vul maar eens een 0. En kijk dan eens of er true of false wordt geretourneerd ;).
Je kan ook een vergelijking doen met een lege string zonder inhoud, maar daar bereik je mee dat mensen ook een spatie kunnen invoeren op een veld die verplicht is. Dus die trim()'en we dan graag.
Jemig wat een zootje is die code geworden. :)
Hey maar we zijn zo allemaal begonnen, dus snap het wel.
Om te beginnen doe je een function aanmaken. Die kunnen heel handig zijn.
Maar dan moet je wel weten wat dat dingetje doet.
als je een function foo($metvar) maakt, dan doe je een functie met input.
Dus verwacht de functie ook iets er in, jij wil meteen met twee, kan ook.
Die ($metvar) is alleen om door te geven.
Dus wat je daar instopt is even niet van belang. Hoewel, als je de function gebruikt, wil je daar $_POST variabelen in zetten dus dat doen we pas als we de funtion aanroepen.
Even in code met uitleg:
<?php
include 'include.php';
// validatie
function validate($username, $email)
{
if(isset($username) && trim($username) == '')
{
return false;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return false;
}
return true;
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// input is gewoon de $_POST variabelen
if( validate($_POST['username'], $_POST['email']) == false)
{
echo 'gebruikersnaam is leeg, of geen geldig email';
}
// maak de query leesbaar
$sql = "INSERT INTO gebruikers (username,
email
)
VALUES ('".mysqli_real_escape_string($con, $_POST['username'])."',
'".mysqli_real_escape_string($con, $_POST['email']);."'
)";
// hier wil ik wel een variabele die leesbaar is..
$result = mysqli_query($con,$sql)
if(!$result)
{
echo 'Niet geplaatst!';
}
else
{
echo 'geplaatst!';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>registreren</title>
</head>
<body>
<form action="" method="post">
<input type="text" name="username"> gebruikersnaam<br>
<input type="email" name="email" >
<input type="submit" name="insert" value="Opslaan">
</form>
</body>
</html>
Ik zeg niet dat deze code perfect is, maar om je een idee te geven hoe je dingen doet (denk dat je echt even de weg kwijt bent) is deze opzet al een stuk schoner.
Zoals je ziet probeer ik mijzelf niet telkens te kopiëren. $username, $email is als input een handige naam om door te geven. Maar dat "doorgeven" hoeft niet als je het in je code zet om te posten. Want die waardes zijn al bekend snap je?
Ook een query schrijf je onder elkaar om beter te kunnen lezen.
En het escapen kan ook gewoon rechtstreeks in de sql string.