Ik ben sinds vorige week bezig met php te leren. Ik ben nu bezig een programma te bouwen om een dvd collectie te beheren.
De database connectie doet het en ik kan nu via een array gegevens in de html pagina krijgen.
Nu wil ik via php gegevens in de database zetten via een formulier. Ik krijg steeds een bericht met 'Undefined variable' .

Dit is het formulier:

<form method="post" action="added.php" name="add_dvd">
<table id="input">
<tr>
<td>Naam dvd</td>
<td><input type="text" name="naam" /></td>
</tr>
<tr>
<td>Jaar</td>
<td><input type="text" name="jaar" /></td>
</tr>
<tr>
<td>Speelduur</td>
<td><input type="text" name="speelduur" /></td>
</tr>
<tr>
<td>Samenvatting</td>
<td><textarea rows="5" cols="30" ></textarea></td>
</tr>
</table>
<input type="submit" name="submit" value="Voeg DVD toe" />
</form>

en de php:

<?
include "connect.php";

if(isset($_post['submit'])) {
$dvdnaam = $_POST['naam'];
$jaar = $_POST['jaar'];
$speelduur = $_POST['speelduur'];
$samenvatting = $_POST['samenvatting'];
}

mysql_query("
INSERT INTO collectie
(naam, jaar, speelduur, samenvatting)
VALUES
('{$dvdnaam}', '{$jaar}', '{$speelduur}', '{$samenvatting}'())
");
?>
De textarea heeft geen naam, daar zal het fout op gaan.

Tips:
- nooit een variabele kopieeren zonder er iets mee te doen:
$dvdnaam = $_POST['naam'];
- Zet een query in een variabele en laat de functie mysql_query() deze variabele uitvoeren. Kun je de query nog eens echoen bij het debuggen
- controleer of de query wel is gelukt, er is geen enkele garantie dat dit altijd het geval is.
- Userinput mag nooit onbeveiligt in een query staan, SQL-injection ligt op de loer. In jouw geval kun je mysql_real_escape_string() gebruiken.
- Geen { en } in de query zetten om de variabelen. Variabelen haal je buiten quotes.

Voorbeeldje:
<?php
include "connect.php";

if(isset($_post['submit'])) {
$dvdnaam = mysql_real_escape_string($_POST['naam']);
$jaar = mysql_real_escape_string($_POST['jaar']);
$speelduur = mysql_real_escape_string($_POST['speelduur']);
$samenvatting = mysql_real_escape_string($_POST['samenvatting']);

$query = "
INSERT INTO collectie(
naam,
jaar,
speelduur,
samenvatting
)
VALUES(
'".$dvdnaam."',
'".$jaar."',
'".$speelduur."',
'".$samenvatting."'
)
";

if(!mysql_query($query)){
echo 'Query mislukt: '.mysql_error();
echo $query;
}
}
?>
Ik heb je punten verwerkt en ik krijg geen errors, alleen een leeg scherm.
Als ik nu een variable echo'd krijg ik wel weer 'Undefined variable', ook wordt de database niet gevuld. Ik heb de namen in de databse gecontroleerd en die komen wel overeen.

Reageren