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

Langage PHP Discussion :

La condition avant d'insérer les données


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 132
    Par défaut La condition avant d'insérer les données
    Bonjour
    Je suis en train de réaliser une fonction pour ajouter un bon d'achat dans ma page panier.php
    Je voudrais savoir comment créer une condition pour les clients n’ayant pas de bon d'achat ne puissent pas insérer les données.

    J'ai crée 2 table dans SQL
    shop_bon_achat pour créer les bons d'achat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -- Structure de la table `shop_bon_achat`
    --
     
    CREATE TABLE IF NOT EXISTS `shop_bon_achat` (
      `id_bachat` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `client` varchar(50) NOT NULL,
      `code` int(11) NOT NULL,
      `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      `bachat` float NOT NULL DEFAULT '0',
      PRIMARY KEY (`id_bachat`),
      KEY `code` (`code`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
    ajoute_bachat pour les clients ajoutent les bons d'achat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -- Structure de la table `ajoute_bachat`
    --
     
    CREATE TABLE IF NOT EXISTS `ajoute_bachat` (
      `id_ajoute` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `aj_client` varchar(50) NOT NULL,
      `code_achat` float NOT NULL,
      PRIMARY KEY (`id_ajoute`),
      KEY `code_achat` (`code_achat`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=87 ;
    Dans ma page panier j'ai créé un formulaire et inséré une donnée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form action="<?php echo $editFormAction; ?>" method="POST" name="BonAchat" id="BonAchat" onsubmit="MM_BonAchatForm('code','','R');return document.MM_returnValue">
                  <input type="text" name="code" id="code" />
                  <input name="client" type="hidden" id="client" value="<?php echo $_SESSION['MM_Username']; ?>" />
                  <input type="submit" name="button" id="button" value="Ajouter" />
                  <input type="hidden" name="MM_insert" value="BonAchat" />
                </form>
    voici le code d'insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mysql_select_db($database_Boutique, $Boutique);
    $query_BAchat = sprintf("SELECT * FROM ajoute_bachat, shop_bon_achat WHERE ajoute_bachat.aj_client = %s  ", GetSQLValueString($idsession_BAchat, "text"));
    $BAchat = mysql_query($query_BAchat, $Boutique) or die(mysql_error());
    $row_BAchat = mysql_fetch_assoc($BAchat);
    $totalRows_BAchat = mysql_num_rows($BAchat);
    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
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "BonAchat")) {
      $insertSQL = sprintf("INSERT INTO ajoute_bachat (aj_client, code_achat) VALUES (%s, %s)",
                           GetSQLValueString($_POST['client'], "text"),
                           GetSQLValueString($_POST['code'], "double"));
     
      mysql_select_db($database_Boutique, $Boutique);
      $Result1 = mysql_query($insertSQL, $Boutique) or die(mysql_error());
     
      $insertGoTo = "panier.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
    ------------------------------------

    J'ai créé le bon d'achat pour un client et j'ai fais un test : cela fonctionne.

    maintenant j'ai essayé d'ajouter ce script si le client n'a pas un bon d'achat qu'il ne puisse pas insérer le donnée dans SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($row_BAchat['code'])) AND ($row_Client['mail'] == $row_BAchat['client'])){
    apres je l'ajoute.

    Voici script

    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
    if ((isset($row_BAchat['code'])) AND ($row_Client['mail'] == $row_BAchat['client'])){
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "BonAchat")) {
      $insertSQL = sprintf("INSERT INTO ajoute_bachat (aj_client, code_achat) VALUES (%s, %s)",
                           GetSQLValueString($_POST['client'], "text"),
                           GetSQLValueString($_POST['code'], "double"));
     
      mysql_select_db($database_Boutique, $Boutique);
      $Result1 = mysql_query($insertSQL, $Boutique) or die(mysql_error());
     
      $insertGoTo = "panier.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
     }

    Est ce que vous pourriez m'aider S'il vous plait et Merci d'avance

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($row_BAchat['code'])) AND ($row_Client['mail'] == $row_BAchat['client']) && $totalRows_BAchat > 0){
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($row_BAchat['code'])) AND ($row_Client['mail'] == $row_BAchat['client'])){
    non ?

    par contre, où est l'intéret ? :s


    Ca me fait penser à un sketche :
    - Désolé, tu peux pas entrer, c'est un club réservé aux membres
    - Et comment on devient membre ?
    - Ben faut entrer

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 132
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($row_BAchat['code'])) AND ($row_Client['mail'] == $row_BAchat['client']) && $totalRows_BAchat > 0){
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($row_BAchat['code'])) AND ($row_Client['mail'] == $row_BAchat['client'])){
    non ?

    par contre, où est l'intéret ? :s


    Ca me fait penser à un sketche :
    Salut
    j'ai essayé ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    && $totalRows_BAchat > 0
    comme vous m'avez montré mais ça ne fonctionne pas.

    par contre, où est l'intéret ? :s
    $row_BAchat['client'] de la table shop_bon_achat = email client
    $row_Client['mail'] de la table client = email client

    si $row_BAchat['code'] est existe et $row_Client['mail'] identique avec $row_BAchat['client'] qu'on donne l'autorisation d'insérer le donnée dans la table ajoute_bachat SQL

    J'espère que j'ai bien expliqué

    Merci A+

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    hmm ok je crois savoir d'où vient l'erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_BAchat = sprintf("SELECT * FROM ajoute_bachat, shop_bon_achat WHERE ajoute_bachat.aj_client = %s  ", GetSQLValueString($idsession_BAchat, "text"));
    Cette requete retournera tous les champs des 2 tables, or si le client n'a pas de ligne pour lui dans "shop_bon_achat" ou encore qu'il n'a pas de code, le champ sera de toute façon retourné, mais vide ou alors à NULL ou encore à 0 (suivant la structure de la DB)

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (isset($row_BAchat['code']))
    sera toujours TRUE !!!

    essayez en utilisant empty() plutot que isset()
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!empty($row_BAchat['code']) && $row_Client['mail'] == $row_BAchat['client']){

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 132
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    hmm ok je crois savoir d'où vient l'erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_BAchat = sprintf("SELECT * FROM ajoute_bachat, shop_bon_achat WHERE ajoute_bachat.aj_client = %s  ", GetSQLValueString($idsession_BAchat, "text"));
    Cette requete retournera tous les champs des 2 tables, or si le client n'a pas de ligne pour lui dans "shop_bon_achat" ou encore qu'il n'a pas de code, le champ sera de toute façon retourné, mais vide ou alors à NULL ou encore à 0 (suivant la structure de la DB)

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (isset($row_BAchat['code']))
    sera toujours TRUE !!!

    essayez en utilisant empty() plutot que isset()
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!empty($row_BAchat['code']) && $row_Client['mail'] == $row_BAchat['client']){
    Salut
    J'ai essayé empty()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!empty($row_BAchat['code']) && $row_Client['mail'] == $row_BAchat['client']){
    mais çe ne fonctionne pas , le client a un bon d'achat qu'il ne puisse pas ajouter.

    Est ce que vous avez d'autre solution, Merci A +

  6. #6
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Citation Envoyé par hoangeric Voir le message
    le client a un bon d'achat qu'il ne puisse pas ajouter.

    Est ce que vous avez d'autre solution, Merci A +
    hmm je ne comprends pas bien cette phrase... Vous aviez dit dans le post précédent que s'il avait un bon d'achat il pouvait ajouter, sinon non...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 132
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    hmm je ne comprends pas bien cette phrase... Vous aviez dit dans le post précédent que s'il avait un bon d'achat il pouvait ajouter, sinon non...
    Salut
    Apres ajouter 2 condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($row_BAchat['code'])) AND ($row_Client['mail'] == $row_BAchat['client'])){
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!empty($row_BAchat['code']) && $row_Client['mail'] == $row_BAchat['client']){
    j'ai fait un test avec un client a un bon d'achat.Le résulat, il ne peut pas ajouter son bon d'achat dans table ajoute_bachat

    Merci A+

  8. #8
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    hmmm c'est bien qui contient le code du bon d'achat non ? c'est ce que vous m'avez dit ici :
    si $row_BAchat['code'] est existe et $row_Client['mail'] identique avec $row_BAchat['client'] qu'on donne l'autorisation d'insérer le donnée dans la table ajoute_bachat SQL
    donc peut-être la requête SQL est mauvaise et ne retourne pas ce qu'elle devrait. Avez-vous contrôler la valeurs de $row_BAchat['code'] (juste avant la condition) avec différents utilisateurs ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 132
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    hmmm c'est bien qui contient le code du bon d'achat non ? c'est ce que vous m'avez dit ici :


    donc peut-être la requête SQL est mauvaise et ne retourne pas ce qu'elle devrait.
    Salut darkstar123456

    ça fait 2 semaine que j'ai recherché le solution et finalement j'ai trouvé le solution.
    J'ai crée encore un jeu enregistremt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mysql_select_db($database_Boutique, $Boutique);
    $query_Bon = sprintf("SELECT * FROM shop_bon_achat WHERE client = %s", GetSQLValueString($colname_Bon, "text"));
    $Bon = mysql_query($query_Bon, $Boutique) or die(mysql_error());
    $row_Bon = mysql_fetch_assoc($Bon);
    $totalRows_Bon = mysql_num_rows($Bon);
    et j'ajoute AND $row_Bon['bachat'] > 0

    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
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "BonAchat") AND $row_Bon['bachat'] > 0) {
      $insertSQL = sprintf("INSERT INTO ajoute_bachat (aj_client, code_achat) VALUES (%s, %s)",
                           GetSQLValueString($_POST['client'], "text"),
                           GetSQLValueString($_POST['code'], "double"));
     
      mysql_select_db($database_Boutique, $Boutique);
      $Result1 = mysql_query($insertSQL, $Boutique) or die(mysql_error());
     
      $insertGoTo = "panier.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
    Je vous merci beaucoup et bonnes vacances

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

Discussions similaires

  1. [2005] Tronquer une table avant d'insérer les données
    Par pticouta dans le forum SSIS
    Réponses: 1
    Dernier message: 15/04/2011, 20h20
  2. Réponses: 7
    Dernier message: 17/03/2009, 18h23
  3. Réponses: 8
    Dernier message: 05/12/2008, 13h49
  4. visualiser avant d'insérer des données
    Par mussara dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/07/2006, 15h20
  5. [XML][HTML]Insérer les données dans la page HTMl
    Par mafyoso dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 23/01/2006, 13h10

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