Pagina: 1 2 3 4 volgende »
06/04/2018 13:16:25
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
<?
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 ?
20/04/2024 08:48:32
Beheerder06/04/2018 14:16:02
Of je maakt een apart 'status'-element aan met de waarde 'false', want er zijn vast geen orders die ook zo heten.
Let er wel op dat je de json_encode nog moet verhuizen.
06/04/2018 14:27:55
bedankt arien. Heb je misschien een link waar ik voorbeelden kan kijken?
Beheerder06/04/2018 14:47:37
06/04/2018 14:52:58
Je zij maak anders een apart'status'-element aan met de waarde 'false' heb je daar voorbeelden van ik kan het niet vinden.
Beheerder06/04/2018 14:59:10
Er bestaat geen tutorial voor alle oplossingen ;-)
Maar je moet dus een $gegevens['status'] aanmaken in je array met als value de string: false.
Gewijzigd op 06/04/2018 14:59:33 door
- Ariën -
06/04/2018 15:05:34
Bedoel je zo ?
Code (php)
1
2
3
4
5
6
7
8
9
<?
if (isset($_POST['email'])){
$gegevens = array("email" => $_POST['email'], "order-hash" => $_POST['order-hash'],$gegevens['status'],);
echo json_encode($gegevens);
exit;
}
?>
Gewijzigd op 06/04/2018 15:08:02 door
Beheerder06/04/2018 15:17:52
Nee.
Kijk eens hoe je array nu opgebouwd is.
Je was al op de goede weg bezig hiervoor.
06/04/2018 15:22:31
oke, maar is het zo dan goed?
Code (php)
1
2
3
4
5
6
7
8
9
10
<?
if (isset($_POST['email'])){
$gegevens = array("email" => $_POST['email'], "order-hash" => $_POST['order-hash'], ['status']);
echo json_encode($gegevens);
}
if ($gegevens['order-hash'] === '12345')
$gegevens['status'] = false;
?>
Gewijzigd op 06/04/2018 15:22:50 door
Beheerder06/04/2018 15:25:30
Als je die json_encode naar beneden verhuist, en false als string behandelt. In overige gevallen is het het beste om status een true mee te geven.
Dan kan je hier makkelijk op controleren in je JavaScript:
Eerst kijken naar de status, en dan de orderhash tonen.
Gewijzigd op 06/04/2018 15:31:02 door
- Ariën -
06/04/2018 15:38:04
De json_encode heb ik nu naar beneden verhuist. Ik doet het even stap voor stap klopt het zo?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
<?
if (isset($_POST['email'])) {
$gegevens = array("email" => $_POST['email'], "order-hash" => $_POST['order-hash'], ['status']);
if ($gegevens['order-hash'] === '12345')
$gegevens['status'] = true;
echo json_encode($gegevens);
exit;
}
?>
Beheerder06/04/2018 15:44:17
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?
Gewijzigd op 06/04/2018 15:44:48 door
- Ariën -
06/04/2018 15:56:48
Ik snap niet? ik heb nu in de array de ['status'] weggehaald.
Heb het nu zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
<?
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;
}
?>
Beheerder06/04/2018 16:01:01
- Komma is overbodig
- bouw een 'else' statement voor false
- zet true tussen quotes.
Check de uitvoer in je browser of Developer-tab.
06/04/2018 16:10:48
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
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;
}
?>
Gewijzigd op 06/04/2018 16:14:17 door
06/04/2018 16:13:10
Of initialiseer status op false. Het lijkt mij belangrijk dat alle gegevens altijd een waarde hebben.
Zoiets dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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;
}
?>
06/04/2018 16:16:39
Thomas werkt ook prima zal die van jouwne beter gebruiken! Bedankt voor je hulp
Gewijzigd op 06/04/2018 16:32:49 door
06/04/2018 16:36:51
- 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.
06/04/2018 16:48:40
Rob Doemaarwat op 06/04/2018 16:36:51:
Ja klopt ik ben aan het oefenen vandaar.
Gewijzigd op 06/04/2018 16:49:26 door
10/04/2018 11:16:46
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
<?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;
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
<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>?>
Beheerder10/04/2018 11:24:06
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.
Dit topic is gesloten.