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

PHP & Base de données Discussion :

Bug Formulaire PHP MySQL JavaScript


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 414
    Points : 111
    Points
    111
    Par défaut Bug Formulaire PHP MySQL JavaScript
    Bonjour

    Je vous en prie, aidez-moi !

    J'ai un formulaire html que je souhaiterais envoyer les données dans la bd mysql mais ça ne marche pas, aidez-moi svp. Dans ce formulaire y a une partie du code en Javascript.

    Voici mon formulaie.php

    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
    <!DOCTYPE html><html lang="en">
      <head>
        <meta charset="utf-8">
        <title>Créer une facture</title>
        <link rel="stylesheet" href="style.css" media="all" />
      </head>
      <body>
        <br/><br/>
        <main>
    <?php require_once('includes/menu.php') ?>
    <br/><br/><br/>
    <form action="afficheFactureCours.php" method="post">
      <fieldset>
        <legend>Infos de votre entreprise</legend>
        <textarea id="facturede" name="facturede" rows="4" cols="45"
          placeholder="Votre entreprise: Raison sociale, adresse.." required></textarea><br/><br/>
      </fieldset><br/>
     
     
      <fieldset>
        <legend>Infos de base</legend>
        <input type="text" placeholder="Numéro de la facture" name="num"><br/><br/>
        <label>Date de la facture </label>
        <input type="date" name="dateFacture"><br/><br/>
        <textarea name="client" rows="4" cols="45"
            placeholder="Facturé à: Raison sociale, adresse.." required>
        </textarea>
        <br/><br/>
        <textarea name="conditions" rows="10" cols="45"
            placeholder="Conditions et paiements" required></textarea>
      </fieldset><br/>
     
     
                <fieldset>
                <legend>Contenu de la facture formation</legend>
                <div id="ID_container">
                <textarea name="prestation[]" rows="4"
                  placeholder="Prestation" required></textarea>
                <input type="number" placeholder="Nombre de jours" name="nbjours[]" required>
                <input type="number" placeholder="Tarif journalier" name="tarifjour[]" required>
                </div>
                <button type="button" onclick="ajout(this);">+ Ajouter une prestation</button>
                <!-- <input type="number" placeholder="Taxe" name="taxe"><br/><br/> -->
                <!-- <input type="number" placeholder="Total du montant HT" name="montantHT"><br/><br/> -->
                </fieldset>
    <br/>
        <input type="submit" value ="Créer une facture" />
          </form>
          <br/>
        </main>
          <?php require_once('includes/footer.php') ?>
     
     
    <script src="js/fonctions.js"></script>
      </body>
    </html>

    Voici le fichier de traitement du formulaire afficheFactureCours.php
    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
    <?phprequire_once 'connexion.php';
    // On vérifie si la variable existe et sinon elle vaut NULL
    $num = isset($_POST['num']) ? $_POST['num'] : NULL;
    $client = isset($_POST['client']) ? $_POST['client'] : NULL;
    $prestation = isset($_POST['prestation']) ? $_POST['prestation'] : NULL;
    $nbjours = isset($_POST['nbjours']) ? $_POST['nbjours'] : NULL;
    $tarifjour = isset($_POST['tarifjour']) ? $_POST['tarifjour'] : NULL;
    $dateFacture = isset($_POST['dateFacture']) ? $_POST['dateFacture'] : NULL;
    $facturede = isset($_POST['facturede']) ? $_POST['facturede'] : NULL;
    $conditions = isset($_POST['conditions']) ? $_POST['conditions'] : NULL;
     
     
    // generate request params
    $params = [];
    $values = '';
    $facturation = [];
    foreach ($_POST['prestation'] as $key => $prestation) {
        $params[':prestation' . $key] = $prestation;
        $params[':num' . $key]    = $_POST['num'][$key];
        $params[':client' . $key]    = $_POST['client'][$key];
        $params[':nbjours' . $key]    = $_POST['nbjours'][$key];
        $params[':tarifjour' . $key]  = $_POST['tarifjour'][$key];
        $params[':dateFacture' . $key] = $_POST['dateFacture'][$key];
        $params[':facturede' . $key] = $_POST['facturede'][$key];
        $params[':conditions' . $key] = $_POST['conditions'][$key];
     
     
        $values .= '(:num' . $key . ' , :client' . $key . ', :prestation' . $key . ', :nbjours' . $key . ', :tarifjour' . $key . ', :dateFacture' . $key . ', :facturede' . $key . ', :conditions' . $key . '),';
     
     
        // prepare facturation data
        $facturation[] = [
          'prestation' => $prestation,
          'num'  => $_POST['num'][$key],
          'client'  => $_POST['client'][$key],
          'nbjours'    => $_POST['nbjours'][$key],
          'tarifjour'  => $_POST['tarifjour'][$key],
          'dateFacture'  => $_POST['dateFacture'][$key],
          'facturede'  => $_POST['facturede'][$key],
          'conditions'  => $_POST['conditions'][$key]
        ];
    }
    // remove trailing ","
    $values = rtrim($values, ',');
    $req = $base->prepare('INSERT INTO facturation (num, client, prestation, nbjours, tarifjour, dateFacture, facturede, conditions) VALUES '. $values);
    $req->execute($params);
    echo "les données ont bien étés insérées dans la base de données";
    $base = null;
    ?>
     
     
    <table>
      <thead>
        <tr>
          <th>Num</th>
          <th>Client</th>
          <th>Prestation</th>
          <th>Nb jours</th>
          <th>Tarif /jour</th>
          <th>Total</th>
          <th>Date</th>
          <th>De</th>
          <th>Conditions</th>
        </tr>
      </thead>
      <tbody>
        <?php foreach ($facturation as $presta) : ?>
        <tr>
            <td class="desc"><?= $presta['num'] ?></td>
            <td class="desc"><?= $presta['client'] ?></td>
            <td class="desc"><?= $presta['prestation'] ?></td>
            <td class="qty"><?= $presta['nbjours'] ?></td>
            <td class="unit"><?= $presta['tarifjour'] ?></td>
            <td class="total"><?= $presta['tarifjour'] * $presta['nbjours'] ?></td>
            <td class="desc"><?= $presta['dateFacture'] ?></td>
            <td class="desc"><?= $presta['facturede'] ?></td>
            <td class="desc"><?= $presta['conditions'] ?></td>
          </tr>
        <?php endforeach; ?>
      </tbody>
    </table>
    Voici l'erreur que j'ai:
    Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '2' for column 'dateFacture' at row 1 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Facturation\afficheFactureCours.php:44Stack trace:#0 C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Facturation\afficheFactureCours.php(44): PDOStatement->execute(Array)#1 {main} thrown in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Facturation\afficheFactureCours.php on line 44
    Si besoin voici mon fichier javascript qui génère certains champs du formulaire :
    Code js : 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
    function ajout(element){        var container = document.getElementById('ID_container');
     
     
            var str ='<span><textarea name="prestation[]" rows="4" type="text" placeholder="Prestation"></textarea>    </span><span><input name="nbjours[]" type="number" placeholder="Nombre de jour">    </span><span><input name="tarifjour[]" type="number" placeholder="Tarif journalier">    </span><span><button type="button" onclick="suppression(this)">x</button></span><br/>';        
            var divNewExp = document.createElement("div");
            divNewExp.innerHTML = str ;
            container.appendChild(divNewExp);
     
     
          }
     
     
    function suppression(element){
            var container = document.getElementById('ID_container');
            container.removeChild(element.parentNode.parentNode);
          }
    Formatrice - Web développeuse - WebMarketing - Recrutement
    Site O'ClockWeb : http://oclockweb.cvflashjob.com/
    Mon Facebook : https://www.facebook.com/minkoueobame

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- AVANT de nous inonder de code, commence par LIRE et COMPRENDRE le message d'erreur !

    "... Invalid datetime format: 1292 Incorrect date value: '2' for column 'dateFacture' ..."
    En français :
    ... Format de datetime non valide: 1292 Valeur de date incorrecte: '2' pour la colonne 'dateFacture'...
    Ca devrait te mettre sur la piste, non ?

    2- APPRENDS à faire TOI-MEME le DEBOGAGE DE BASE :

    • LIS et COMPRENDS le message d'erreur (erreur + nom du fichier + numéro de ligne : ça peut aider !)
    • afficher les variables / array qui vérifier ce qu'ils contiennent (ex.: var_dump($_POST); )
    • afficher la requête + éventuellement l'exécuter directement dans phpMyAdmin, pour voir si elle fonctionne
    • ajouter des try / catch autour des requête
    • ...


    Ca te permettra de CIBLER plus précisément où peut se trouver l'erreur, et ça t'évitera de dire : "ça ne marche pas, aidez-moi svp"...

    3- SI APRES ça, tu n'as toujours pas trouvé, alors montre juste le code NECESSAIRE et SUFFISANT, et on sera là pour t'aider.

Discussions similaires

  1. [MySQL] Formulaire PHP ->MySQL
    Par shub dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 09/02/2010, 22h42
  2. [MySQL] [PHP, MySQL, Javascript] Problème Variables
    Par marie4449 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/05/2006, 11h57
  3. Formulaire PHP-MySQL
    Par fara morgana dans le forum Langage
    Réponses: 11
    Dernier message: 09/05/2006, 15h46
  4. [MySQL] Bug Formulaire PHP-MySQL
    Par Davboc dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 01/03/2006, 15h15
  5. [SGBD] Probleme menu css /php / mysql / javascript
    Par vincedjs dans le forum Administration
    Réponses: 14
    Dernier message: 21/02/2006, 17h51

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