PDA

Bekijk Volledige Versie : Tabel wordt niet geupdated



StriKe
05/07/05, 10:55
Hallo,

Ik heb een script die eerst gegevens uit een tabel haalt. Die gegevens
worden in textboxen geplaatst omdat ik deze moet kunnen wijzigen. Na de
'submit' moeten deze gegevens via een update in de tabel bijgewerkt
worden.

Probleem is dat er echter nit wordt bijgewerkt.

Ik heb het vermoeden dat het aan dit stukje code ligt:

$sql = "UPDATE ngb_inschrijvingen SET
Datum_inschrijving = '$Datum_inschrijving[$i]',
Categorie = '$Categorie[$i]',
Groep = '$Groep[$i]',
Subgroep = '$Subgroep[$i]',
Uur = '$Uur[$i]'
WHERE Lidnr = '$Lidnr[$i]'
AND Datum_inschrijving = 'oude_datum[$i]'";

Die 'and' is er misschien 'teveel aan'?
Die oude_datum heb ik omdat de primary key in die tabel bestaat uit
enerzijds het lidnummer en de datum. Probleem is natuurlijk dat als ik
die datum wil updaten ik de 'oude' ook nog nodig heb, omdat hij anders de
wijzigingen in alle rijen met hetzelfde lidnummer zou gaan doorvoeren,
volgens mij.

De structuur van de tabel zit er als volgt uit:

CREATE TABLE `ngb_inschrijvingen` (
`Lidnr` varchar(5) NOT NULL default '',
`Categorie` char(2) NOT NULL default '',
`Datum_inschrijving` date NOT NULL default '0000-00-00',
`Betaald` char(1) NOT NULL default '',
`Printen` char(1) NOT NULL default '',
`Bedrag` double NOT NULL default '0',
`Badmuts` char(3) NOT NULL default '',
`Groep` tinyint(4) NOT NULL default '0',
`Subgroep` tinyint(2) NOT NULL default '0',
`Uur` char(2) NOT NULL default '',
`Aanwezig` tinyint(4) NOT NULL default '0',
`Afwezig` tinyint(4) NOT NULL default '0',
`Verontschuldigd` tinyint(4) NOT NULL default '0',
`Betaal_datum` date NOT NULL default '0000-00-00',
`Betaal_wijze` varchar(20) NOT NULL default '',
`Opmerkingen_van_lesgevers` mediumtext NOT NULL,
`Deleted` char(1) NOT NULL default 'N',
PRIMARY KEY (`Lidnr`,`Datum_inschrijving`)
) TYPE=MyISAM;


Hieronder het volledige script.
---------------------------------

<?php

