IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

easyautocomplete - Retour php en json


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut easyautocomplete - Retour php en json
    Bonjour à tous,

    je suis novice sur le développement.

    Je planche sur un petit module qui permet d'afficher des tarifs sur un itinéraire recherché dans un input.

    J'utilise le script easyautocomplete.

    Lors de la recherche dans le input, je n'arrive pas à lire mon json généré dans avec php.

    Est ce que quelqu'un pourrait m'éclairer ?

    Merci beaucoup.

    Voici mon
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    <!DOCTYPE html>
    <html>
     
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
     
        <title>Calculateur de prix FlexiPass</title>
     
        <!-- icon https://fontawesome.com -->
        <link href="css/fontawesome.css" rel="stylesheet">
        <!-- Bootstrap -->
        <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"
            type="text/css">
        <!-- CSS file -->
        <link rel="stylesheet" href="css/style.css">
        <link rel="stylesheet" href="css/easy-autocomplete.min.css">
        <!-- Additional CSS Themes file - not required -->
        <link rel="stylesheet" href="css/easy-autocomplete.themes.min.css">
        <!-- HTML5 shim et Respond.js pour IE8 permettent la compatibilité avec le HTML5 et les media queries -->
        <!-- Attention : Respond.js ne fonctionne pas en local via le protocole file:// -->
        <!--[if lt IE 9]>
                <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
                <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
            <![endif]-->
    </head>
     
     
    <body>
        <!--<div class="spinner-grow" role="status"  id="chargement">
                <span class="sr-only">Chargement...</span>
            </div>-->
        <div class="container-fluid">
            <div class="row justify-content-center text-center">
                <div class="col-12 col-sm-12 col-md-9 p-2">
                    <h2 class="text-center text-uppercase m-4">Calculez vos économies avec le Flexi'Pass :</h2>
                </div>
            </div>
            <div class="row justify-content-center text-center">
                <div class="col-12 col-sm-12 col-md-9 p-2">
                    <div class="input-group input-group-lg text-center">
                        <div class="input-bug input-group-lg">
                            <input type="text" id="inputRecherche" class="form-control"
                                placeholder="Recherchez votre itinéraire">
                            <div class="input-group-append">
                                <button id="reset" class="btn btn-outline-secondary btn-alert-danger" type="button">
                                    <i class="far fa-window-close"></i>
                                </button>
                            </div>
                        </div>
                        <div class="input-bug input-group-lg">
                            <small class="form-text text-muted" style="margin: auto;">Tapez votre gare de départ et votre
                                gare d'arrivée séparée par un espace.</small>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div id="affich-prix">
            <div class="container-fluid">
                <div class="row justify-content-center text-center">
                    <div class="col-12 col-sm-12 col-md-6 p-2">
                        <h4 class="text-center" id="itineraire">titre</h4>
                    </div>
                </div>
                <div class="row justify-content-center text-center">
                    <!-- Card prix m26 -->
                    <div class="col-6 col-sm-6 col-md-3 p-2" id="cardm26">
                        <div class="card h-100 p-2">
                            <img class="card-img-top" src="images/normandie-m26.png" />
                            <h5 class="card-title">Abonnement mensuel</h5>
                            <p class="card-text">Sans Flexi'Pass :<br><span id="m26prixnormal"
                                    class="badge badge-secondary"></span></p>
                            <p class="card-text">Avec Flexi'Pass :<br><span id="m26prixflexi"
                                    class="badge badge-success"></span></p>
                        </div>
                    </div>
                    <!-- Card prix p26 -->
                    <div class="col-6 col-sm-6 col-md-3 p-2" id="cardp26">
                        <div class="card h-100 p-2">
                            <img class="card-img-top" src="images/normandie-p26.png" />
                            <h5 class="card-title">Abonnement mensuel</h5>
                            <p class="card-text">Sans Flexi'Pass :<br><span id="p26prixnormal"
                                    class="badge badge-secondary"></span></p>
                            <p class="card-text">Avec Flexi'Pass :<br><span id="p26prixflexi"
                                    class="badge badge-success"></span></p>
                        </div>
                    </div>
                </div>
                <div class="row justify-content-center text-center">
                    <!-- Card prix paris 2nd -->
                    <div class="col-6 col-sm-6 col-md-3 p-2" id="cardparis2">
                        <div class="card h-100 p-2">
                            <img class="card-img-top" src="images/normandie-paris.png" />
                            <h5 class="card-title">Abonnement mensuel</h5>
                            <p class="card-text">Sans Flexi'Pass :<br><span id="parisprixnormal2"
                                    class="badge badge-secondary"></span></p>
                            <p class="card-text">Avec Flexi'Pass :<br><span id="parisprixflexi2"
                                    class="badge badge-success"></span></p>
                        </div>
                    </div>
                    <!-- Card prix paris 1ere -->
                    <div class="col-6 col-sm-6 col-md-3 p-2" id="cardparis1">
                        <div class="card h-100 p-2">
                            <img class="card-img-top" src="images/normandie-paris.png" />
                            <h5 class="card-title">Abonnement mensuel</h5>
                            <p class="card-text">Sans Flexi'Pass :<br><span id="parisprixnormal1"
                                    class="badge badge-secondary"></span></p>
                            <p class="card-text">Avec Flexi'Pass :<br><span id="parisprixflexi1"
                                    class="badge badge-success"></span></p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!-- Nous mettons les plugins Javascripts en bas de page pour optimiser les temps de chargement -->
        <!-- Plugin jQuery indispensable au bon fonctionnement de Bootstrap -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <!-- Les composants Jasvacripts de Boostrap -->
        <script src="js/bootstrap.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
        <!-- JS file -->
        <script src="js/jquery.easy-autocomplete.min.js"></script>
        <script src="js/script.js"></script>
    </body>
     
    </html>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
        header('Access-Control-Allow-Origin: *');
        header('Content-type: application/json');
     
        $counter = 0;
        // chemin d'accès à votre fichier JSON
        $file = 'tarif-flexipass-petit.json';
        // mettre le contenu du fichier dans une variable
        $data = file_get_contents($file);
        // décoder le flux JSON
        $obj = json_decode($data);
        // accéder à l'élément approprié
        //if (!empty($_GET['a']) && !empty($_GET['b']))
     
        if (!empty($_GET['recherche']))
        {
            foreach ($obj as $v) {           
                //if ($_GET['a'] == $v->a && $_GET['b'] == $v->b)
                //echo strcasecmp($_GET['recherche'],$v->a);
                $marecherche = $v->a;
                $findme = strtoupper($_GET['recherche']);
                $pos = strpos($marecherche, $findme);
                //echo $marecherche;
     
                if ($pos !== FALSE)
                {
                    $counter++;
     
                    echo json_encode( $v );
                }
            }
            if ($counter == 0) {
                echo "Ancune résultat";
            }
        } else {
            echo "Ancune recherche lancé";
        }   
    ?>

    js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    var options = {
     
        url: function (recherche) {
            return "api.php?recherche=" + recherche + "";
            //return "api.php?recherche=" + recherche + "";
        },
        ajaxSettings: {
            dataType: "jsonp"
        },
        getValue: "a",
        minCharNumber: 3,
        list: {
            onLoadEvent: function () {
                //console.log($("#inputRecherche").val());
            },
            onChooseEvent: function () {
                var od = $("#inputRecherche").getSelectedItemData().a + " <> " + $("#inputRecherche").getSelectedItemData().b;
                var p26prixnormal = $("#inputRecherche").getSelectedItemData().d;
                var p26prixflexi = $("#inputRecherche").getSelectedItemData().e;
                var m26prixnormal = $("#inputRecherche").getSelectedItemData().f;
                var m26prixflexi = $("#inputRecherche").getSelectedItemData().g;
                var parisprixnormal2 = $("#inputRecherche").getSelectedItemData().h;
                var parisprixflexi2 = $("#inputRecherche").getSelectedItemData().i;
                var parisprixnormal1 = $("#inputRecherche").getSelectedItemData().j;
                var parisprixflexi1 = $("#inputRecherche").getSelectedItemData().h;
     
                console.log(parisprixnormal1);
                $("#itineraire").text(od);
                if (p26prixnormal == 0 || p26prixflexi == 0) {
                    $("#cardp26").remove();
                } else {
                    $("#p26prixnormal").text(p26prixnormal + "€");
                    $("#p26prixflexi").text(p26prixflexi + "€");
                }
                if (m26prixnormal == 0 || m26prixflexi == 0) {
                    $("#cardm26").remove();
                } else {
                    $("#m26prixnormal").text(m26prixnormal + "€");
                    $("#m26prixflexi").text(m26prixflexi + "€");
                }
                if (parisprixnormal2 == 0 || parisprixflexi2 == 0) {
                    $("#cardparis2").remove();
                } else {
                    $("#parisprixnormal2").text(parisprixnormal2 + "€");
                    $("#parisprixflexi2").text(parisprixflexi2 + "€");
                }
                if (parisprixnormal1 == 0 || parisprixflexi1 == 0) {
                    $("#cardparis1").remove();
                } else {
                    $("#parisprixnormal1").text(parisprixnormal1 + "€");
                    $("#parisprixflexi1").text(parisprixflexi1 + "€");
                }
     
                //console.log("p26prixnormal:" + p26prixnormal);
     
                    $("#affich-prix").fadeIn("slow");
                $("#affich-prix").css("visibility", "visible");
                $("#inputRecherche").val("");
            },
            showAnimation: {
                type: "fade", //normal|slide|fade
                time: 400,
                callback: function () { }
            },
            maxNumberOfElements: 10,
            sort: {
                enabled: true
            },
            match: {
                enabled: true,
                caseSensitive: false,
                method: function (element, saisie) {
                    var regex = /[A-Za-z]/g;
                    var elementnettoye = element.match(regex);
                    var saisienettoye = saisie.match(regex);
                    var resultat = elementnettoye.toString().toLowerCase().includes(saisienettoye.toString().toLowerCase());
                    //console.log("match:" + saisie);
     
                    if (resultat) {
                        return true;
                    } else {
                        return false;
                    }
                }
     
            }
        }
    };
     
    $("#inputRecherche").easyAutocomplete(options);
     
    $("#reset").click(function () {
        $("#inputRecherche").val("");
        $("#affich-prix").fadeOut("slow");
    });
     
    jQuery(document).ready(function ($) {
        $("#inputRecherche").val("");
    });
     
    String.prototype.sansAccent = function () {
        var accent = [
            /[\300-\306]/g, /[\340-\346]/g, // A, a
            /[\310-\313]/g, /[\350-\353]/g, // E, e
            /[\314-\317]/g, /[\354-\357]/g, // I, i
            /[\322-\330]/g, /[\362-\370]/g, // O, o
            /[\331-\334]/g, /[\371-\374]/g, // U, u
            /[\321]/g, /[\361]/g, // N, n
            /[\307]/g, /[\347]/g, // C, c
        ];
        var noaccent = ['A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'N', 'n', 'C', 'c'];
     
        var str = this;
        for (var i = 0; i < accent.length; i++) {
            str = str.replace(accent[i], noaccent[i]);
        }
     
        return str;
    }

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    à quel endroit est votre souci ? dans le code PHP ou javascript ?

  3. #3
    Futur Membre du Club
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    C'est js qui me renvoi l'erreur, mais je pense que mon php ne doit pas renvoyer ce qu'il faut !

Discussions similaires

  1. Récupérer des data depuis php en JSON
    Par jiriki.net dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 04/11/2009, 22h48
  2. PHP et Json lecture et exploitation
    Par malkie dans le forum Langage
    Réponses: 10
    Dernier message: 25/02/2009, 02h37
  3. [MooTools] tests sur retour php
    Par enima83 dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 27/06/2008, 17h17
  4. [AJAX] Retour PHP pas pris en compte
    Par llaffont dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/06/2008, 06h51
  5. Formulaire html retour php
    Par Alex123 dans le forum Langage
    Réponses: 11
    Dernier message: 13/06/2006, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo