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

Bibliothèques & Frameworks Discussion :

Enregistrer une valeur récupérée via Js dans ma BDD.


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 229
    Points : 91
    Points
    91
    Par défaut Enregistrer une valeur récupérée via Js dans ma BDD.
    Bonjour à tous.

    Je suis désolé de poster ici, si cela ne correspond pas mais ma demande concerne plusieurs langages.

    J'ai créé une petite appli via Laravel et livewire (qui utilise AlpineJs).
    Dans mon appli, j'ai un formulaire pour enregistrer des données dans ma BDD. Jusqu'ici, je m'en sors.
    J'ai un champ date et heure de debut et date et heure de fin.
    Lors de la perte de focus, si toutes les valeurs sont renseignées, je coche une également une case en fonction de la situation.

    Mon javascript semble fonctionner et me renseigne correctement les champs mais lorsque je soumet mon formulaire, les valeurs restent "NULL" dans la BDD. Si je saisi manuellement les champs tout fonctionne.

    Je pense que je n'emploie pas la bonne méthode ou peut-être qu'il y a un conflit avec livewire. Pourriez-vous m'aider à solutionner mon problème.

    Voici le code HTML de ma page :

    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
    <!-- DATE ET HEURE DE DEBUT / DE FIN + N° SEMAINE-->
                        <div class="flex items-center mb-6 mt-3">
                            <div class="">
                                <label class="block text-white font-bold mb-1 pr-4" for="inline-full-name">
                                    Date et Heure de début de stage
                                </label>
                            </div>
                            <div class="">
                                <input wire:model="date_heure_debut" class="bg-gray-200 appearance-none border-2 border-gray-200 rounded w-full py-2 px-4 text-gray-700 leading-tight focus:outline-none focus:bg-white focus:border-purple-500" type="datetime-local" value="" id="dhdebut" onfocusout="calculjour()">
                            </div>
                            <div class="pl-2">
                                <label class="block text-white font-bold mb-1 pr-4 text-right" for="inline-full-name">
                                    Date et Heure de fin de stage
                                </label>
                            </div>
                            <div class="">
                                <input wire:model="date_heure_fin" class="bg-gray-200 appearance-none border-2 border-gray-200 rounded w-full py-2 px-4 text-gray-700 leading-tight focus:outline-none focus:bg-white focus:border-purple-500" id="dhfin" type="datetime-local" step="1800" value="" onfocusout="calculjour()">
                            </div>
                            <div class="pl-2">
                                <label class="block text-white font-bold mb-1 pr-4 text-right" for="inline-full-name">
                                    N° de semaine
                                </label>
                            </div>
                            <div class="">
                                <input wire:model="num_semaine" class="bg-gray-200 appearance-none border-2 border-gray-200 rounded w-full py-2 px-4 text-gray-700 leading-tight focus:outline-none focus:bg-white focus:border-purple-500" id="numsem" type="text" value="">
                            </div>
                        </div>
                        <!--  -->
     
                        <!-- INDICATION DEBUT OU FIN DEMI JOURNEE-->
                        <div class="flex items-center mb-6 mt-3">
                            <div class="">
                                <label class="block text-white font-bold mb-1 pr-4" for="inline-full-name">
                                    Début de stage l'après-midi
                                </label>
                            </div>
                            <div class="">
                                <input wire:model="debut_stage_pm" class="bg-gray-200 appearance-none border-2 border-gray-200 rounded w-full py-2 px-4 text-gray-700 leading-tight focus:outline-none focus:bg-white focus:border-purple-500" id="startpm" type="checkbox">
                            </div>
                            <div class="pl-2">
                                <label class="block text-white font-bold mb-1 pr-4" for="inline-full-name">
                                    Fin de stage le matin
                                </label>
                            </div>
                            <div class="">
                                <input wire:model="fin_stage_am" class="bg-gray-200 appearance-none border-2 border-gray-200 rounded w-full py-2 px-4 text-gray-700 leading-tight focus:outline-none focus:bg-white focus:border-purple-500" id="endam" type="checkbox">
                            </div>
                        </div>

    Le script 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
     
                                function calculjour() {
     
                                    var datedebut = new Date(document.getElementById('dhdebut').value);
                                    var datefin = new Date(document.getElementById('dhfin').value);
     
     
                                    if (datedebut != 'Invalid Date' && datefin != 'Invalid Date') {
                                        var oneJan = new Date(datedebut.getFullYear(), 0, 1);
                                        var numberOfDays = Math.floor((datedebut - oneJan) / (24 * 60 * 60 * 1000));
                                        var result = Math.ceil((datedebut.getDay() + 1 + numberOfDays) / 7);
     
                                        let heuredebut = datedebut.getHours();
                                        let heurefin = datefin.getHours();
     
                                        if (heuredebut > '12') {
                                            document.getElementById("startpm").checked = true;
                                        } else {
                                            document.getElementById("startpm").checked = false;
                                        }
     
                                        if (heurefin < '14') {
                                            document.getElementById("endam").checked = true;
                                        } else {
                                            document.getElementById("endam").checked = false;
                                        }
     
                                        document.getElementById("numsem").value = result;
                                    }
                                }
    Merci de l'aide que vous pourrez m'apporter.

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    avez-vous regardé dans la console de développement de votre navigateur si la requete http envoyée contient le bonnes valeurs ?

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 229
    Points : 91
    Points
    91
    Par défaut
    Non, effectivement, je n'ai pas fait ce test.

    J'ai testé en n'utilisant pas livewire et à ce moment, tout fonctionne.

    Je pense qu'il s'agit d'un problème avec Alpine JS, il me faut probablement coder autrement mais aucune idée de comment faire.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/11/2007, 18h38
  2. Réponses: 1
    Dernier message: 14/11/2007, 11h53
  3. enregistrer une valeur > 250 caractère dans un champ
    Par zidenne dans le forum Administration
    Réponses: 4
    Dernier message: 04/09/2006, 10h42
  4. Réponses: 4
    Dernier message: 12/06/2006, 11h46
  5. Réponses: 3
    Dernier message: 09/05/2006, 17h21

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