Ik heb een tabel 'uren' (kolommen 'id', 'project', 'datum', 'uren' en 'akkoord'). Ik wil hier mijn uren bijhouden die ik aan een project besteed. Het punt is dat de klant mijn uren moet goedkeuren. Ik heb een lijstje met al mijn uren, en met selectievakjes kan de klant in één query een aantal (of alle) uren goedkeuren. Ik de volgende code gemaakt:
Die doet het niet... geen errors, gewoon een leeg scherm.
Ik heb al diverse tutorials over loops, checkboxes en arrays doorgelopen, maar ik kom er maar niet achter wat er mis gaat. Kan iemand me op weg helpen?
Goh, dat is gek! Waar is jouw foutafhandeling die errors op het scherm zou moeten zetten? Jij doet de aanname dat alles wel goed gaat, maar dat blijkt weer eens niet zo te zijn.
Okee...
Ik heb de error reporting op E_ALL gezet, nog steeds een leeg scherm. Mijn SQL-query doet ook niks: er wordt niks ge-update en er komt ook geen foutmelding over de query.
?
Onbekende gebruiker
18-09-2007 16:42
Bijvoorbeeld hier:
$sql = "SELECT * FROM t_uren";
$query = mysql_query($sql);
Hier neem je gewoon aan dat de query lukt. Verander dat eens naar:
$sql = "SELECT * FROM t_uren";
$query = mysql_query($sql) or die(mysql_error());
Heb ik gedaan, maakt geen verschil.
Ik krijg ook netjes een tabel met mijn gegevens erin, maar wanneer ik het formulier submit krijg ik een leeg scherm.
Vanwege het lege scherm en het gebrek aan foutmeldingen denk ik dat het probleem bij het doorgeven van de variabelen zit...
Wanneer ik de update-query vervang door
echo ($_POST['upd']);
en ik klik twee selectievakjes aan geeft hij terug:
ArrayArray
?
Onbekende gebruiker
18-09-2007 17:02
<?php
//als formulier gepost is
if( $_SERVER['REQUEST_METHOD'] == "POST") {
foreach ($_POST['upd'] as $update)
// Lever het aan als een array, dus: $_POST
{
mysql_query("UPDATE t_uren SET akkoord = 1 WHERE id = '" . $akkoord . "'") or die(mysql_error());
// Waar komt die $akkoord vandaan??
}
}
?>
Waar controleer jij of de update-query wel iets heeft gedaan? Ik zie nergens mysql_affected_rows() terugkomen waarmee je dat controleert. Alleen controleren of de query technisch is gelukt, zegt namelijk nog niks.
Verder echo je binnen de if ook helemaal niks, daar hoef je dus geen output/resultaat van te verwachten. Alle output staat in de else.
Ik kijk in m'n phpmyadmin of er iets gebeurd, er gebeurd dus niks.
Ik kan echoen wat ik wil, maar er gebeurt niks. Zoals ik eerder al zei, het probleem zit waarschijnlijk in het feit dat ik de variabelen niet goed doorgeef Ik weet nog niet zo heel veel van PHP om de fout te vinden, dus daar heb ik jullie hulp bij nodig...
@GaMer13: wat bedoel je met 'lever het aan als een array, dus $_POST? Dat doe ik toch?
De $akkoord komt uit het formulier dat ik submit, of geef ik die niet goed door?
$akkoord is wat anders dan $_POST['akkoord']. Welke gebruik jij?
Verder zul je echt een controle met mysql_affected_rows() moeten inbouwen, anders heb je nooit enige zekerheid over het resultaat van een UPDATE- of DELETE-query. (INSERT laat ik even buiten beschouwing, maar zou je eigenlijk ook moeten checken)