[PHP] Variabelen met Ajax uit een extern php bestand

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Voor een betaalpagina voor een webshop heb ik een vraag.

Ik heb een select list waarin ik een land selecteer. Aan de hand van het gekozen land worden de betaal- en verzendmethodes live aangepast. Ik wil dus eigenlijk een live update van mijn mysql query met ajax.

Nu heb ik een extern php bestand met de 2 queries en het php bestand met het formulier. Het externe php bestand met de 2 queries werkt. De queries worden aan de hand van het gekozen land goed aangepast.

Hoe kan ik echter de queries weer gebruiken in het php bestand (afrekenen.php) met het formulier?

Extern php bestand met de queries (formulier.php):
PHP:
1
2
3
4
5
6
7
8
9
if (isset($_GET["select"]) && ($_GET["select"] != "")){
    $land_id = utf8_decode(htmlentities($_GET["select"]));
        $query_verzendkosten = "SELECT verzendkosten.* FROM verzendkosten, talen WHERE verzendkosten.taal_id = '".mysql_real_escape_string($var_taal_id)."' AND verzendkosten.land_id = talen.id AND talen.id = '".mysql_real_escape_string($land_id)."' ORDER BY verzendkosten.rangorde";
        echo $query_verzendkosten;
                                
            $query_betaalmethode = "SELECT betaalmethode.id, betaalmethode.betaalmethode_id, betaalmethode.naam, betaalmethode.omschrijving, betaalmethode.logo, betaalmethode.bedrag, betaalmethode.procent FROM betaalmethode, talen WHERE betaalmethode.status = '1' AND betaalmethode.taal_id = '".mysql_real_escape_string($var_taal_id)."' AND betaalmethode.land_id = talen.id AND talen.id = '".mysql_real_escape_string($land_id)."' ORDER BY betaalmethode.rangorde";
            echo $query_betaalmethode;
    
}


AJAX Code:
JavaScript:
1
2
3
4
5
6
7
8
$(document).ready(function(){
  $('#select').change(function() {
    var option = $(this).val();
    $.get('formulier.php', {select:option}, function(data) {
      $('#checkout_verzendmethodes').html(data).hide().fadeIn(1000);
    });
  });
});


Het formulier (afrekenen.php):
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
echo "<div id=\"checkout_verzendmethodes\"></div>
                                    <div class=\"item-block icon second\">
                                    <h1>".$var_430."</h1>\n";
                                    $result_verzendkosten = mysql_query($query_verzendkosten);
                                        while ($row_verzendkosten = mysql_fetch_array($result_verzendkosten)){
                                            
                                            // VERZENDKOSTEN BEREKENEN
                                            if (($_SESSION["bedrag_winkelmandje"] > $row_verzendkosten['minimum_bedrag'] || $_SESSION["bedrag_winkelmandje"] == $row_verzendkosten['minimum_bedrag']) && ($row_verzendkosten['datumkeuze'] != '1')){
                                                $verzendkosten_intern = 0;
                                                $verzendkosten = "".$var_130."";
                                            }
                                            else {
                                                $verzendkosten_intern = $row_verzendkosten['kosten'];
                                                $verzendkosten = $row_verzendkosten['kosten'];
                                                $verzendkosten = number_format($verzendkosten, 2, ',', '');
                                                $verzendkosten = "&euro; ".$verzendkosten."";
                                            }
                                            
                                            
                                        echo "<div class=\"icon-holder\">
                                            <strong class=\"price\">".$verzendkosten."</strong>\n";
                                            if ($i == 1){
                                                echo "<input type=\"radio\" checked=\"checked\" name=\"verzendkosten_".$row_verzendkosten['id']."\">\n";
                                            }
                                            else{
                                                echo "<input type=\"radio\" name=\"verzendkosten_".$row_verzendkosten['id']."\">\n";    
                                            }
                                            echo "<div class=\"icon-image\">
                                                <img src=\"/images/".$row_verzendkosten['icon']."\" alt=\"".$row_verzendkosten['naam']."\">
                                            </div>
                                            <div class=\"icon-description\">
                                                <h2>".$row_verzendkosten['naam']."</h2>
                                                <p>".$row_verzendkosten['omschrijving']."</p>
                                                <strong class=\"price\">".$verzendkosten."</strong>
                                            </div>
                                        </div>
                                    </div>\n";
                                        }    
echo "</div>\n";

Acties:
  • 0 Henk 'm!

Verwijderd

Je haalt de informatie op met jQuery wat betekend dat je dit client side doet. Dit betekend dat je dus nooit de php variable aan kan roepen zonder een page reload.

Je zult daarom de divs moeten vullen met de data uit je ajax call. Dit kun je doen door simpel de waarden in te schrijven mbv de classes of id's die je gegeven hebt.

Wat je nu probeerd is de query te echo'n en die vervolgens op te roepen, wat je beter kan doen is in de ajax call de query uitvoeren en vervolgens de resultaten in een goed uitleesbaar formaat terug laten sturen. Aangezien je geen client data in een server script uit kan voeren zonder een server call.

Ik hoop dat het zo duidelijk is :P