Hallo,
Ik loop vast met mijn if statement in mijn controller.
Dit is wat er moet gebeuren:
Ik heb een formulier met een input email en ordernummer gemaakt en een alertbox met ajax jquery.
Vervolgens als het ordernummer niet 12345 is dan moet ik de status = false meegeven aan de data.


Code van mijn controller:

<?
if (isset($_POST['email'])){

$gegevens = array("email" => $_POST['email'], "order-hash" => $_POST['order-hash']);

echo json_encode($gegevens);
}
if ($gegevens['order-hash'] === '12345')
$gegevens["order-hash"] = false;
?>

Kan iemand mij helpen ?
Nee, wat doet die ['status'] in je array?
True is nog steeds geen string, en waarom kan het nu geen 'false' worden?

Is een PHP-tutorial niet een beter idee zodat je weet hoe array's werken?
Ik snap niet? ik heb nu in de array de ['status'] weggehaald.
Heb het nu zo:

<?
if (isset($_POST['email'])) {

$gegevens = array("email" => $_POST['email'], "order-hash" => $_POST['order-hash'],);

if ($gegevens['order-hash'] === '12345')
$gegevens['status'] = true;

echo json_encode($gegevens);
exit;
}
?>
- Komma is overbodig
- bouw een 'else' statement voor false
- zet true tussen quotes.

Check de uitvoer in je browser of Developer-tab.
zo werkt het ik zie in console status:true als ik in de input van ordernummer 12345 typ een andere ordernummer doet tie status:false dus het is goed!
Bedankt arien

<?
if (isset($_POST['email'])) {

$gegevens = array("email" => $_POST['email'], "order-hash" => $_POST['order-hash']);

if ($gegevens['order-hash'] === '12345')
$gegevens['status'] = true;

else{
$gegevens['status'] = false;
}

echo json_encode($gegevens);
exit;
}
?>
Of initialiseer status op false. Het lijkt mij belangrijk dat alle gegevens altijd een waarde hebben.

Zoiets dus:
<?php
if (isset($_POST['email'])) {
    $gegevens = array(
        'email'         => $_POST['email'],
        'order-hash'    => $_POST['order-hash'],
        'status'        => false,
    );

    if ($gegevens['order-hash'] === '12345') {
        $gegevens['status'] = true;
    }

    echo json_encode($gegevens);
    exit;
}
?>
Thomas werkt ook prima zal die van jouwne beter gebruiken! Bedankt voor je hulp
- Ariën - op 06/04/2018 16:01:01

- zet true tussen quotes.

Juist niet doen. Een boolean in PHP wordt netjes een boolean in JSON, en dus ook weer een boolean in Javascript. Als je "true" en "false" gaat doen worden het ook in Javascript strings, en is "false" dus ook true (want: niet lege string) ...

Ik neem trouwens aan dat die check op "order-hash" nog iets meer om handen heeft (gaat krijgen) dan puur op "12345" checken? Anders kun je dit net zo goed in client afhandelen.

[quote="Rob Doemaarwat op 06/04/2018 16:36:51"]


Ja klopt ik ben aan het oefenen vandaar.


Ik moet als status true is een alert met orderhash en e-mail weergeven
en anders een alert met de tekst "Je doet het niet goed" weergeven zodra die false is.

Kan iemand me helpen?

Mijn code:

<?php
if (isset($_POST['email'])) {
$gegevens = array('email'=> $_POST['email'], 'order-hash'=> $_POST['order-hash'], 'status'=> false,);

if ($gegevens['order-hash'] === '12345') {
$gegevens['status'] = true;
}

echo json_encode($gegevens);
exit;
}
?>

<?
<script>
$(document).ready(function(){


$("button").click(function(){
$.ajax({
type:'POST',
url: '/leren',
dataType:'json',
data:{"email": $('#email').val() , "order-hash": $('#order-hash').val(),},
success: function(data){

alert(data["email"] + " " + data["order-hash"]);
console.log(data);
}});
});

});
</script>

?>
in je success-event van je $.ajax() functie moet je een if-else constructie inbouwen, waarbij je kijkt naar de inhoud van je datavariabele. Daar staat in vermeld of de status true of false is, en dan kan je aan de hand daarvan de juiste melding tonen.

Reageren