2e select query uitvoeren nadat insert query is uitgevoerd.
Ik heb een php pagina gemaakt waarbij informatie in een database wordt gezet. Dit gebeurt simpelweg met een insert query.
Vervolgens is het de bedoeling dat als de insert query is uitgevoerd, dat dan een update query uitgevoerd moet worden. Deze update query staat in dezelfde php pagina als de insert query. De reden dat er een update query uitgevoerd moet worden is omdat een bepaalde waarde wordt beinvloed door een andere waarde die mbv de insert query in de database terechtkomt.
Het probleem is echter dat als de update query wordt uitgevoerd dat deze wordt uitgevoerd VOORDAT de insert query wordt uitgevoerd. Hierdoor gaat de update query uit van verkeerde informatie en moet er dus (theoretisch gezien) op F5 worden gedrukt om alsnog de update query goed te laten verlopen.
Mijn vraag is of daar een speciaal command voor is in php om ervoor te zorgen dat een update query pas wordt uitgevoerd NADAT de insert query is voldaan.
PS: Logischerwijs staat de update query onder de code van de insert query. Echter helpt dit niet.
Gewijzigd op 01/01/1970 01:00:00 door Wouter
Post je code eens, het is heel vreemd dat de volgorde wordt omgedraaid :S
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
//Insert Query
for ($nr = 0; $nr <= 6; $nr++) {
$volgendeweek2 = strtotime("+$plan[$nr] day", $supertijd);
$volgendeweek = strftime("%Y-%m-%d",$volgendeweek2);
$sql = "INSERT INTO verdeling SET
Init = '$init',
Datum = '$volgendeweek',
Beschikbaarheid = '$beschikbaar1[$nr]',
Bes_over = '$urenover1[$nr]',
ProcesID = '$processen[$nr]',
Proces_uren = '$procesuren[$nr]',
RolID = '$rol[$nr]'";
echo $sql;
if (mysql_query($sql)) {
echo "<p>$nr Succesvol toegevoegd</p>";
} else {
echo "<p>$nr mislukt</p>";
}
}
//Overtollige informatie moet weg!
$sql2 = "DELETE FROM verdeling WHERE ProcesID = '' OR RolID = ''";
if (mysql_query($sql2)) {
echo "<p>Succesvol verwijderd</p>";
} else {
echo "<p>error zonder naam</p>";
}
//Beschikbaar_over goede waarde geven
$selectdatumquery = mysql_query("SELECT Datum, Init FROM verdeling ORDER BY Datum");
if (!$selectdatumquery) {
exit('<p>Query mislukt</p>');
}
while ($resultdatumquery = mysql_fetch_array($selectdatumquery)) {
$datumid2[] = htmlspecialchars($resultdatumquery['0']);
$init2[] = htmlspecialchars($resultdatumquery['1']);
}
for ($a = 0, $b = count($datumid2); $a < $b; $a++) {
$procesurenquery2 = mysql_query("SELECT sum(Proces_uren) as Procesuren, Beschikbaarheid FROM Verdeling WHERE Datum = '$datumid2[$a]' AND Init = '$init2[$a]' GROUP BY Beschikbaarheid");
if (!$procesurenquery2) {
exit('<p>Query mislukt2</p>');
}
while ($resultprocesurenquery = mysql_fetch_array($procesurenquery2)) {
$procesuren2 = htmlspecialchars($resultprocesurenquery['0']);
$beschikbaarheid2 = htmlspecialchars($resultprocesurenquery['1']);
}
$beschikbaarover2 = $beschikbaarheid2 - $procesuren2;
echo "<p>Beschikbaarheid $beschikbaarheid2[0]</p>";
echo "<p>Procesuren $procesuren2[0]</p>";
echo "<p>Beschikbaarover $beschikbaarover2</p>";
$updatebesover = "UPDATE verdeling SET
Bes_over='$beschikbaarover2'
WHERE Datum='$datumid2[$a]'";
echo $updatebesover;
if (@mysql_query($updatebesover)) {
echo "<p>$a succesvol geupdate</p>";
} else {
echo "<p>Probleem met updaten</p>";
}
}
?>
//Insert Query
for ($nr = 0; $nr <= 6; $nr++) {
$volgendeweek2 = strtotime("+$plan[$nr] day", $supertijd);
$volgendeweek = strftime("%Y-%m-%d",$volgendeweek2);
$sql = "INSERT INTO verdeling SET
Init = '$init',
Datum = '$volgendeweek',
Beschikbaarheid = '$beschikbaar1[$nr]',
Bes_over = '$urenover1[$nr]',
ProcesID = '$processen[$nr]',
Proces_uren = '$procesuren[$nr]',
RolID = '$rol[$nr]'";
echo $sql;
if (mysql_query($sql)) {
echo "<p>$nr Succesvol toegevoegd</p>";
} else {
echo "<p>$nr mislukt</p>";
}
}
//Overtollige informatie moet weg!
$sql2 = "DELETE FROM verdeling WHERE ProcesID = '' OR RolID = ''";
if (mysql_query($sql2)) {
echo "<p>Succesvol verwijderd</p>";
} else {
echo "<p>error zonder naam</p>";
}
//Beschikbaar_over goede waarde geven
$selectdatumquery = mysql_query("SELECT Datum, Init FROM verdeling ORDER BY Datum");
if (!$selectdatumquery) {
exit('<p>Query mislukt</p>');
}
while ($resultdatumquery = mysql_fetch_array($selectdatumquery)) {
$datumid2[] = htmlspecialchars($resultdatumquery['0']);
$init2[] = htmlspecialchars($resultdatumquery['1']);
}
for ($a = 0, $b = count($datumid2); $a < $b; $a++) {
$procesurenquery2 = mysql_query("SELECT sum(Proces_uren) as Procesuren, Beschikbaarheid FROM Verdeling WHERE Datum = '$datumid2[$a]' AND Init = '$init2[$a]' GROUP BY Beschikbaarheid");
if (!$procesurenquery2) {
exit('<p>Query mislukt2</p>');
}
while ($resultprocesurenquery = mysql_fetch_array($procesurenquery2)) {
$procesuren2 = htmlspecialchars($resultprocesurenquery['0']);
$beschikbaarheid2 = htmlspecialchars($resultprocesurenquery['1']);
}
$beschikbaarover2 = $beschikbaarheid2 - $procesuren2;
echo "<p>Beschikbaarheid $beschikbaarheid2[0]</p>";
echo "<p>Procesuren $procesuren2[0]</p>";
echo "<p>Beschikbaarover $beschikbaarover2</p>";
$updatebesover = "UPDATE verdeling SET
Bes_over='$beschikbaarover2'
WHERE Datum='$datumid2[$a]'";
echo $updatebesover;
if (@mysql_query($updatebesover)) {
echo "<p>$a succesvol geupdate</p>";
} else {
echo "<p>Probleem met updaten</p>";
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Wouter
//Edit: zorg ervoor dat je netjes script, dus met inspringen en variabelen zo in je queries en echo's zetten: ".$var."
Gewijzigd op 01/01/1970 01:00:00 door Thomas M
Even uitgaande dat een medewerker 'op een dag 8' uren beschikbaar heeft. En dat er voor 1 dag telkens per 2 uur een proces wordt ingedeeld. De eerste keer ziet de uitkomst er als volgt uit:
Dit klopt, 8 uur beschikbaar - 2 uur ingepland = 6 uur over
De tweede keer ziet de uitkomst er zo uit:
Dit klopt niet, 8 uur beschikbaar waarvan al 2 uur ingepland. Vervolgens wordt er 2 uur extra ingepland en de uitkomst = 6 uur over.
Als ik nu op die pagina op f5 druk en de insert query niet meetel dan geeft de update query wel de goede waardes weer
8 uur beschikbaar, 4 uur ingepland = 4 uur over
PS: Let erop dat 'beschikbaarheid' en 'procesuren' in de plaatjes de uitkomsten zijn van de query op regel 50
Gewijzigd op 01/01/1970 01:00:00 door Wouter
Volgens mij maak je dan ergens een rekenfout in het script, ik kan me herinneren dat ik zelf ook wel eens zoiets als dit heb foutgedaan en dat was een kwestie van verkeerd rekenen.