Hallo,

Ik heb 2 pagina's waarbij een waarde die op de ene wordt berekend weergegeven moet worden op de andere pagina.

Als ik het test met een vaste waarde dan werkt het prima.

pagina 1:

<?php
// Start the session
session_start();

$_SESSION['woord'] = "hallo";
?>


pagina 2:

<?php
session_start();
echo "Het woord is: " . $_SESSION['woord'] . ".";
?>


Nu probeer ik het met het onderstaande te doen in de 1e pagina


<?php
session_start();
$default_besparing = 0.00;
$besparing_dakisolatie = 0.00;

$row = $besparing->fetch_row();
$besparing_ses = $row[0];
$besparing_dakisolatie = number_format($default_besparing + $besparing_ses, 2, ",", ".");
$_SESSION['besparen'] = $besparing_dakisolatie;
?>


Op de 2e pagina heb ik dan

<?php
session_start();
echo $_SESSION['besparen'];
?>


De waarde wordt nu pas weergegeven nadat de pagina vernieuwd wordt en dat is vervelend als je iets uitrekent en daarna de pagina moet vernieuwen om het resultaat te zien.

Iemand een idee wat ik fout doe?

Alvast bedankt.
Adoptive Solution op 14/08/2020 11:28:55

Zie code 13/08/2020 12:49:45

Wijzig :

<td data-label="Besparing">


in dit :

<td id='besparing' data-label="Besparing">


Stuur in isolatie_calc.php alleen de uitgerekende waarde terug :

echo $_SESSION['besparen'];


En verwerk de ontvangen waarde :

$("#resultaat").html('Uw besparing per jaar voor dit is : €' + resultaat);
$("#besparing").html(resultaat);



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 :)
Klopt, omdat die 2 regels in de huidige pagina BUITEN de functie staan.

De regels moeten binnen de functie staan.
Zie regel 103 van de code waar ik naar verwees.

[size=xsmall]Toevoeging op 14/08/2020 17:01:34:[/size]

Ik weet niet wat je allemaal uitspookt, maar dit slaat nergens op.

Dit is de DOM, nadat het JavaScript is uitgevoerd.

<td id="besparing" data-label="Besparing"><p id="resultaat">Uw besparing per jaar voor dit is : [object HTMLParagraphElement]</p></td>





[size=xsmall]Toevoeging op 14/08/2020 17:02:51:[/size]

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.


      var num1 = $("#besparing").val();
      var num2 = $("#besparing").val();
      var uitkomst = parseInt(num1) + parseInt(num2);
      alert(uitkomst);
      $("#uitkomst").val(uitkomst);

in de html
<p id="uitkomst"></p>
In de broncode van de pagina staat dit

var a = $("#resultaat").val();
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.
Adoptive Solution op 15/08/2020 08:58:40

In de broncode van de pagina staat dit

var a = $("#resultaat").val();
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.

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.

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

[quote="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?
[/quote]

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 :(


Maar 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.
Thomas van den Heuvel op 17/08/2020 00:45:43

Maar 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.


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.


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);
           }
       });
}
Ik zou het rekenen naar de PHP-kant halen en alles gewoon kant-en-klaar aanleveren.

Realiseer je ook goed het volgende: normaal gesproken ziet een programma er als volgt uit:
A
B
C
D

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.

Reageren