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 :

Redirection automatique après commande


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut Redirection automatique après commande
    Bonjour à tous,

    Je suis entrain de faire un petit système simple de panier virtuel + commande mais sans paiement en ligne !

    Après la validation de la commande, un message indique que la commande à bien était passé, puis vide le panier.

    Le problème est que sur cette page, si l'on clique sur actualiser, il n'affiche rien de spécial, mais continue à me créer des commandes vide dans ma bdd.

    Voici le code :

    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
    <?php
    session_start();
    include("tv.inc"); 
     
    // Processus de Login obligatoire pour continuer
     
      if (@$_SESSION['auth'] != "yes")                     # 9
      {
         header("Location: Member_page.php");
         exit();
      }
     
     
    // Connexion et Selection de la base 
     
    $cxn = mysql_connect($host, $user, $passwd) 
                or die ("Couldn't connect to server.");    #15
     
    	$db_selected = mysql_select_db($dbname, $cxn);
    	if (!$db_selected) {
       		die ('Impossible de selectionner la base de donnees : ' . mysql_error());
    }
     
     
    // requete d'insertion du n° de commande dans la BDD
     
    $log=$_SESSION['logname'];	
    $requete_log ="INSERT INTO Commande (Cde_Num,Cde_loginName,Cde_Date) VALUES ('','".$log."',NOW())";	
     
    $rq_log_insert = mysql_query($requete_log) or die ('Erreur '.$requete_log.' '.mysql_error());
     
    include("header.php"); 
     
    ?>
     
     
     
      <div id="content">
       	  <h1>Votre commande</h1>
    <? 
    // recuperer le numéro de la commande
     
    $num_cde ="SELECT MAX(Cde_Num) AS MaxNumCde FROM Commande WHERE Cde_loginName='{$_SESSION['logname']}'";		 
    $resNumCde = mysql_query($num_cde) or die ('Erreur '.$num_cde.' '.mysql_error()); 
     
    $res_num_cde = mysql_fetch_assoc($resNumCde) or die ('Erreur '.$resNumCde.' '.mysql_error());
     
    // requete d'insertion de la commande dans la BDD
     
    $ref=$_SESSION['panier']['Reference'];
    $nom=$_SESSION['panier']['NomProduit'];
    $qteC=$_SESSION['panier']['qteColis'];
    $qteP=$_SESSION['panier']['qteProduit'];
    $prix=$_SESSION['panier']['PrixUnitaire'];
     
    $nbArticles=count($_SESSION['panier']['NomProduit']);
      if ($nbArticles <= 0)
       exit ("Votre panier est vide. La commande ne peut être finalisée.");
      else
      {
       for ($i=0 ;$i < $nbArticles ; $i++)
       { 
         $requete ="INSERT INTO LigneCommande (LC_Id,Lc_IdCommande,LC_IdProduit,LC_Quantite,LC_MontantTTC,LC_MontantTVA) VALUES ('','".$res_num_cde['MaxNumCde']."','".$ref[$i]."','".$qteP[$i]."','".$prix[$i]."',19.6)";
     
         $rq_insert = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
       }
      }
     
      $num_cde_format = sprintf("%06d", $res_num_cde['MaxNumCde']);
       echo "Votre commande a bien été enregistrée sous le n° ".$num_cde_format."";
     
    // efface les données de session du panier
     
    unset ($_SESSION['panier']);
     
    ?>
    	<br/><br/>
      </div>

    Merci pour votre aide.

    Mikael

  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
    Verifie le contenu de log avant de faire ton insertion.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    re,

    Je me suis peut-être mal expliqué dans mon post.

    Ma requête fonctionne bien, mais c'est juste que sur la page confirmant la commande, si l'on fait actualiser, il me recrée une commande sans article dans ma bdd.

    Peux t-on bloquer l'execution de la requete 1 fois ? Ou alors je pensais faire une redirection après 3 secondes ?

    Merci

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bizarre si tu fais un unset ($_SESSION['panier']) que tu puisse recréer une requete via les infos de cette session. Aupire (méthode pas propre) mettre un index de type unique dans un champs de ta bdd

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Bizarre si tu fais un unset ($_SESSION['panier']) que tu puisse recréer une requete via les infos de cette session. Aupire (méthode pas propre) mettre un index de type unique dans un champs de ta bdd
    Salut Madfrix,

    Pourquoi pas, ça renverra une erreur, au pire !
    Mais si je redirige après 3 secondes, ça évitera les actualisation.

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Via js ou html :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript">
    	setTimeout("window.location.replace('url')", 3000);
    </script>

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="refresh" content="3;url=http://..." />

  7. #7
    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
    Ma requête fonctionne bien
    Non puisque tu permets des insertions meme quand n'y a pas de données a inserer.
    Faire la verification solutionnerait les deux problèmes et empecherait egalement qu'un malin pourrisse ta base.

    Si tu veux faire une redirection en plus apres, fais le.

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Via js ou html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="refresh" content="3;url=http://..." />
    Je me permet d'up le sujet pour savoir si :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="submit" content=";url=http://..." />

    permettait également une redirection et dans ce cas où la placer. Merci

Discussions similaires

  1. Redirection automatique après inactivité
    Par Damien062 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/03/2015, 11h10
  2. redirection automatique de page apres quelques secondes
    Par marwa_marwa dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/03/2013, 14h15
  3. Redirection automatique aprés msg de bienvenue
    Par amminou dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 12/04/2010, 23h43
  4. Redirection automatique après log
    Par rickgoz dans le forum Langage
    Réponses: 10
    Dernier message: 12/12/2008, 09h56
  5. Redirection automatique apres quelques secondes
    Par theotaki dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/05/2007, 13h25

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