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 :

INSERTION PDO SQL SERVER, PAS D'ERREUR MAIS PAS D'INSERTION


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut INSERTION PDO SQL SERVER, PAS D'ERREUR MAIS PAS D'INSERTION
    Bonsoir,

    Quelqu'un peut m'aider à inspecter ce code, j'essaie de faire une insertion dans ma table j'utilise SQL SERVER 2008, le code n'affiche aucune erreur mais pourtant aucune donnée n'est enregistrer dans ma table, je crois qu'il y a quelque chose qui cloche mais je ne sais pas où.

    Voici le code, merci

    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
     
    <?php
    include("config_pdo.php");
    ?>
     
     
    <form action="" method="post" name="form1" id="form1">
    <?php
     
        $renderForm = true;
        if (isset($_POST['Valider']) && $_POST['Valider'] == 'Valider') {
            extract($_POST);
            if ((isset($_POST['MONEY_TRANSAC_NUM']) && !empty($_POST['MONEY_TRANSAC_NUM'])) && (isset($_POST['NOM_PRENOM']) && !empty($_POST['NOM_PRENOM']))) {
     
                if(strlen($_POST['MONEY_TRANSAC_NUM'])>=10)
                {
                if (preg_match("#(\+[0-9]{2}\([0-9]\))?[0-9]{10}#", $_POST['MONEY_TRANSAC_NUM']))
                {
                /* Verifier si l'utilisateur n'est pas déjà dans la base des données */
                $bdconnect= new ConnectMe();
                $req = $bdconnect->prepare('SELECT MONEY_TRANSAC_NUM FROM CFCO_TICKETS WHERE MONEY_TRANSAC_NUM = :MONEY_TRANSAC_NUM');
                $req->execute(array('MONEY_TRANSAC_NUM' => $_POST['MONEY_TRANSAC_NUM']));
                $checkMoneyT = $req->fetch();
     
                if (!$checkMoneyT)  {
     
                    $SQL = "INSERT INTO CFCO_TICKETS (MONEY_TRANSAC_NUM, NOM_PRENOM) VALUES (:MONEY_TRANSAC_NUM, :NOM_PRENOM)";
                    $requete = $bdconnect->prepare($SQL);
                    $requete->execute(array(':MONEY_TRANSAC_NUM'=>$MONEY_TRANSAC_NUM,':NOM_PRENOM'=>$NOM_PRENOM));
     
                    $succes = 'TRANSACTION VALIDE VOTRE TICKET EST : EA34924A';
                    echo '<div class="alert alert-success">' . $succes . ' </br> <a href="?page=signup">REVENIR</a></div><!--succes-->';
                    exit();
                } else {
                    $erreur = 'Ce code ' . $NOM_PRENOM . ' à été utilisé.';
                }
     
                }
                else 
                 { 
                    $erreur = 'LE NUMERO DE TRANSACTION NEST PAS VALIDE'; 
    				//si l'NOM_PRENOM est déjà est incorrect
                 }
     
                 }
    		   else 
    			 { 
                    $erreur = 'LE CODE DE TRANSACTION DOIT AVOIR 10 CHIFFRE'; 
                 }//si le mot de passe contient moins de 6 caracteres
     
            } 
     
            else {
                $erreur = 'Tous les champs sont obligatoire.';
            }
        }
        // échec de l'envoi
        if (isset($erreur)) {
            echo '<div class="alert alert-danger"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' . $erreur . '</div><!--error-->';
        } if ($renderForm) {
            ?>
     
         <div class="form-group">
    		</br></br>
    			<label for="nomcomplet">Nom & Prénom</label>
                            <input type="text" class="form-control" id="nomcomplet"  name="MONEY_TRANSAC_NUM" type="text" value="<?php if (isset($_POST['MONEY_TRANSAC_NUM'])) echo htmlentities(trim($_POST['MONEY_TRANSAC_NUM'])); ?>"  placeholder="10121341"/>
    		  </div>
     
                    <div class="form-group">
    			<label for="NOM_PRENOM">NOM_PRENOM address</label>
    			<input type="NOM_PRENOM" class="form-control" id="NOM_PRENOM"   name="NOM_PRENOM" type="text" value="<?php if (isset($_POST['NOM_PRENOM'])) echo htmlentities(trim($_POST['NOM_PRENOM'])); ?>"  placeholder="NOM_PRENOM"/>
    		  </div>
     
     
            <input type="submit" name="Valider"  class="btn btn-default" value="Valider" /> 
     
        </form>
     
     
    	   <?php
    }
    ?>

  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
    Par défaut
    Concernant la présentation, c'est un peu étrange d'avoir le traitement dans le formulaire.
    Concernant la sécurité, n'utilise pas extract(), cela peut conduire à des injections de variables.
    Concernant le problème, est-ce que tu as contrôlé le retour de execute() ? D'ailleurs ça serait bien de ne pas afficher un message positif à l'utilisateur sans avoir contrôlé que la requête s'est bien executée.
    Si ce n'est pas fait, active les erreurs PDO.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut
    Bonsoir et merci

    Concernant la présentation, c'est un peu étrange d'avoir le traitement dans le formulaire.
    Concernant la sécurité, n'utilise pas extract(), cela peut conduire à des injections de variables.
    Concernant le problème, est-ce que tu as contrôlé le retour de execute() ? D'ailleurs ça serait bien de ne pas afficher un message positif à l'utilisateur sans avoir contrôlé que la requête s'est bien executée.
    Si ce n'est pas fait, active les erreurs PDO.
    Pour :
    1. J'ai souhaité traiter dans le formulaire, il t-il un inconvenient concernant la sécurité ? Si oui, merci d'avance pour ton aide.
    2. Merci beaucoup j'y tâcherai
    3. J'ai vérifié execute() et c'est justement pour ça que le message est affiché à l'utilisateur
    4. Les erreurs PDO sont activités

  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
    Par défaut
    1 - comme je t'ai dis c'est une question de clarté de présentation HTML/PHP
    3 - ce n'est pas le cas dans le code que tu nous montres.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Par défaut
    Bonjour,

    J'ai à nouveau vérifié execute() le problème persiste et pour de raison de clarté, j'ai séparé le code... J'espère que je pourrais recevoir votre assistance.

    Formulaire
    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
     
    <form method="post" action="checkticket.php" name="form1" id="form1">
         <div class="form-group">
    		</br></br>
    			<label for="nomcomplet">Nom & Prénom</label>
                            <input type="text" class="form-control" id="nomcomplet"  name="MONEY_TRANSAC_NUM" type="text" value="<?php if (isset($_POST['MONEY_TRANSAC_NUM'])) echo htmlentities(trim($_POST['MONEY_TRANSAC_NUM'])); ?>"  placeholder="10121341"/>
    		  </div>
     
                    <div class="form-group">
    			<label for="NOM_PRENOM">NOM_PRENOM address</label>
    			<input type="NOM_PRENOM" class="form-control" id="NOM_PRENOM"   name="NOM_PRENOM" type="text" value="<?php if (isset($_POST['NOM_PRENOM'])) echo htmlentities(trim($_POST['NOM_PRENOM'])); ?>"  placeholder="NOM_PRENOM"/>
    		  </div>
     
     
            <input type="submit" name="Valider"  class="btn btn-default" value="Valider" /> 
     
        </form>
    checkticket.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
     
    <?php
    include("config_pdo.php");
    //echo $_SERVER['PHP_SELF'].'/<script>alert("XSS HERE");</script>';
    //echo filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING);//PHP SELF PROTEGE
     
    //CODE GENERATOR
    $characts = 'abcdefghijklmnopqrstuvwxyz'; 
    $characts .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';  
    $characts .= '1234567890'; 
    $code_aleatoire = ''; 
     
    for($i=0;$i < 10;$i++) 
    { 
    $code_aleatoire .= $characts[ rand() % strlen($characts) ]; 
    }
     
        if (isset($_POST['Valider']) && $_POST['Valider'] == 'Valider') {
            extract($_POST);
            if ((isset($_POST['MONEY_TRANSAC_NUM']) && !empty($_POST['MONEY_TRANSAC_NUM'])) && (isset($_POST['NOM_PRENOM']) && !empty($_POST['NOM_PRENOM']))) {
     
                if(strlen($_POST['MONEY_TRANSAC_NUM'])>=10)
                {
                if (preg_match("#(\+[0-9]{2}\([0-9]\))?[0-9]{10}#", $_POST['MONEY_TRANSAC_NUM']))
                {
                /* Verifier si l'utilisateur n'est pas déjà dans la base des données */
                $bdconnect= new ConnectMe();
                $req = $bdconnect->prepare('SELECT MONEY_TRANSAC_NUM FROM CFCO_TICKETS WHERE MONEY_TRANSAC_NUM = :MONEY_TRANSAC_NUM');
                $req->execute(array('MONEY_TRANSAC_NUM' => $_POST['MONEY_TRANSAC_NUM']));
                $checkMoneyT = $req->fetch();
     
                if (!$checkMoneyT)  
                {
                    $MyREQ = "INSERT INTO CFCO_TICKETS (NOM_PRENOM,MONEY_TRANSAC_NUM, WHEN_DATE) VALUES ( :NOM_PRENOM,:MONEY_TRANSAC_NUM,:WHEN_DATE)";
                    $req2 = $bdconnect->prepare($MyREQ);
                    $req2->execute(array(':MONEY_TRANSAC_NUM' => $_POST['MONEY_TRANSAC_NUM'],
                      ':NOM_PRENOM' => $_POST['NOM_PRENOM'], ':WHEN_DATE' =>date('Y-m-d h:i:s')));
                    $insertOk=$req->fetch();
                    if ($insertOk) {
                      # code... 
                      $succes = 'TRANSACTION VALIDE VOTRE TICKET EST : <b>'.$code_aleatoire.'</b>';
                    echo '<div class="alert alert-success">' . $succes . ' </br> <a href="?page=signup">REVENIR</a></div><!--succes-->';
                    exit();
                    }
                 else
                 {
                  echo "Insertion échouée";
                 }
     
                } else {
                    $erreur = 'Ce code ' . $MONEY_TRANSAC_NUM . ' a été utilisé.';
                }
     
                }
                else 
                 { 
                    $erreur = 'LE NUMERO DE TRANSACTION NEST PAS VALIDE'; 
    				//si l'NOM_PRENOM est déjà est incorrect
                 }
     
                 }
    		   else 
    			 { 
                    $erreur = 'LE CODE DE TRANSACTION DOIT AVOIR 10 CHIFFRE'; 
                 }//si le mot de passe contient moins de 6 caracteres
     
            } 
     
            else {
                $erreur = 'Tous les champs sont obligatoire.';
            }
        }
        // échec de l'envoi
        if (isset($erreur)) {
            echo '<div class="alert alert-danger"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' . $erreur . '</div><!--error-->';
        } 
            ?>

  6. #6
    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
    Par défaut
    On ne fait pas un fetch sur un Insert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $result = $req2->execute(array(':MONEY_TRANSAC_NUM' => $_POST['MONEY_TRANSAC_NUM'], ':NOM_PRENOM' => $_POST['NOM_PRENOM'], ':WHEN_DATE' =>date('Y-m-d h:i:s')));
    var_dump($result);
    var_dump($req2->rowCount);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. isql pas d'erreur mais pas d'action
    Par mariannickd dans le forum Outils
    Réponses: 4
    Dernier message: 14/11/2011, 10h39
  2. Réponses: 10
    Dernier message: 12/03/2011, 16h18
  3. Réponses: 3
    Dernier message: 12/06/2010, 10h16
  4. [SSIS 2K5] Pas d'erreur mais pas de données
    Par tornade69 dans le forum SSIS
    Réponses: 2
    Dernier message: 14/07/2009, 15h03
  5. Pas d'erreur, mais pas d'affichage
    Par FotoXe33 dans le forum Langage
    Réponses: 7
    Dernier message: 21/06/2009, 12h54

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