Informatie van JavaScript naar PHP bestand

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sem Bakker

Sem Bakker

13/04/2020 23:23:17
Quote Anchor link
Beste mensen,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<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>


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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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]
Gewijzigd op 14/04/2020 10:00:07 door Sem Bakker
 
PHP hulp

PHP hulp

23/04/2024 10:47:54
 
Thomas van den Heuvel

Thomas van den Heuvel

13/04/2020 23:44:06
Quote Anchor link
Uhm.

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.
 
Sem Bakker

Sem Bakker

14/04/2020 10:05:31
Quote Anchor link
Hi bedankt voor de reactie! Ik heb de code veranderd naar het volgende maar er is niks veranderd qua uitvoer.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
                            }
                            });
                        }


De php code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
}

?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
                            }
                            });
                        }


De php code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
}

?>
Gewijzigd op 14/04/2020 10:27:28 door - Ariën -
 
Nick Vledder

Nick Vledder

14/04/2020 10:10:33
Quote Anchor link
Help... Wat wil je trouwens bereiken met de opslag van de uID in de localstorage?

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.