Informatie van JavaScript naar PHP bestand
Hopelijk kan iemand mij helpen met mijn volgende probleem:
Ik heb een index pagina waar men een aantal sterren kan geven aan mijn site. Zie hieronder voor hetgeen waar het om gaat:
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
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
<div align="left" style="background: #f2f2f2; padding: 50px; color: white; border-radius:5px;">
<i class="fa fa-star fa-2x" data-index="0"></i>
<i class="fa fa-star fa-2x" data-index="1"></i>
<i class="fa fa-star fa-2x" data-index="2"></i>
<i class="fa fa-star fa-2x" data-index="3"></i>
<i class="fa fa-star fa-2x" data-index="4"></i>
</div>
<script>
var ratedIndex = -1, uID = 0;
$(document).ready(function () {
resetStarColors();
if (localStorage.getItem('ratedIndex') != null) {
setStars(parseInt(localStorage.getItem('ratedIndex')));
uID = localStorage.getItem('uID');
}
$('.fa-star').on('click', function () {
ratedIndex = parseInt($(this).data('index'));
localStorage.setItem('ratedIndex', ratedIndex);
saveToMail();
});
$('.fa-star').mouseover(function () {
resetStarColors();
var currentIndex = parseInt($(this).data('index'));
setStars(currentIndex);
});
$('.fa-star').mouseleave(function () {
resetStarColors();
if (ratedIndex != -1)
setStars(ratedIndex);
});
});
function saveToMail() {
$.ajax({
url: "invoer.php",
method: "POST",
dataType: 'json',
data: {
save: 1,
uID: uID,
ratedIndex: ratedIndex
}, success: function (r) {
uID = r.id;
localStorage.setItem('uID', uID);
}
});
}
function setStars(max) {
for (var i=0; i <= max; i++)
$('.fa-star:eq('+i+')').css('color', '#fbc406');
}
function resetStarColors() {
$('.fa-star').css('color', 'white');
}
</script>
<i class="fa fa-star fa-2x" data-index="0"></i>
<i class="fa fa-star fa-2x" data-index="1"></i>
<i class="fa fa-star fa-2x" data-index="2"></i>
<i class="fa fa-star fa-2x" data-index="3"></i>
<i class="fa fa-star fa-2x" data-index="4"></i>
</div>
<script>
var ratedIndex = -1, uID = 0;
$(document).ready(function () {
resetStarColors();
if (localStorage.getItem('ratedIndex') != null) {
setStars(parseInt(localStorage.getItem('ratedIndex')));
uID = localStorage.getItem('uID');
}
$('.fa-star').on('click', function () {
ratedIndex = parseInt($(this).data('index'));
localStorage.setItem('ratedIndex', ratedIndex);
saveToMail();
});
$('.fa-star').mouseover(function () {
resetStarColors();
var currentIndex = parseInt($(this).data('index'));
setStars(currentIndex);
});
$('.fa-star').mouseleave(function () {
resetStarColors();
if (ratedIndex != -1)
setStars(ratedIndex);
});
});
function saveToMail() {
$.ajax({
url: "invoer.php",
method: "POST",
dataType: 'json',
data: {
save: 1,
uID: uID,
ratedIndex: ratedIndex
}, success: function (r) {
uID = r.id;
localStorage.setItem('uID', uID);
}
});
}
function setStars(max) {
for (var i=0; i <= max; i++)
$('.fa-star:eq('+i+')').css('color', '#fbc406');
}
function resetStarColors() {
$('.fa-star').css('color', 'white');
}
</script>
Als ik dus bij de console van Chome ratedIndex invul krijg ik de daadwerkelijke rating met het javaScript is niks fout dus. Maar nu moet ik die rating in het onderstaande PHP bestand krijgen. Ik deed nu $_POST['ratedIndex']; (zie regel 8), maar dan komt er in de mail een 1 te staan. Hij pakt de ratedIndex dus niet en telt daar 1 bij op en krijg ik dus 1. Maar hoe fix ik dit?
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
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
<?php
if(isset($_POST['submit-feedback'])){
$firstname= $_POST['firstname'];
$lastname= $_POST['lastname'];
$message= $_POST['message'];
$mailFrom = $_POST['mail'];
$ratedIndex = $_POST['ratedIndex'];
$ratedIndex++;
// verwijder alle verboden tekens van het email adres
$mailFrom = filter_var($mailFrom, FILTER_SANITIZE_EMAIL);
// geldig e-mailadres
if (filter_var($mailFrom, FILTER_VALIDATE_EMAIL)) {
$subject = "Someone gave you feedback!";
$mailTo = "[email protected]";
$headers = "From: ".$mailFrom;
$txt = "You got feedback from: ".$mailFrom.".\n\n".$message.".\n\n"."His/Hers rating was: ".$ratedIndex;
mail($mailTo, $subject, $txt, $headers);
header("Location: ../feedback/index.php");
}else{
echo 'The email you put in is invalid!';
}
}else{
echo 'You did not fill the form in!';
[/quote]
if(isset($_POST['submit-feedback'])){
$firstname= $_POST['firstname'];
$lastname= $_POST['lastname'];
$message= $_POST['message'];
$mailFrom = $_POST['mail'];
$ratedIndex = $_POST['ratedIndex'];
$ratedIndex++;
// verwijder alle verboden tekens van het email adres
$mailFrom = filter_var($mailFrom, FILTER_SANITIZE_EMAIL);
// geldig e-mailadres
if (filter_var($mailFrom, FILTER_VALIDATE_EMAIL)) {
$subject = "Someone gave you feedback!";
$mailTo = "[email protected]";
$headers = "From: ".$mailFrom;
$txt = "You got feedback from: ".$mailFrom.".\n\n".$message.".\n\n"."His/Hers rating was: ".$ratedIndex;
mail($mailTo, $subject, $txt, $headers);
header("Location: ../feedback/index.php");
}else{
echo 'The email you put in is invalid!';
}
}else{
echo 'You did not fill the form in!';
[/quote]
Gewijzigd op 14/04/2020 10:00:07 door Sem Bakker
Twee dingen.
Waar stel je $_POST['submit-feedback'] in? Je bent toch niet daadwerkelijk een formulier aan het submitten op een of anderen manier? Je doet een AJAX-post, dus controleer op if ($_SERVER['REQUEST_METHOD'] == 'POST') { ... } of iets dergelijks.
En je gebruikt daar doorleuk uID: uID en ratedIndex: ratedIndex. Als je daar nu sowieso even 'uID': uID en 'ratedIndex': ratedIndex van maakt? Niet verplicht, maar een stuk minder dubbelzinnig.
Ik zou dus nagaan of je niet op de verkeerde manier POST en dat dingen wel onder de juiste condities vuren.
En fix het bovenstaande bericht even.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function saveToMail() {
$.ajax({
url: "invoer.php",
method: "POST",
dataType: 'json',
data: {
save: 1,
'uID': uID,
'ratedIndex': ratedIndex
}, success: function (r) {
uID = r.id;
localStorage.setItem('uID', uID);
}
});
}
$.ajax({
url: "invoer.php",
method: "POST",
dataType: 'json',
data: {
save: 1,
'uID': uID,
'ratedIndex': ratedIndex
}, success: function (r) {
uID = r.id;
localStorage.setItem('uID', uID);
}
});
}
De php code:
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
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
<?php
if(isset($_POST['submit-feedback'])){
$firstname= $_POST['firstname'];
$lastname= $_POST['lastname'];
$message= $_POST['message'];
$mailFrom = $_POST['mail'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$ratedIndex = $_POST['ratedIndex'];
$ratedIndex++;
}else{
$ratedIndex = "The user did not fill the rating in";
}
// verwijder alle verboden tekens van het email adres
$mailFrom = filter_var($mailFrom, FILTER_SANITIZE_EMAIL);
// geldig e-mailadres
if (filter_var($mailFrom, FILTER_VALIDATE_EMAIL)) {
$subject = "Someone gave you feedback!";
$mailTo = "[email protected]";
$headers = "From: ".$mailFrom;
$txt = "You got feedback from: ".$mailFrom.".\n\n".$message.".\n\n"."His/Hers rating was: ".$ratedIndex;
mail($mailTo, $subject, $txt, $headers);
header("Location: ../feedback/index.php");
}else{
echo 'The email you put in is invalid!';
}
}else{
echo 'You did not fill in the form';
}
?>
if(isset($_POST['submit-feedback'])){
$firstname= $_POST['firstname'];
$lastname= $_POST['lastname'];
$message= $_POST['message'];
$mailFrom = $_POST['mail'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$ratedIndex = $_POST['ratedIndex'];
$ratedIndex++;
}else{
$ratedIndex = "The user did not fill the rating in";
}
// verwijder alle verboden tekens van het email adres
$mailFrom = filter_var($mailFrom, FILTER_SANITIZE_EMAIL);
// geldig e-mailadres
if (filter_var($mailFrom, FILTER_VALIDATE_EMAIL)) {
$subject = "Someone gave you feedback!";
$mailTo = "[email protected]";
$headers = "From: ".$mailFrom;
$txt = "You got feedback from: ".$mailFrom.".\n\n".$message.".\n\n"."His/Hers rating was: ".$ratedIndex;
mail($mailTo, $subject, $txt, $headers);
header("Location: ../feedback/index.php");
}else{
echo 'The email you put in is invalid!';
}
}else{
echo 'You did not fill in the form';
}
?>
Toevoeging op 14/04/2020 10:06:22:
Hi bedankt voor de reactie! Ik heb de code veranderd naar het volgende maar er is niks veranderd qua uitvoer.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function saveToMail() {
$.ajax({
url: "invoer.php",
method: "POST",
dataType: 'json',
data: {
save: 1,
'uID': uID,
'ratedIndex': ratedIndex
}, success: function (r) {
uID = r.id;
localStorage.setItem('uID', uID);
}
});
}
$.ajax({
url: "invoer.php",
method: "POST",
dataType: 'json',
data: {
save: 1,
'uID': uID,
'ratedIndex': ratedIndex
}, success: function (r) {
uID = r.id;
localStorage.setItem('uID', uID);
}
});
}
De php code:
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
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
<?php
if(isset($_POST['submit-feedback'])){
$firstname= $_POST['firstname'];
$lastname= $_POST['lastname'];
$message= $_POST['message'];
$mailFrom = $_POST['mail'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$ratedIndex = $_POST['ratedIndex'];
$ratedIndex++;
}else{
$ratedIndex = "The user did not fill the rating in";
}
// verwijder alle verboden tekens van het email adres
$mailFrom = filter_var($mailFrom, FILTER_SANITIZE_EMAIL);
// geldig e-mailadres
if (filter_var($mailFrom, FILTER_VALIDATE_EMAIL)) {
$subject = "Someone gave you feedback!";
$mailTo = "[email protected]";
$headers = "From: ".$mailFrom;
$txt = "You got feedback from: ".$mailFrom.".\n\n".$message.".\n\n"."His/Hers rating was: ".$ratedIndex;
mail($mailTo, $subject, $txt, $headers);
header("Location: ../feedback/index.php");
}else{
echo 'The email you put in is invalid!';
}
}else{
echo 'You did not fill in the form';
}
?>
if(isset($_POST['submit-feedback'])){
$firstname= $_POST['firstname'];
$lastname= $_POST['lastname'];
$message= $_POST['message'];
$mailFrom = $_POST['mail'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$ratedIndex = $_POST['ratedIndex'];
$ratedIndex++;
}else{
$ratedIndex = "The user did not fill the rating in";
}
// verwijder alle verboden tekens van het email adres
$mailFrom = filter_var($mailFrom, FILTER_SANITIZE_EMAIL);
// geldig e-mailadres
if (filter_var($mailFrom, FILTER_VALIDATE_EMAIL)) {
$subject = "Someone gave you feedback!";
$mailTo = "[email protected]";
$headers = "From: ".$mailFrom;
$txt = "You got feedback from: ".$mailFrom.".\n\n".$message.".\n\n"."His/Hers rating was: ".$ratedIndex;
mail($mailTo, $subject, $txt, $headers);
header("Location: ../feedback/index.php");
}else{
echo 'The email you put in is invalid!';
}
}else{
echo 'You did not fill in the form';
}
?>
Gewijzigd op 14/04/2020 10:27:28 door - Ariën -
En, wanneer zou aan de volgende voorwaarde ooit worden voldaan? " if(isset($_POST['submit-feedback'])) "
Waarom noem je een functie saveToMail? Het heeft toch helemaal niets met een e-mail te maken?
PS Ik vind het niet zo chique dat je complete lappen code hier op het forum post en zelf niet de moeite neemt om zelf stap-voor-stap het probleem op te delen in deelproblemen. Die deelproblemen zou je zelf voor 99% zelf makkelijk moeten kunnen oplossen. Voor de overige 1% heb je een forum.
Gewijzigd op 14/04/2020 10:17:01 door Nick Vledder