2e select query uitvoeren nadat insert query is uitgevoerd.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouter

Wouter

29/10/2006 00:10:00
Quote Anchor link
Hallo,

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
 
PHP hulp

PHP hulp

17/11/2024 02:44:08
 
Thomas M

Thomas M

29/10/2006 00:16:00
Quote Anchor link
Post je code eens, het is heel vreemd dat de volgorde wordt omgedraaid :S
 
Wouter

Wouter

29/10/2006 00:19:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>";
}
}



?>
Gewijzigd op 01/01/1970 01:00:00 door Wouter
 
Thomas M

Thomas M

29/10/2006 00:22:00
Quote Anchor link
Vraagje: wordt de insert query wel uitgevoerd? En heb je misschien foutmeldingen?

//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
 
Wouter

Wouter

29/10/2006 00:23:00
Quote Anchor link
Het gekke is, als ik de query voor de eerste keer (als er nog geen data in de tabel staat) dan werk alles goed. Tweede keer en verder pakt de update query telkens de data uit de database alvorens de insert query is uitgevoerd.

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:

Afbeelding
Dit klopt, 8 uur beschikbaar - 2 uur ingepland = 6 uur over

De tweede keer ziet de uitkomst er zo uit:
Afbeelding
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
Afbeelding
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
 
Thomas M

Thomas M

29/10/2006 00:44:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.