Kan iemand mij vertellen waarom dit script 6 maanden prima heeft gewerkt en nu niet meer? <?php

require "aspnet_client/header.php";
$admin = true;
require "aspnet_client/authenticatie.php";

$tijd = date("Y-m-d, H:i:s");
if ($_POST["knop"] && $plantnaam="") {
echo "record wegschrijven";

$sql = "INSERT INTO `aaddejong`.`artikel` (`Plantnaam`, `Plantmaat`, `aantalperlaag`, `aantallaagperkar`, `prijsperstuk`, `leverancier`, `inkoopprijs`, `status`, `Afbeelding`, `Potmaat`, `Omschrijving`, `fotoetiket`, `Artikel_id`, `Datumingevoerd`, `eenheidprocent`, `laagkar`) VALUES ('$plantnaam', '$plantmaat', '$aantalperlaag', '$aantallaagperkar', '$prijsperstuk', '$leverancier', '$inkoopprijs', '$afbeelding', '$potmaat', '$omschrijving', '$fotoetiket', '$tijd', '$eenheidprocent', '$laagkar')";

$theresult = mysql_query($sql);// voer SQL code uit

if ($theresult) {
echo "Het artikel is toegevoegd.";
} else {
echo "Helaas, de artikel kon niet worden toegevoegd aan de database. Neem contact op met de webmaster!"; // wordt de query goed uitgevoerd?
}

} else {

?>
<p><div class="big">Artikel toevoegen</div><br>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
Welk artikel wilt u toevoegen?
<table width="51%" border="1">
<tr>
<td width="22%">Aantal lagen per kar:</td>
<td width="78%" bordercolor="#000066"><input type="text" name="aantallaagperkar" /></td>
</tr>
<tr>
<td>Aantal per laag:</td>
<td bordercolor="#000066"><input type="text" name="aantalperlaag" /></td>
</tr>
<tr>
<td>Plantnaam:</td>
<td bordercolor="#000066"><input type="text" name="plantnaam" size="70" /></td>
</tr>
<tr>
<td height="27">Hoogte:</td>
<td bordercolor="#000066"><input type="text" name="plantmaat" />
</td>
</tr>
<tr>
<td>Pot: </td>
<td bordercolor="#000066"><input type="text" name="potmaat" /></td>
</tr>
<tr>
<td>Omschrijving:</td>
<td bordercolor="#000066"><input type="text" name="omschrijving" size="70" /></td>
</tr>
<tr>
<td>Prijs per stuk: </td>
<td bordercolor="#000066"><input type="text" name="prijsperstuk" /></td>
</tr>
<tr>
<td>Foto-etiket: </td>
<td bordercolor="#000066"><input type="text" name="fotoetiket" /></td>
</tr>
<tr>
<td>Afbeelding:</td>
<td bordercolor="#000066"><input type="text" name="afbeelding" /></td>
</tr>
<tr>
<td>Leverancier:</td>
<td bordercolor="#000066"><input type="text" name="leverancier" /></td>
</tr>
<tr>
<td>Inkoopprijs:</td>
<td bordercolor="#000066"><input type="text" name="inkoopprijs" /></td>
</tr>
<tr>
<td>Eenheidprocent:</td>
<td bordercolor="#000066"><input type="text" name="eenheidprocent" /></td>
</tr>
<tr>
<td>laag of kar:</td>
<td bordercolor="#000066"><input type="text" name="laagkar" /></td>
</tr></table>
</table>
<br>






<input type="submit" name="knop" value="toevoegen">
</form>

<?php

}

require "footer.php";

?>
En waar mag $plantnaam vandaan komen?
<tr>
<td>Plantnaam:</td>
<td bordercolor="#000066"><input type="text" name="plantnaam" size="70" /></td>
</tr>
SanThe schreef op 24.08.2009 11:22
Al die $vars zullen waarschijnlijk leeg zijn. Zie superglobals.

Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Het controleren als de knop is ingedrukt en de plantnaam is ingevuld is opgelost door het volgende:

$knop = $_POST["knop"];
$plantnaam = $_POST["plantnaam"];

if ($knop && $plantnaam !="") {

nu wil ie nog niet in de sql db schrijven
Dat heeft dus ook met superglobals te maken. Net zoals je hierboven doet zal je met $_POST moeten werken. Verder horen backtics niet in een query. $vars hou je buiten de quotes. En beveilig je database tegen sql-injection. Je script is nu in ieder geval lek.
Het werkt weer stond een klein foutje in de sql query.

iedereen bedankt

Reageren