Druk op de knop.....gegevens gewijzigd
Dus je krijgt een overzicht:
Factuur nr. | Klant | Adres | Status | knop
-------------------------------------------
1 | Piet | Veld | betaald |
2 | Piet | Veld | betaald |
3 | Piet | Veld | Niet betaald | Betaald
4 | Piet | Veld | Niet betaald | Betaald
En als je dan nu op betaald druk achter factuur nr 3 moet de status veranderen in betaald en de knop weg gaan
Dat kan door middel van UPDATE FROM Tabel Etc..
dmv van javascript / ajax zou je dit mooi op kunnen lossen.. google eens wat rond ;)
het formulier verwijst dan bijvoorbeeld naar change_status.php.
Een voorbeeldje uit de hoge hoed:
Per factuur in het 'facturen overzicht' voeg je dit formuliertje toe:
Code (php)
1
2
3
4
5
2
3
4
5
<form action="change_status.php" method="post">
<input name="factuur_id" type="hidden" value="[id van de factuur]">
<input name="status" type="hidden" value="betaald">
<input name="submit" type="submit" value="betaald">
</form>
<input name="factuur_id" type="hidden" value="[id van de factuur]">
<input name="status" type="hidden" value="betaald">
<input name="submit" type="submit" value="betaald">
</form>
-- change_status.php --
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if(isset($_POST["submit"]))
{
$factuur_id = $_POST["factuur_id"];
$status = $_POST["status"];
$sql = "UPDATE `facturen` SET `status` = '" . $status . "' WHERE `factuur_id` = '" . $factuur_id . "' LIMIT 1;";
mysql_query($sql) or die(mysql_error());
}
header('Location: facturen_overzicht.php');
?>
if(isset($_POST["submit"]))
{
$factuur_id = $_POST["factuur_id"];
$status = $_POST["status"];
$sql = "UPDATE `facturen` SET `status` = '" . $status . "' WHERE `factuur_id` = '" . $factuur_id . "' LIMIT 1;";
mysql_query($sql) or die(mysql_error());
}
header('Location: facturen_overzicht.php');
?>
Gewijzigd op 01/01/1970 01:00:00 door Martijn Wieringa
<td valign=\"top\" class=\"leftborder_td\"><form action=\"change_status.php?ID=$ID\" method=\"post\">
<input name=\"invoice_id\" type=\"hidden\" value=\"[invoice_id]\">
en een andere pagina aangemaakt met:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
if(isset($_POST["submit"]))
{
$invoice_id = $_POST["invoice_id"];
$Status = $_POST["Status"];
$sql = "UPDATE `invoice` SET `Status` = '" . $Status . "' WHERE `invoice_id` = '" . $invoice_id . "' LIMIT 1;";
mysql_query($sql) or die(mysql_error());
}
?>
if(isset($_POST["submit"]))
{
$invoice_id = $_POST["invoice_id"];
$Status = $_POST["Status"];
$sql = "UPDATE `invoice` SET `Status` = '" . $Status . "' WHERE `invoice_id` = '" . $invoice_id . "' LIMIT 1;";
mysql_query($sql) or die(mysql_error());
}
?>
maar dan kom ik op een andere pagina en die laat hij helemaal wit en de Status wordt niet verandert, maar ik heb het liefst dat hij op dezelfde pagina blijft.
Verder bestaat de hele variabele $_POST['Status'] niet omdat je deze niet opgenomen hebt in je formulier.
Wat je nu doet is voor elke niet betaalde factuur een formulier aan te maken waarin je die status kunt wijzigen. Echter je kunt ook overwegen om alles in 1 formulier te doen en dan gebruik te maken van checkboxen.
Achter elke niet betaalde formulier plaats je een checkbox van de volgende strekking:
Hierbij vul je dus voor de value van de checkbox het id van de factuur in dmv een variabele.
Als je nu het formulier verzend kun je controleren welke checkboxen aangevinkt zijn en welke dus geupdate moeten worden:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
foreach($_POST['betaald'] as $value)
{
$sql = "UPDATE invoice
SET Status = 'betaald'
WHERE invoice_id = ".$value;
// query uitvoeren etc...
}
?>
foreach($_POST['betaald'] as $value)
{
$sql = "UPDATE invoice
SET Status = 'betaald'
WHERE invoice_id = ".$value;
// query uitvoeren etc...
}
?>
Nog een kleine opmerking: gebruik nooit backticks (`) in je query, dat is rotzooi van MySQL en heeft totaal geen toegevoegde waarde.