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 :

Bouton RESET qui engendre sauvegarde avant le reset [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 44
    Points : 34
    Points
    34
    Par défaut Bouton RESET qui engendre sauvegarde avant le reset
    Bonjour,
    Je travaille actuellement sur un projet logiciel intranet, et en ce moment j'ai du mal à coder une option sur une de mes pages :
    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
    120
     
    <?php
    session_start();
     
     
     if (isset($_POST['validerCal']))
    {
        $pdo = new PDO('mysql:host=localhost;dbname=fichesclients','root','', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
        $idCal = mysql_escape_string($_POST['idCal']);
        $societeClient = mysql_escape_string($_POST['societeClient']);
        $typeContrat = mysql_escape_string($_POST['typeContrat']);
        $dispoCal = mysql_escape_string($_POST['dispoCal']);
        $dateCal = mysql_escape_string($_POST['dateCal']);
        $notesCal = mysql_escape_string($_POST['notesCal']);
     
        $sql = "UPDATE infocalendrier SET societeClient = '$societeClient', typeContrat = '$typeContrat', dispoCal = '$dispoCal', dateCal = '$dateCal', notesCal = '$notesCal' WHERE idCal in ('$idCal')";
     
        $requete = $pdo->query($sql);
    }
    ?>
     
    <html>
    <head>
     
    <meta charset="utf-8"/ >
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel ="stylesheet" href = "main.css" type = "text/css">
    <link rel="stylesheet" media="screen and (min-device-width:768px) and (max-device-width:1023px)" href="mainMin768.css" type="text/css" />
    <link rel="stylesheet" media="screen and (min-device-width:1024px) and (max-device-width:1300px)" href="mainMin1024.css" type="text/css" />
    <link rel="stylesheet" media="screen and (min-device-width:1301px) and (max-device-width:1400px)" href="mainMin1301.css" type="text/css" />
    <link rel="stylesheet" media="screen and (min-device-width:1401px)" href="mainMin1401.css" type="text/css" />
     
        <title>InfobisPro</title>
     
    </head>
     
    <body style="background-color: black; color:white;">
    <div id = "bienvenueCal" style ="text-align:center; margin-top:2%; font-size:20px;">
        <h1>Bienvenue sur la page du calendrier mensuel !</h1><br>
    </div>    
    <script type="text/javascript"> 
    function ConfirmMessage() {
        if (confirm("Voulez-vous modifier ce client ?")){
            alert("Le client a bien été modifié !");
            window.location.assign('v_calendrier.php');
        }
    }
     
    function ConfirmMessageDelete() {
        if (confirm("Voulez-vous réinitialiser toutes les données de tous les clients ?")){
            alert("Toutes les données de tous les clients ont été réinitialisées");
            window.location.assign('v_calendrier.php');
        }
    }
    </script>
     
    <?php
     
    $pdo = new PDO('mysql:host=localhost;dbname=fichesclients','root','', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = 'SELECT * FROM infocalendrier';
    $req = $pdo->query($sql); 
     
    mysql_query("SET NAMES 'utf8'");    
    ?>
    <form method="post" action="v_liste.php">
        <INPUT class ="boutonRetourCal" TYPE="submit" value="Retour"/>
     
     
    <input class="boutonDeleteCal" type="submit"  name="deleteCal" value="Réinitialisation mensuelle" onClick="ConfirmMessageDelete()"/>  
    </form>
    <table class = "tableCalendrier">
        <tr>
            <th>Numéro du Client
            </th>
     
            <th>Nom de société
            </th>
            <th>
                Type de contrat
            </th>
            <th>
                Disponibilité
            </th>
            <th>
                Dates d'intervention
            </th>
            <th>
                Notes de Maintenance
            </th>
        </tr>
     
    <?php
         while($row = $req->fetch()){ ?>
    	   <tr><form action ="v_calendrier.php" method="post">  
            <td><input class ="inputCal" style="text-align:center;" type="text" name = "idCal" value="<?php echo $row['idCal']; ?>" readonly></td>
            <td><input class ="inputCal" style="text-align:center;" type="text" name = "societeClient" value="<?php echo $row['societeClient']; ?>" readonly></td>
            <td><input class ="inputCal" style="text-align:center;" type="text" name = "typeContrat" value="<?php echo $row['typeContrat']; ?>" readonly></td>
            <td style="text-align:center; ";><select class ="inputCal" style ="width:100%; height:100%; text-align-last:center;" name="dispoCal" selected="<?php echo($row['dispoCal']); ?>">
                <option value="Attente"<?php if($row['dispoCal'] == "Attente"){echo "selected";} ?>>Attente</option><option value="Fait"<?php if($row['dispoCal'] == "Fait")   {echo "selected";} ?>>Fait</option></select></td>
            <td><input class ="inputCal" type="date" name = "dateCal" value="<?php echo $row['dateCal']; ?>"></td>
            <td><input class ="inputCal" type="text" name = "notesCal" value="<?php echo $row['notesCal']; ?>"></td>    
    		<td><input class="boutonValiderCal" type="submit"  name="validerCal" value="Valider" onClick="ConfirmMessage()"/></td>    
           </form>
    </tr>  
    <?php 
    }
    $req->closeCursor();
    ?>
     
    </table>
     
     
     
     
     
    </body>
    </html>
    Tout d'abord je vais vous expliquer le contexte : ce logiciel sera utilisé par des techniciens informatiques qui doivent visiter une fois par mois tous leurs clients qui ont un contrat de maintenance ou un contrat "CALP" avec eux.
    Donc j'ai fais un tableau où les 3 premiers "input" sont non éditables car ce sont des données fixes d'un client, et les 3 input qui suivent sont éditable ( première colonne : la disponibilité qui a pour valeur par défaut "Attente", c'est à dire si la visite du client a déjà été faite ou non ce mois-ci, deuxième colonne : la date à laquelle a été faite la visite mensuelle, troisième colonne : les notes qui correspondent a la maintenance mensuelle qui a été faite ce mois-ci ).

    Bref, mon but est de sauvegarder les données qui ont été enregistrées le mois "X", et lorsque l'on clique sur le bouton "Réinitialisation mensuelle", toutes les données sont "supprimées" ( ou du moins cachées ) ce qui permettra à l'utilisateur de remplir les données du tableau pour le mois "X+1" tout en gardant les données du mois "X" quelque part, au cas où il en aurait besoin dans l'avenir pour se justifier auprès d'un client ou autre.

    Je vous fournis aussi les données de la table "infocalendrier" de ma DB nommée "fichesclients" :

    Nom : tableCal.png
Affichages : 169
Taille : 17,0 Ko

    Merci d'avance pour votre généreuse aide !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et ton problème est ... ?

    Dans le titre du message tu parles d'un bouton "reset" mais il n'y a en pas dans ton code.

    Tout de même, tu as plein de fonction mysql_ qui traine dans ton code.
    En PDO on utilise une requête préparée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      $pdo = new PDO('mysql:host=localhost;dbname=fichesclients','root','', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
        $sql = "UPDATE infocalendrier SET societeClient = :societeClient, typeContrat = :typeContrat, dispoCal = :dispoCal, dateCal = :dateCal, notesCal = :notesCal WHERE idCal i= :idCal";
        $sth = $pdo->prepare($sql);
        $sth->execute(array(':societeClient'=>$_POST['societeClient'], ':typeContrat'=>$_POST['typeContrat'], ':dispoCal'=>$_POST['dispoCal'], ':dateCal'=>$_POST['dateCal'], ':notesCal'=>$_POST['notesCal'], ':idCal'=>$_POST['idCal']));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Et cette ligne dans le premier <form> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<input class="boutonDeleteCal" type="submit"  name="deleteCal" value="Réinitialisation mensuelle" onClick="ConfirmMessageDelete()"/>
    C'est pas un bouton reset ça ?
    Oui il restais un seul mysql_ c'était pour l'encodage mais depuis je l'ai enlevé !
    Sinon suis-je obligé de faire une requête préparée ? Je n'arrive pas trop comprendre ce que cela change par rapport à ma méthode requête.
    Merci Sabotage

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $idCal = mysql_escape_string($_POST['idCal']);
    C'est pas une fonction mysql ça ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    La fonction mysql_escape_string() n'a pas d'équivalence en pdo() et cela ne pose aucun problème au niveau de la compatibilité avec php 7, tout marche correctement, et de toute manière la question n'a rien avoir avec le mysql_ ...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Edit : finalement le mysql_escape pose problème avec php 7, j'ai dis des conneries je m'en excuse et je file enlever ces conneries de mon code tout de suite !

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Citation Envoyé par iVezics Voir le message
    Et cette ligne dans le premier <form> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<input class="boutonDeleteCal" type="submit"  name="deleteCal" value="Réinitialisation mensuelle" onClick="ConfirmMessageDelete()"/>
    C'est pas un bouton reset ça ?
    Non, c'est un submit. Un bouton reset c'est comme ça
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="reset"  value="Reset" onclick="return confirm('Reinitialiser le formulaire');"/>

    A+.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Merci vous êtes gentils mais ce n'est absolument pas là que réside mon problème et je sais très bien qu'il faut un type "reset" pour simplement reset des données.. Mais justement si je met comme type "reset" ça va reset toutes les données sans les sauvegarder alors que ce que je veux c'est un submit qui va sauvegarder + faire un reset.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bouton reset qui enregistre automatiquement dans un dossier précis ?
    Par Ragnart dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/12/2015, 15h56
  2. Avant le reset Windows (XP)
    Par Valente82 dans le forum Assembleur
    Réponses: 5
    Dernier message: 13/02/2013, 00h10
  3. Fonction Reset qui ne fonctionne pas tout le temps
    Par darkterreur dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 02/03/2012, 09h11
  4. Réponses: 13
    Dernier message: 24/07/2009, 12h47
  5. Click sur un bouton qui engendre un effet de doubleclick
    Par Carter dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/12/2006, 12h06

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