php session werkt niet correct op 2e pagina
Pagina: « vorige 1 2 3 volgende »
Is het probleem nu opgelost dan?
Ozzie PHP op 12/08/2020 23:40:27:
>> Heb ik in de index geplaatst en dan krijg ik de melding "nothing here yet. Als ik pagina vernieuw zie ik de juiste waarde.
Is het probleem nu opgelost dan?
Is het probleem nu opgelost dan?
Nee want ik zou graag zien dat de waarde uit zichzelf veranderd zodra de waarde in de dropdowns veranderen. Als ik de pagina vernieuw zie je de waarde wel maar ben je de rest kwijt.
En wat heb je gedaan om dat te bereiken? Hoe ziet je code er nu uit?
Ozzie PHP op 13/08/2020 12:13:21:
En wat heb je gedaan om dat te bereiken? Hoe ziet je code er nu uit?
index.php
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
// Start the session
session_start();
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
?>
<div>
<table>
<thead>
<tr>
<th scope="col">Huidige situatie</th>
<th scope="col">Na renovatie</th>
<th scope="col">Besparing</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Huidige situatie">
<label>Isolatie :</label>
<select id="isolatie_huidig" name="isolatie_huidig" class="isolatie_huidig">
<option value="10000">Selecteer isolatie</option>
<?php
include('database.php');
$result = mysqli_query($con,"select * from isolatie_huidig");
while($row=mysqli_fetch_array($result))
{
echo '<option value="'.$row['huidig_id'].'">'.$row['huidig_status'].'</option>';
}
?>
</select>
</td>
<td data-label="Na renovatie">
<label>Isolatie na renovatie</label>
<select id="isolatie_renovatie" name="isolatie_renovatie" class="isolatie_renovatie" >
<option>Selecteer isolatie</option>
</select>
</td>
<td data-label="Besparing">
<?php
if (isset($_SESSION['besparen'])) {
echo $_SESSION['besparen'];
} else {
echo 'niets';
}
?>
</td>
</tr>
</tbody>
</table>
<p id="resultaat"></p>
<br/><br/>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function()
{
$("#isolatie_huidig").change(function()
{
var huidig_id = $(this).val();
var post_id = 'id='+ huidig_id;
$.ajax ({
type: "POST",
url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie.php",
data: post_id,
cache: false,
success: function(isolatie)
{
$("#isolatie_renovatie").html(isolatie);
singleSelectChangeValue();
getCalcValues( post_id );
}
});
});
});
$("#isolatie_renovatie").change(function()
{
var huidig_id = $(this).val();
var post_id = 'id='+ huidig_id;
getCalcValues( post_id );
});
function getCalcValues( test )
{
$.ajax ({
type: "POST",
url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie_calc.php",
data: test,
cache: false,
success: function(resultaat)
{
$("#resultaat").html(resultaat);
}
});
}
function singleSelectChangeValue()
{
var selObj = document.getElementById("isolatie_renovatie");
var selValue = selObj.options[selObj.selectedIndex].value;
var selText = selObj.options[selObj.selectedIndex].text;
}
</script>
// Start the session
session_start();
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
?>
<div>
<table>
<thead>
<tr>
<th scope="col">Huidige situatie</th>
<th scope="col">Na renovatie</th>
<th scope="col">Besparing</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Huidige situatie">
<label>Isolatie :</label>
<select id="isolatie_huidig" name="isolatie_huidig" class="isolatie_huidig">
<option value="10000">Selecteer isolatie</option>
<?php
include('database.php');
$result = mysqli_query($con,"select * from isolatie_huidig");
while($row=mysqli_fetch_array($result))
{
echo '<option value="'.$row['huidig_id'].'">'.$row['huidig_status'].'</option>';
}
?>
</select>
</td>
<td data-label="Na renovatie">
<label>Isolatie na renovatie</label>
<select id="isolatie_renovatie" name="isolatie_renovatie" class="isolatie_renovatie" >
<option>Selecteer isolatie</option>
</select>
</td>
<td data-label="Besparing">
<?php
if (isset($_SESSION['besparen'])) {
echo $_SESSION['besparen'];
} else {
echo 'niets';
}
?>
</td>
</tr>
</tbody>
</table>
<p id="resultaat"></p>
<br/><br/>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function()
{
$("#isolatie_huidig").change(function()
{
var huidig_id = $(this).val();
var post_id = 'id='+ huidig_id;
$.ajax ({
type: "POST",
url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie.php",
data: post_id,
cache: false,
success: function(isolatie)
{
$("#isolatie_renovatie").html(isolatie);
singleSelectChangeValue();
getCalcValues( post_id );
}
});
});
});
$("#isolatie_renovatie").change(function()
{
var huidig_id = $(this).val();
var post_id = 'id='+ huidig_id;
getCalcValues( post_id );
});
function getCalcValues( test )
{
$.ajax ({
type: "POST",
url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie_calc.php",
data: test,
cache: false,
success: function(resultaat)
{
$("#resultaat").html(resultaat);
}
});
}
function singleSelectChangeValue()
{
var selObj = document.getElementById("isolatie_renovatie");
var selValue = selObj.options[selObj.selectedIndex].value;
var selText = selObj.options[selObj.selectedIndex].text;
}
</script>
isolatie_calc.php
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
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
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
if (isset($_SESSION['besparen'])) {
echo $_SESSION['besparen'];
} else {
echo 'nothing here yet';
}
?>
<?php
include('db.php');
if( $_POST['id'] )
{
$id = $_POST['id'];
$default_besparing = 0.00;
$besparing_dakisolatie = 0.00;
$textenergielabel = 'Uw energielabel wordt: ';
$besparing = $con->query('SELECT besparingsbedrag FROM isolatie_renovatie WHERE huidig_id = "' . $id . '";' );
$row = $besparing->fetch_row();
$besparing_ses = $row[0];
$_POST['$besparing_dakisolatie'] = $default_besparing + $besparing_ses;
$_SESSION['besparen'] = number_format($_POST['$besparing_dakisolatie'], 2, ",", ".");
echo 'Uw besparing per jaar voor dit is: €'; echo $_SESSION['besparen'];
echo '<br/><br/>';
}
?>
session_start();
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
if (isset($_SESSION['besparen'])) {
echo $_SESSION['besparen'];
} else {
echo 'nothing here yet';
}
?>
<?php
include('db.php');
if( $_POST['id'] )
{
$id = $_POST['id'];
$default_besparing = 0.00;
$besparing_dakisolatie = 0.00;
$textenergielabel = 'Uw energielabel wordt: ';
$besparing = $con->query('SELECT besparingsbedrag FROM isolatie_renovatie WHERE huidig_id = "' . $id . '";' );
$row = $besparing->fetch_row();
$besparing_ses = $row[0];
$_POST['$besparing_dakisolatie'] = $default_besparing + $besparing_ses;
$_SESSION['besparen'] = number_format($_POST['$besparing_dakisolatie'], 2, ",", ".");
echo 'Uw besparing per jaar voor dit is: €'; echo $_SESSION['besparen'];
echo '<br/><br/>';
}
?>
isolatie.php
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
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
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
?>
<?php
include('db.php');
if( $_POST['id'] )
{
$id = $_POST['id'];
$options = '';
if ( $id <= 9999 )
{
if ( $id == 1 )
{
$result = $con->query("SELECT * FROM isolatie_renovatie");
} else {
$result = $con->query('SELECT * FROM isolatie_renovatie WHERE huidig_id = "' . $id . '"');
}
while($row = mysqli_fetch_object($result))
{
$options .= '<option value="' . $row->renovatie_id . '">' . $row->renovatie_status . ' | ' . $row->indexwaarde . '</option>' ;
}
} else {
$options .= '<option value="0">Selecteer eerst isolatie</option>' . PHP_EOL;
}
echo $options;
}
?>
session_start();
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
?>
<?php
include('db.php');
if( $_POST['id'] )
{
$id = $_POST['id'];
$options = '';
if ( $id <= 9999 )
{
if ( $id == 1 )
{
$result = $con->query("SELECT * FROM isolatie_renovatie");
} else {
$result = $con->query('SELECT * FROM isolatie_renovatie WHERE huidig_id = "' . $id . '"');
}
while($row = mysqli_fetch_object($result))
{
$options .= '<option value="' . $row->renovatie_id . '">' . $row->renovatie_status . ' | ' . $row->indexwaarde . '</option>' ;
}
} else {
$options .= '<option value="0">Selecteer eerst isolatie</option>' . PHP_EOL;
}
echo $options;
}
?>
Code is aangeleverd door Adoptive Solution en daar ben ik mee verder gaan proberen.
Je ziet op de test pagina dat de waarde van AJAX wel steeds vernieuwd maar de waarde in de sessie steeds 1 achter loopt.
http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/index.php
Gewijzigd op 13/08/2020 13:21:51 door Roy B
Dat gezegd hebbende ... het stukje waar het om gaat is volgens mij dit:
Code (php)
Op het moment dat je de pagina de allereerste keer inlaadt is de waarde/sessie nog niet gewijzigd en dus wordt de standaardwaarde 'niets' getoond. Als je dan de dropdown wijzigt, zul je tevens de waarde in die <td></td> moeten vervangen door de juiste waarde.
Ozzie PHP op 13/08/2020 16:11:16:
Als eerste .. probeer je code beter te structureren. Stukken php-code tussen de html is niet overzichtelijk. Beter is het om de berekeningen in php bovenaan de pagina te maken en om dan in de html-code alleen een php-variabele te echo'en.
Als ik het aan het werk krijg dan ga ik dat zeker aanpassen.
Ozzie PHP op 13/08/2020 16:11:16:
Dat gezegd hebbende ... het stukje waar het om gaat is volgens mij dit:
Op het moment dat je de pagina de allereerste keer inlaadt is de waarde/sessie nog niet gewijzigd en dus wordt de standaardwaarde 'niets' getoond. Als je dan de dropdown wijzigt, zul je tevens de waarde in die <td></td> moeten vervangen door de juiste waarde.
Code (php)
Op het moment dat je de pagina de allereerste keer inlaadt is de waarde/sessie nog niet gewijzigd en dus wordt de standaardwaarde 'niets' getoond. Als je dan de dropdown wijzigt, zul je tevens de waarde in die <td></td> moeten vervangen door de juiste waarde.
Het gaat idd om dat stukje, maar het probleem is dat ik het dat niet voor elkaar krijg. Er moet dan iets komen die controleert of de dropdown veranderd.
Ik zou de sessie voornamelijk gebruiken voor initialisatie, bijvoorbeeld voor het moment dat iemand besluit de pagina te verversen tijdens het selectieproces ofzo.
Omdat je gebruik maakt van AJAX-calls is het misschien handig dat je je formulieren ook op dezelfde manier initialiseert zodat je niet twee dingen (het initieel opbouwen van de pagina en het aanpassen van de dropdowns via AJAX-calls) op verschillende manieren probeert te doen, dus voorkom dat je verschillende routines hebt die in wezen hetzelfde doen.
singleSelectChangeValue() doet op dit moment ook niets omdat die variabelen alleen binnen de context van die functie bestaan?
Misschien is het het makkelijkste om dit stap voor stap uit te werken. Schrijf eerst code voor de eerste dropdown, dan voor de tweede. Zorg dat dit alles werkt, en kijk vervolgens terug hoe e.e.a. eventueel efficiënter aangepakt kan worden. Laat misschien in eerste instantie de sessie in het geheel achterwege, dit zorgt enkel voor extra complexiteit. Probeer ook vooral niet alles tegelijkertijd te doen maar compartimenteer dit in stappen, zodat je makkelijker het overzicht kunt bewaren. Ik heb namelijk de indruk dat vooral dit laatste een probleem is, dus maak het jezelf makkelijk door het op te delen in stukken en doe één ding tegelijkertijd :).
Thomas van den Heuvel op 13/08/2020 17:12:24:
Ik denk dat je best e.e.a. kunt combineren? Je kunt best een boodschap tonen en tegelijkertijd een nieuwe dropdown weergeven. JSON kan prima een array met al deze informatie-elementen teruggeven.
Aangezien ik het niet voor elkaar krijg heb ik even naar jouw suggestie JSON gekeken, wat voorbeelden gevonden en wat getest.
1 voorbeeld heeft 3 dropdowns en die heb ik aangepast en dat werkt. Dit is hoe ik nu het json bestand heb. Is dat op een juiste wijze of kan het ook beter?
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
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
[
{
"id":"1",
"name": "geen isolatie",
"parent_id":"0"
},
{
"id":"2",
"name": "goede isolatie",
"parent_id":"0"
},
{
"id":"3",
"name": "betere isolatie",
"parent_id":"0"
},
{
"id":"4",
"name": "beste isolatie",
"parent_id":"0"
},
{
"id":"5",
"name": "geen isolatie",
"parent_id":"1"
},
{
"id":"6",
"name": "goede isolatie",
"parent_id":"1"
},
{
"id":"7",
"name": "betere isolatie",
"parent_id":"1"
},
{
"id":"8",
"name": "beste isolatie",
"parent_id":"1"
},
{
"id":"9",
"name": "geen besparing",
"parent_id":"5"
},
{
"id":"10",
"name": " 793,00",
"parent_id":"6"
},
{
"id":"11",
"name": " 845,00",
"parent_id":"7"
},
{
"id":"12",
"name": " 905,00",
"parent_id":"8"
}
]
{
"id":"1",
"name": "geen isolatie",
"parent_id":"0"
},
{
"id":"2",
"name": "goede isolatie",
"parent_id":"0"
},
{
"id":"3",
"name": "betere isolatie",
"parent_id":"0"
},
{
"id":"4",
"name": "beste isolatie",
"parent_id":"0"
},
{
"id":"5",
"name": "geen isolatie",
"parent_id":"1"
},
{
"id":"6",
"name": "goede isolatie",
"parent_id":"1"
},
{
"id":"7",
"name": "betere isolatie",
"parent_id":"1"
},
{
"id":"8",
"name": "beste isolatie",
"parent_id":"1"
},
{
"id":"9",
"name": "geen besparing",
"parent_id":"5"
},
{
"id":"10",
"name": " 793,00",
"parent_id":"6"
},
{
"id":"11",
"name": " 845,00",
"parent_id":"7"
},
{
"id":"12",
"name": " 905,00",
"parent_id":"8"
}
]
De waarden met de bedragen staan nu ook in een dropdown. Deze wil ik gewoon als tekst weergegeven. Daarvoor zal onderstaande aangepast moeten worden en moet ik de waarde van de besparing kunnen gebruiken om meerdere bij elkaar op te tellen. Kun je me daar mee op weg helpen?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$(document).on('change', '#huidig', function(){
var huidig_id = $(this).val();
if(huidig_id != '')
{
load_json_data('nieuw', huidig_id);
}
else
{
$('#nieuw').html('<option value="">Select nieuw</option>');
$('#besparing').html('<option value="">Select besparing</option>');
}
});
$(document).on('change', '#nieuw', function(){
var nieuw_id = $(this).val();
if(nieuw_id != '')
{
load_json_data('besparing', nieuw_id);
}
else
{
$('#besparing').html('<option value="">Select besparing</option>');
}
});
});
var huidig_id = $(this).val();
if(huidig_id != '')
{
load_json_data('nieuw', huidig_id);
}
else
{
$('#nieuw').html('<option value="">Select nieuw</option>');
$('#besparing').html('<option value="">Select besparing</option>');
}
});
$(document).on('change', '#nieuw', function(){
var nieuw_id = $(this).val();
if(nieuw_id != '')
{
load_json_data('besparing', nieuw_id);
}
else
{
$('#besparing').html('<option value="">Select besparing</option>');
}
});
});
Wijzig :
in dit :
Stuur in isolatie_calc.php alleen de uitgerekende waarde terug :
En verwerk de ontvangen waarde :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$return = []; // JSON response
$return['message'] = 'Hallo Pietje Puk';
ob_start(); // gebruik output buffering, scheelt je een hoop quotes enzo
$result = $con->query('...');
while ($row = $result->fetch_assoc()) {
// voor de goede orde zouden waarden van $row ook ge-escaped moeten worden met htmlspecialchars()
// indien deze in een HTML-context gebruikt worden zoals hieronder het geval is
?><option value="<?php echo $row['some_key']; ?>"><?php echo $row['some_value']; ?></option><?php
}
$return['options'] = ob_get_clean();
// bouw de response
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($return);
?>
$return = []; // JSON response
$return['message'] = 'Hallo Pietje Puk';
ob_start(); // gebruik output buffering, scheelt je een hoop quotes enzo
$result = $con->query('...');
while ($row = $result->fetch_assoc()) {
// voor de goede orde zouden waarden van $row ook ge-escaped moeten worden met htmlspecialchars()
// indien deze in een HTML-context gebruikt worden zoals hieronder het geval is
?><option value="<?php echo $row['some_key']; ?>"><?php echo $row['some_value']; ?></option><?php
}
$return['options'] = ob_get_clean();
// bouw de response
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($return);
?>
Nu bevat de response twee elementen: message en options.
Adoptive Solution op 14/08/2020 11:28:55:
Zie code 13/08/2020 12:49:45
Wijzig :
in dit :
Stuur in isolatie_calc.php alleen de uitgerekende waarde terug :
En verwerk de ontvangen waarde :
Wijzig :
in dit :
Stuur in isolatie_calc.php alleen de uitgerekende waarde terug :
En verwerk de ontvangen waarde :
Dank je voor de uitleg. Ik heb deze toegepast en het werkt zodra er een keus in een dropdown gemaakt wordt. Kom je voor het eerst op de pagina dan krijg je
Uw besparing per jaar voor dit is : [object HTMLParagraphElement]
te zien. Maar verder werkt het :)
De regels moeten binnen de functie staan.
Zie regel 103 van de code waar ik naar verwees.
Toevoeging op 14/08/2020 17:01:34:
Ik weet niet wat je allemaal uitspookt, maar dit slaat nergens op.
Dit is de DOM, nadat het JavaScript is uitgevoerd.
Code (php)
1
<td id="besparing" data-label="Besparing"><p id="resultaat">Uw besparing per jaar voor dit is : [object HTMLParagraphElement]</p></td>
Toevoeging op 14/08/2020 17:02:51:
Zojuist weer gekeken, en nu gaat het goed.
Adoptive Solution op 14/08/2020 16:37:28:
Ik weet niet wat je allemaal uitspookt, maar dit slaat nergens op.
Beetje aan het testen en denk dat je net op het verkeerde moment keek. :)
Nog even een vraagje.
Ik probeer het resultaat van de besparing bij zichzelf op te tellen. Dit omdat er nog meer isolatie soorten zijn met een besparingsresultaat en die wil ik optellen bij elkaar. Dus probeer eerst dit ene resultaat bij zichzelf op te tellen.
Ik heb wat dingen geprobeerd maar krijg dan 793 793 te zien ipv 1586.
Heb nu onderstaand maar krijg geen waarde te zien.
Code (php)
1
2
3
4
5
2
3
4
5
var num1 = $("#besparing").val();
var num2 = $("#besparing").val();
var uitkomst = parseInt(num1) + parseInt(num2);
alert(uitkomst);
$("#uitkomst").val(uitkomst);
var num2 = $("#besparing").val();
var uitkomst = parseInt(num1) + parseInt(num2);
alert(uitkomst);
$("#uitkomst").val(uitkomst);
in de html
<p id="uitkomst"></p>
Gewijzigd op 15/08/2020 00:50:52 door Roy B
Code (php)
1
2
3
4
2
3
4
var a = $("#resultaat").val();
var b = $("#besparing").val();
var answer = parseInt(num1) + parseInt(num2);
$("#answer").val(answer);
var b = $("#besparing").val();
var answer = parseInt(num1) + parseInt(num2);
$("#answer").val(answer);
Je zet het resultaat in a en b maar je rekent met num1 en num2.
Er is ook een tabelcel bijgekomen met id="answer".
Bovendien is <p id="resultaat" > verandert in <p id="answer">.
Dus je vraagt iets op wat niet bestaat en je rekent er ook nog eens mee.
Gewijzigd op 15/08/2020 08:59:14 door Adoptive Solution
Adoptive Solution op 15/08/2020 08:58:40:
Klopt had ik aangepast maar nog niet in het juiste test mapje geupload. Nu wel.
Adoptive Solution op 15/08/2020 08:58:40:
Er is ook een tabelcel bijgekomen met id="answer".
Ik probeer het net zoals de besparing in een <td> te zetten.
Adoptive Solution op 15/08/2020 08:58:40:
Bovendien is <p id="resultaat" > verandert in <p id="answer">.
Dus je vraagt iets op wat niet bestaat en je rekent er ook nog eens mee.
Dus je vraagt iets op wat niet bestaat en je rekent er ook nog eens mee.
Ik dacht omdat $("#answer").val(answer); wordt gebruikt ik dus het id van de <p> in answer kan veranderen zodat daar het antwoord komt te staan.
Zoals ik al zei, ik probeer gewoon dingen uit. Had dit op internet gevonden en probeer het aan te passen naar mijn wensen.
Roy Bulten op 15/08/2020 10:46:39:
Klopt had ik aangepast maar nog niet in het juiste test mapje geupload. Nu wel.
Betekent dit dat je geen lokale ontwikkelomgeving hebt waarbij je dingen die je hebt geprogrammeerd direct kunt testen?
Thomas van den Heuvel op 15/08/2020 11:30:23:
Betekent dit dat je geen lokale ontwikkelomgeving hebt waarbij je dingen die je hebt geprogrammeerd direct kunt testen?
Roy Bulten op 15/08/2020 10:46:39:
Klopt had ik aangepast maar nog niet in het juiste test mapje geupload. Nu wel.
Betekent dit dat je geen lokale ontwikkelomgeving hebt waarbij je dingen die je hebt geprogrammeerd direct kunt testen?
Jawel, maar zet het online zodat jullie kunnen meekijken.
Want je hebt al wel gezien dat ik zonde jullie hulp er niet helemaal uitkom...... :D
Zie vorig bericht van me :(
Gewijzigd op 15/08/2020 11:38:34 door Roy B
val() is voornamelijk bedoeld om formulierwaarden uit te lezen en terug te plaatsen.
Als je de (HTML-)inhoud van een element wilt aanpassen/vervangen dan moet je waarschijnlijk html() gebruiken.
Maar Als je de (HTML-)inhoud van een element wilt aanpassen/vervangen dan moet je waarschijnlijk html() gebruiken.
Gewijzigd op 17/08/2020 00:46:00 door Thomas van den Heuvel
Thomas van den Heuvel op 17/08/2020 00:45:43:
Je hebt gelijk. Dat heb ik nu ook en het werkt. Ik wil daarbij ook de indexwaarde uitlezen en het lijkt erop of me dat gelukt is met onderstaande code. Vraag me alleen af of het wel helemaal correct is en of dat zo mag. Heb dezelfde code gebruikt als bij isolatie_calc en deze in een nieuw bestand gezet en indexwaarde_calc genoemd. Hier haal ik dan de indexwaarde uit de database afhankelijk van het id.
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
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
function getCalcValues( data )
{
$.ajax ({
type: "POST",
url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie_calc.php",
data: data,
cache: false,
success: function(resultaat)
{
$("#besparing").html(resultaat);
var num1 = resultaat;
var num2 = resultaat;
var answer = parseInt(num1) + parseInt(num2);
$("#answer").html(answer);
}
});
$.ajax ({
type: "POST",
url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/indexwaarde_calc.php",
data: data,
cache: false,
success: function(indexwaarde_isolatie)
{
$("#indexw").html(indexwaarde_isolatie);
}
});
}
{
$.ajax ({
type: "POST",
url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/isolatie_calc.php",
data: data,
cache: false,
success: function(resultaat)
{
$("#besparing").html(resultaat);
var num1 = resultaat;
var num2 = resultaat;
var answer = parseInt(num1) + parseInt(num2);
$("#answer").html(answer);
}
});
$.ajax ({
type: "POST",
url: "http://www.eenwebsitemetwordpress.nl/wp-content/themes/breno-child/besparingscalculator/indexwaarde_calc.php",
data: data,
cache: false,
success: function(indexwaarde_isolatie)
{
$("#indexw").html(indexwaarde_isolatie);
}
});
}
Realiseer je ook goed het volgende: normaal gesproken ziet een programma er als volgt uit:
B wordt pas uitgevoerd nadat A klaar is, C na B en D na C in een normaal, lineair geprogrammeerd programma.
Zo ook bij een AJAX-call, maar niet helemaal. Deze wordt gestart, maar vervolgens loopt het programma verder, dus daarna wordt de tweede AJAX-call gestart, maar mogelijk is de eerste dan dus nog niet klaar. Het is dus absoluut niet gegarandeerd dat AJAX-call #1 is afgerond voordat AJAX-call #2 begint.
Als de ene call informatie nodig heeft uit de andere ben je beter af met het doen van een tweede call in het success-deel van de eerste call indien call #2 informatie nodig heeft uit call #1. Of dus nog veel makkelijker, combineer dit alles en doe gewoon één call naar één PHP-script die alles voor je uitrekent, dat lijkt mij stukken eenvoudiger dan wat je nu aan het doen bent.
Waarschijnlijk ook bedoeld als voorbeeld maar "answer" doet nu gewoon 2x de waarde van "resultaat" en dit kan dus ook aan de serverkant plaatsvinden, ik zou de clientzijde (AJAX, JavaScript etc.) voor weergave gebruiken, en de serverzijde het rekenwerk laten doen in PHP.
Dus ja, de bovenstaande constructie (twee AJAX-calls in serie) is in zekere zin ongewoon en het is dus ook heel erg belangrijk dat je de mogelijke implicaties van zo'n (wat mij betreft ongewenste) constructie begrijpt.
EDIT en dat dit dus ongewenste gevolgen kan hebben als de ene call af en toe sneller klaar is dan de andere.
Gewijzigd op 17/08/2020 19:53:33 door Thomas van den Heuvel