if (isset($_POST['Wijzigen']))
{
?>
<table cellpadding="5" cellspacing="10">
<tr>
<td class="secure_vet">Lidnr</td>
<td class="secure_vet">Datum <br /> Inschrijving</td>
<td class="secure_vet">Categorie</td>
<td class="secure_vet">Groep</td>
<td class="secure_vet">Subgroep</td>
<td class="secure_vet">Uur</td>
</tr>
<?php
for($i = 0; $i < $atl; $i++)
{
$sql = "UPDATE ngb_inschrijvingen SET
Datum_inschrijving = '$Datum_inschrijving[$i]',
Categorie = '$Categorie[$i]',
Groep = '$Groep[$i]',
Subgroep = '$Subgroep[$i]',
Uur = '$Uur[$i]'
WHERE Lidnr = '$Lidnr[$i]'
AND Datum_inschrijving = 'oude_datum[$i]'";

mysql_query($sql);
?>
<tr>
<td class="secure"><?php print($Lidnr[$i]); ?></td>
<td class="secure"><?php print($Datum_inschrijving[$i]); ?></td>
<td class="secure"><?php print($Categorie[$i]); ?></td>
<td class="secure"><?php print($Groep[$i]); ?></td>
<td class="secure"><?php print($Subgroep[$i]); ?></td>
<td class="secure"><?php print($Uur[$i]); ?></td>
</tr>
<?php
} // End for
?>
</table>

<?php

print("wijzigingen doorgevoerd! <br /><br />");
print("<a href=\"$PHP_SELF\">Nog een wijziging doorvoeren bij de
persoonlijke inschrijvingen</a> <br /><br />");
print("<a href=\"inschrijvingen_view1.php\">Persoonlijke
inschrijvingen bekijken</a>");

}
else
{

$gebruiker = $gebruiker = $_SESSION['sUser'];
$sql = "SELECT * FROM ngb_inschrijvingen WHERE Lidnr = '$gebruiker'
AND Deleted = 'N'";
$resultaat = mysql_query($sql);
$aantal = mysql_num_rows($resultaat);

if (mysql_num_rows($resultaat) == 0)
{
print("<b>Geen gegevens over inschrijvingen aanwezig in de
database!</b>");
}
else
{

?>
<table cellpadding="5" cellspacing="10">
<form action="<?php $PHP_SELF ?>" method="post">
<input class="secure_form" type="submit" name="Wijzigen"
value="Wijzigingen opnemen in database">
<input type="hidden" name="atl" value="<?php print($aantal); ?>">
<tr>
<td class="secure_vet">Lidnr</td>
<td class="secure_vet">Datum <br /> Inschrijving</td>
<td class="secure_vet">Categorie</td>
<td class="secure_vet">Groep</td>
<td class="secure_vet">Subgroep</td>
<td class="secure_vet">Uur</td>
</tr>
<?php

$i = 0;
while ($Rij = mysql_fetch_array($resultaat))
{

?>
<tr>
<td class="secure"><input class="secure_form"
type="text" size="5" DISABLED name="<?php print("Lidnr[$i]"); ?>"
value="<?=$Rij['Lidnr']; ?>"></td>
<input class="secure_form" type="hidden" name="<?php
print("Lidnr[$i]"); ?>" value="<?=$Rij['Lidnr']; ?>">
<td class="secure"><input class="secure_form"
type="text" size="20" name="<?php print("Datum_inschrijving[$i]"); ?>"
value="<?=$Rij['Datum_inschrijving']; ?>"></td>
<input class="secure_form" type="hidden" name="<?php
print("oude_datum[$i]"); ?>" value="<?=$Rij['Datum_inschrijving']; ?>">
<td class="secure"><input class="secure_form"
type="text" size="5" name="<?php print("Categorie[$i]"); ?>" value="<?=
$Rij['Categorie'] ?>"></td>
<td class="secure"><input class="secure_form"
type="text" size="5" name="<?php print("Groep[$i]"); ?>" value="<?=$Rij
['Groep'] ?>"></td>
<td class="secure"><input class="secure_form"
type="text" size="5" name="<?php print("Subgroep[$i]"); ?>" value="<?=
$Rij['Subgroep'] ?>"></td>
<td class="secure"><input class="secure_form"
type="text" size="5" name="<?php print("Uur[$i]"); ?>" value="<?=$Rij
['Uur'] ?>"></td> </tr>
<?php

$i++;
} // End while
print("</form></table>");
} // End if zijn er rijen om af te beelden
} // End if is set wijzigen
?>


--
Groeten,
StriKe

http://www.internetfreakz.be

Ronald Klip
05/07/05, 11:15
StriKe schreef:
>
> Ik heb het vermoeden dat het aan dit stukje code ligt:
>
> $sql = "UPDATE ngb_inschrijvingen SET
> Datum_inschrijving = '$Datum_inschrijving[$i]',
> Categorie = '$Categorie[$i]',
> Groep = '$Groep[$i]',
> Subgroep = '$Subgroep[$i]',
> Uur = '$Uur[$i]'
> WHERE Lidnr = '$Lidnr[$i]'
> AND Datum_inschrijving = 'oude_datum[$i]'";
>
> Die 'and' is er misschien 'teveel aan'?

Probeer eens
AND Datum_inschrijving = '$oude_datum[$i]'";

Overigens valt me o.a. op dat je register_globals kennelijk nog 'on'
hebt, en dat de gebruikersinput op geen enkele wijze wordt gevalideerd.
Beide zijn niet aan te raden...

--
groet, Ronald

StriKe
05/07/05, 11:35
Ronald Klip <nieuws@bladibla.net.invalid> schreef in
news:MPG.1d346de0d74a80d69896cc@news.xs4all.nl:

> Probeer eens
> AND Datum_inschrijving = '$oude_datum[$i]'";
>
> Overigens valt me o.a. op dat je register_globals kennelijk nog 'on'
> hebt, en dat de gebruikersinput op geen enkele wijze wordt gevalideerd.
> Beide zijn niet aan te raden...

't Scriptje is ook nog niet af hoor ;)
Qua inputcontrole wordt dat nog in een later stadium gedaan, eerst zien of
't update (en dus doet wat het moet).

even geprobeerd met die "$" en het werkt, bedankt!

--
Groeten,
StriKe

http://www.internetfreakz.be