Hallo iedereen,

Ik ben bezig met een soort beheeromgeving, waarin de administratie binnengekomen aanmeldingen kan factureren. Dit kan via een Excel-bestand. De export werkt.

Nu heb ik een drop-down box neergezet die op waarde 'ja' gezet kan worden. Na klikken op "Gefactureerd" moet het script in iedere rij die zojuist geexporteerd is de waarde 'gefactureerd' op ja zetten.

Het script werkt, alleen de update niet. Wie weet wat ik verkeerd doe?

Gerjo

Edit: bij deze een fragment van het script. Heb alleen het gedeelte waarin de query wordt gemaakt i.c.m. de update in sql gepost. (Moet dit tussen tags?)

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

include 'db.inc.php' ;

$formulier = TRUE;

if(!isset($_COOKIE['formulier']))
{
if(isset($_POST['gereed']) && ($_SERVER['REQUEST_METHOD']== "POST"))
{
{
$aFout = array();
$gefactureerd = trim($_POST['gefactureerd']);
}
{
// sql insert die je in de database gaat doen

$sql = "UPDATE inschrijvingen SET gefactureerd='".$_POST['gefactureerd']."', WHERE aanmelding='ja'";
$query = mysql_query($sql)or die;
}

?>
(hieronder het formulier. Daaronder staat de laatste }, dus die mis ik iig niet)
=> SET gefactureerd='".$_POST['gefactureerd']."',

Die komma op het einde moet weg.
Maak ook eens een goede fouten afhandeling, Als je dit had gedaan, dan had je de fout zelf ook wel gevonden.
Hi ark,

Die komma is weg. Thanks. Ik heb ook de regel 21 aangepast naar
$query = mysql_query($sql)or die(mysql__error());

Hij geeft in zijn geheel een lege pagina. Wat gaat verkeerd?

Edit: pagina werkt weer, had twee keer een } aan het einde van de HTML code met de betreffende form gezet. Eén vlak voor het begin gezet. Updaten werkt nog niet
en zo?

<?php

/* Errors */
error_reporting(E_ALL);

/* Connectie met database maken */
require_once('db.inc.php');

/* Cookie */
if(!isset($_COOKIE['formulier']))
{
/* Kijken of er een formulier wordt gepost */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Query uitvoeren */
$sql =
"
UPDATE
inschrijvingen
SET
gefactureerd = '".mysql_real_escape_string($_POST['gefactureerd'])."'
WHERE
aanmelding = '".mysql_real_escape_string('ja')."'
";

/* Resultaat van query */
$Result = mysql_query($sql);

/* Kijken of de query is gelukt */
if(!$Result)
{
echo 'Er is een fout opgetreden met het uitvoeren van de query.';
}
else
{
echo 'Succesvol geupdate.';
}
}
}

?>
gerjoris schreef op 14.07.2009 21:09
Hij geeft in zijn geheel een lege pagina.

Waarschijnlijk ergens een ( of { niet afgesloten.

Je script is lek => sql-injection.
Hmm, zeg ark, bedankt voor het plaatsen van de kanttekeningen in je script. Het is wellicht zo slim als je in PHP laat zoeken naar een POST actie, dat je uberhaupt een form die actie laat doen, als je begrijpt wat ik bedoel.
SanThe schreef op 14.07.2009 21:47
[quote='gerjoris schreef op 14.07.2009 21:09']Hij geeft in zijn geheel een lege pagina.

Waarschijnlijk ergens een ( of { niet afgesloten.

Je script is lek => sql-injection.[/quote]

He? De lege pagina is opgelost, de } stond op de verkeerde plaats. Maar script is lek? Hoe bedoel je?

(Ben welgelteld twee weken aan het PHP'en...)

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.
http://nl.wikipedia.org/wiki/SQL-injectie

Daarom maken we queries zo:

<?php
$query = "INSERT INTO leden (naam, pass) VALUES ('".mysql_real_escape_string($_POST['naam'])."', '".md5($_POST['pass'])."')";

// en nog goede foutafhandeling, nu je toch aan het leren bent:
if(!$result = mysql_query($query)){
//query mmislukt, foutmelding
trigger_error(mysql_error());
}
else{
//query gelukt, rest code, ophalen gegevens bijvoorbeeld
}
?>
ark schreef op 14.07.2009 21:59
Leg mij dan eens uit wat er SQL injection gevoelig is aan die code die ik poste.

Ik bedoelde het script van TS. Die van jou is in orde. Sorry voor de verwarring.

Reageren