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 :

numero de commande [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut numero de commande
    bonjour tous le monde je suis novice en developement informatique php , en html ca va du moment que c;'est pas torp compliquer
    actuellement je faisais le developement par un developeur qui est en vacance comme beaucoup d'entre vous

    en attendant j'essai de modifier mon developement en php et actuellement je suis sur attribue un numero de commande dans un formulaire 'inscription
    j'ai bien creer dans la base de donnee le champ orderid le problem quand j'ajoute une inscription orderid est toujours 10
    au debut il demarre a 1 jusqu a la 10 eme inscriptions ca a fonctionner maintenant il ne va pas a 11 /12 14 etc

    voici mon code source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $qu1b="SELECT orderid FROM users WHERE  orderid=(SELECT MAX(orderid) FROM users)";  // je selection dans la table users le champ orderid et je cherche le chiffre le plus grand// 
    $rsqu1b = mysql_query($qu1b);
    $rowqu1b = mysql_fetch_row($rsqu1b);
    $order_id1b = $rowqu1b[0] + 1;   // j'ajoute +1 au plus gros nombre mais il stagne a 10 et ne va pas plus loin etrange.

    j ai essayer dans la base de mettre orderid en int 25 et aussi en vachar 200 mais rien ne change je dois surement pas faire la bonne requette pour ajouter 1 au dernier plus grand chiffre trouver.

    j'ai essayer aussi dans la base de mettre un deuxieme auto incrementation mais il y a deja userid et php me dit que on peut mettre un seul auto incrementation.

    cordialement
    tee

  2. #2
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour,

    Déjà pourquoi tu ne fais pas directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $qu1b="SELECT MAX(orderid) FROM users";  // je selection dans la table users le champ orderid et je cherche le chiffre le plus grand//
    Ensuite n'hésite pas à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $current_max_order = (integer) $rowqu1b[0];
    $order_id1b = $current_max_order + 1;
    Mais il serait plus simple et moins risqué d'utiliser les auto-incrément de la base de données.

    @+

  3. #3
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    Bonjour ^^

    Déjà, tu peux regarder la valeur que tu récupères tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'max trouvé : '.$rowqu1b[0];
    Mais après je préconise fortement les solutions conseillé par Inazo ^^

    Sur ce, bonne chance

  4. #4
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut orderid
    bonsoir Inazo
    j'ai essayer au debut de prendre autoincrementation,
    le problem c'etati deja pris pour user id

    je m'explique beaucoup develope la partie inscription et une fois inscrit tu peux commander
    moi je pense qu' il est possible de prendre un racourci pour les futurs users.

    creer la commande directement dans le formulaire d'inscription

    je trouve lourd de s'inscrire et ensuite tu dois encore commander.
    donc lors de l'inscription avec la commande le problem c'est que userid auto incrementation et utiliser donc je ne peux pas utiliser pour orderid
    je suis un novice du develpoement mais je me dit il est possible avant de s'inscrire de relever la derniere inscriptions orderid qui doit etre forcement le numero le plus eleve pour include la fonction
    dans le formulaire our dans le process du formulaire afin de dire si le dernier enregistrement et le orderdi autrement dit le numero de commande alors je dois pouvoir l'incrementer +1 avec ma nouvelle commande..

    surtout note que les commandes actuellement dans mon cas sont payablent uniquement plus tard c'est une inscription qui sert a determiner combien de personne serait interesse par mon produit et que si il y a assez de demande alros le produit sera commercialisee.

    un peut comme un test avant production donc par l' inscription gratuite je sais combien serait interesse. et c
    est pour cela que je souhaite integrer dans le formulaire d'inscriptions et de la commande meme si elle sera payer plus tard.

    pour ce que tu me dis oui je pense que c'est une bonne solution je ne suis pas developeur mais j'essai d'apprendre et de comprendre pourquoi ce que j'ecris ne fonctione pas ,
    aussi avec les nouvelles normes mysqli pdo j'avoue que j'etais deja perdu avec just mysql c'est pas pour me bruller la cervelle encore avec des modfiications dont j'en comprends que 1 % du sens
    je me dis ma priorite est avant tous que mon orderid fonctionne correctement apres mysqli on vera plus tard.

    en tant cas merci de ta reponse sympatique cela fait plaisir de croiser la route de developeur sympa je ne cherche pas a ce que mon code soit construit par des personnes comme toi, mais j 'essai de comprendre aupres de vous pourquoi ce que j'ai ecris ne fonctionne pas comem le le voudrait.

    encore mille merci.
    tee

  5. #5
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    Tee,

    Y'a un truc que je comprends pas trop, c'est quoi ta clé primaire, ou plutôt la donnée qui t'intéresse? L'order_id ou l'user_id.
    Je veux dire, une fois créer, le nouvel utilisateur aura un user_id+1 au précédent?
    Du coup pourquoi tu vérifies pas rapport à l'order_id? Et pas directement par l'user_id?

    Peux tu fournir la tête de ta table avec les contraintes (clés primaires, secondaires, etc)?

  6. #6
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut primaire et secondaire
    bonsoir j'avoue que dans ma table primaire c;'est user id secondaire il ne semble pas y en avoir

    la table de depart creer par le developer j'ai juste ajouter et supprimer des champs style country job etc..
    on vois que la cle primaire est PRIMARY KEY (`userid`),


    DROP TABLE IF EXISTS `users`;
    /*!40101 SET @saved_cs_client = @@character_set_client */;
    /*!40101 SET character_set_client = utf8 */;
    CREATE TABLE `users` (
    `userid` int(25) NOT NULL AUTO_INCREMENT,
    `name` varchar(200) NOT NULL,
    `email` varchar(255) NOT NULL DEFAULT '',
    `username` varchar(200) NOT NULL,
    `password` varchar(255) NOT NULL DEFAULT '',
    `status` int(2) NOT NULL DEFAULT '0',
    `rights` int(2) NOT NULL DEFAULT '0',
    `address` text NOT NULL,
    `tel` varchar(200) NOT NULL,
    `date` datetime DEFAULT NULL,
    `city` varchar(45) DEFAULT NULL,
    `zipcode` varchar(45) DEFAULT NULL,
    `district` varchar(45) DEFAULT NULL,
    `country` varchar(100) DEFAULT NULL,
    PRIMARY KEY (`userid`),
    UNIQUE KEY `username` (`username`)
    ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
    /*!40101 SET character_set_client = @saved_cs_client */;


    quand tu me dis : Du coup pourquoi tu vérifies pas rapport à l'order_id? Et pas directement par l'user_id?

    je dirais oui j'y avais pense utiliser la cle user_ld le seul soucis c'est que c'est un chiffre simple

    du style quand quelqu;un s'inscrit il prends un user_id tu genre 9 ou 10 autoincrementation
    alors que dans orderdi qui serait plutot interpreter comme NUMERO DE COMMANDE je pensais faire un genre XEKS201710 que de dre a linscrit votre numero de commande est 10 qui fait un peu maigrichotte!

    dans le cde source j'ai remarquer le userid etait une reference propre a la programation du site
    comme par exemple

    <?php
    /* edit user */
    if(isset($_POST['edit_user'])){

    $sql = "SELECT * FROM users WHERE userid='".$_POST['id_user']."'";
    $rs = mysql_query($sql);
    while($rowus = mysql_fetch_array($rs))
    {
    ?>

    donc je me suis dit avant def aire quoi ce soit ce serait plutot utile de partir sur un champ de base qui n'est referencer actuellement null par dans le code source original de mon developeur
    pour eviter des conflits etc...
    c''est pour cela que j'ai eu l'idee de creer un numero de commande order id ( numero de commande) car la aussi le programme d'affiliation que j'ai a besoin de
    1 montant total
    2 order id

    voila pourquoi je suis embarquer dans cette aventure.

    cordialement
    tee

  7. #7
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    Tee,

    Ok je comprend mieux ^^

    Par contre je pense que tu as un problème de conception, en effet tu as l'air de dire que l'orderid doit être présent dans la table user.
    Mais cela signifie que chaque utilisateur ne pourra faire qu'une seule et unique commande.

    Perso, je te propose une conception simple tel que nous aurions trois tables de plus :
    COMMANDE :
    orderid char(10) -> Clé primaire
    userid int(25) -> Clé secondaire
    dateorder DATE

    PRODUITS :
    produitid SMALINT -> Clé primaire/AUTO-INCREMENT
    libelle VARCHAR(150)
    prix HT double (7,2)
    tva int(2)

    LIGNE_COMMANDE :
    orderid char(10) -> Clé primaire
    produitid SMALINT -> Clé primaire

    Ainsi un utilisateur pourrait passer x commande
    1 commande étant relié via son orderid à l'utilisateur via l'userid dans la table COMMANDE
    Cette commande pouvant comprendre 0 ou x produits via la table LIGNE_COMMANDE.
    Et ainsi on pourra calculer la prix total via une requete que l'on verra plus tard au besoin (Utilisation de l’agrégat SUM et d'une sous requête).

    Après, le choix du type de l'orderid est primordial, je veux dire soit char(10) soit un entier autoincrement.
    Le char(10) sera beaucoup plus compliqué à incrementer que l'entier.
    En effet il faudra incrementer les lettres au bout d'un moment, et même si on veut juste incrémenter les chiffres dans le CHAR(10).
    Il va falloir récupérer la valeur via une requete, jouer avec un substring, transformer ce qu'on a récupérer en entier puis l'incrementer avant de re-créer le char(10) à partir de ce que l'on a récupérer de la requete. Donc pour un débutant c'est pas jojo ^^

    Je sais pas trop si j'ai été clair, dis moi si je ne le suis pas ^^'

  8. #8
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut commande
    Oui effectivement tu as compris dans ce projet tu n'as besoin que de passer une seule et unique commande.
    donc dans le concept jamais l'utilisateur ne recommandera c'est impossible.

    c'est pour cela que je peux me permettre de faire la commande directement dans le formulaire d'inscription.
    c'est comme si tu avais un site qui vendait un aller simple pour Mars , chaque utilisateur qui s'inscrit je peux que commander une seule fois.

    voila pour le ordre id il n'est pas visible dans la base que j'ai poster car je l 'ai ajouter entre temps j'ai pris la base de depart.
    et par exemple certain champ comme telephone je l'ai changer en country etc..

    pour le champ order id on peut le mettre en Int ou en vachar ? none null ??

    j'ai tester ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $qu1b="SELECT MAX(orderid) FROM users";
    $rsqu1b = mysql_query($qu1b);
    $current_max_order = (integer) $rowqu1b[0];
    $order_id1b = $current_max_order + 1;
    et pour voir si il va reelement chercher la valeur la plus haute dans la table orderid j'ai tester un echo avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $current_max_order ?>
    resultat il affiche 0

    alors que dans la table orderid de la db le plus haut chiffre est 10 donc il ne me retourne pas le chiffre le plus haut de ce champ


    par contre j'ai modifier les carasteristique du champ orderid en

    name type null default
    orderid int(11) No 0

    maintenant meme l ancien code fonctionne

    etant un int(11) on ne peut mettre que des chiffres exact?
    aussi dans le insert into il y a ,'".$orderid_no1b."', ma question peut on ajouter un prefix chiffre si on est limite par des chiffres etant un in par exemple a tous les numero je veux ajouter la date

    si j'ai $orderid_no1b et aussi date existe il du codage un peu comme cela


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $orderid_no2b = "$date (d-m-Y) $orderid_no1b";
    pour qu il m incrive par exemple date de la commande+numero exemple 1608201712 qui correspondra a un numero de commande du client.

    mais dans un int(11) cela est impossible?


    merci
    tee

  9. #9
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    Re Tee ^^

    etant un int(11) on ne peut mettre que des chiffres exact?
    aussi dans le insert into il y a ,'".$orderid_no1b."', ma question peut on ajouter un prefix chiffre si on est limite par des chiffres etant un in par exemple a tous les numero je veux ajouter la date

    si j'ai $orderid_no1b et aussi date existe il du codage un peu comme cela



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $orderid_no2b = "$date (d-m-Y) $orderid_no1b";
    pour qu il m incrive par exemple date de la commande+numero exemple 1608201712 qui correspondra a un numero de commande du client.

    mais dans un int(11) cela est impossible?
    Alors, si il va être possible de faire le format tel que DDMMYYYYnnn
    Pour cela, il va suffire de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $orderid_no2b = $date('dmY').''.$orderid_no1b;
    Seul "problème" à gérer si tu veux faire ça propre, c'est vérifier qu'il y a déjà un n° de commande pour cette date là ou pas, via une requête du coup SELECT MAX ^^

  10. #10
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut date et orderid
    oui pour que cela fonctionne j'ai du inverser et mettre date sans $


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $orderid_no2b = date('Ymd').''.$orderid_no1b;
    ce qui me sort pour la commande 14 le chiffre total: 2017081714 14 etant la 14 eme commande.

    par contre je me suis appercu ayant effacer mes cookies refait la 15 eme inscription la cette fois il n'affiche pas 2017081715 mais 2 fois la date 201708172017081715

    code source:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $qu1b="SELECT MAX(orderid) FROM users"; 
     $rsqu1b = mysql_query($qu1b);
     $rowqu1b = mysql_fetch_row($rsqu1b);
     $orderid_no1b = $rowqu1b[0] + 1;
     $orderid_no2b = date('Ymd').''.$orderid_no1b;  //notez que la date est inversee car c'est le format dans la db date PHP



    cordialement
    tee

  11. #11
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    Le truc c'est que tu vas récup ton orderib avec tout ce qu'il contient, c'est à dire YYYYmmddnnn et que tu vas y rajouter 1 à cela (jusque là ok)
    Mais après tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $orderid_no2b = date('Ymd').''.$orderid_no1b;
    Du coup tu rajouter YYYYmmdd à YYYYmmddnnn
    Moi je te disais de faire ça pour les insert ^^
    Là, vu que on a récup un orderid existant pour la date du jour, il faut juste rajouter 1 à l'orderid
    Sinon il faut creer l'orderid avec la date.

    Cad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If (orderid existe)
       $orderid_no2b = $orderid_no1b + 1;
    Else
       $orderid_no2b = date('Ymd').''.$orderid_no1b;
    End-If

  12. #12
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut if
    bonjour
    j'ai tester il y avait un +1 de trop i passait les commandes comme cela

    2017081714

    2017081716

    2017081718

    c'est comme ci dans son calcul i zappe le numero de commande que nous sommes en train de creer et passe a +2


    donc j 'ai mis dans 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
    $qu1b="SELECT MAX(orderid) FROM users"; 
     $rsqu1b = mysql_query($qu1b);
     $rowqu1b = mysql_fetch_row($rsqu1b);
     
     $orderid_no1b = $rowqu1b[0] + 1;
     
     if(orderid_existe)
      {
         $orderid_no2b = $orderid_no1b; // ici j'ai supprimer le +1 car il est deja mis dans orderidi_no1b//
      }
     
     
    else {
            $orderid_no2b = date('Ymd').''.$orderid_no1b;
         }


    je vais attendre demain voir si il change la date correctement. je pensais pas que c'etait un code aussi simple que cela
    je pensais que dans le if orderid existe etait plutot un genre de if qui va verifier si la date d'aujourd hui et deja utiliser dans les orderid
    je suis surpris en tant que amateur qu'un simple orderid_existe et suffisent.

    en tout cas bravo je continue a en apprendre tous les jours
    et merci

  13. #13
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if(orderid_existe)
      {
         $orderid_no2b = $orderid_no1b; // ici j'ai supprimer le +1 car il est deja mis dans orderidi_no1b//
      }
    la condition du if est fausse :/
    Je t'avais donné ça pour exemple ^^
    En gros là il faut que tu fasses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if($orderid_no1b > 1)
      {
         $orderid_no2b = $orderid_no1b; // ici j'ai supprimer le +1 car il est deja mis dans orderidi_no1b//
      }
    Et encore faut voir comment va réagir $orderid_no1b quand $rowqu1b[0] est null

  14. #14
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut orderdi
    pour le moment j'ai essayer pas d'erreur mais je ferais le test pour le jour d'apres.

    autre chose orderid dans la data base est un int(11) cela signifie t'il qu'il sera long au maximum 11 chiffres?
    n'est t'il pas prudent de mettre orderid en int(25)? or 50 voir 100?


    merci
    tee

  15. #15
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    Re Tee ^^,

    Citation Envoyé par tee2017 Voir le message
    pour le moment j'ai essayer pas d'erreur mais je ferais le test pour le jour d'apres.

    autre chose orderid dans la data base est un int(11) cela signifie t'il qu'il sera long au maximum 11 chiffres?
    n'est t'il pas prudent de mettre orderid en int(25)? or 50 voir 100?


    merci
    tee
    Pour ta question, cela dépend du nombre de commande par jour sur ton site.
    Je m'explique : Ici on a un INT(11), actuellement on utiliser 8 caractères pour la date et 3 pour le nombre de commande dans la journée.
    C'est à dire que par jour, il peut y avoir 999 commandes.
    Donc, même si ton site attire par mal de monde, 999 c'est pas mal ^^

    PS : pour l'insert dans le cas ou la première commande de la journée serait passée, il faudra rajouter des zéro devant le 1 tel que :
    20170817001
    Et ainsi si tu as 10 commandes dans la journée, les additions sur l'orderid ne vont pas modifier la date comprise dans le champ.
    C'est à dire, si tu as :
    201708171
    Et qu'il y a plus de 10 commandes dans la journée, cela va modifier le jour comme ceci :
    201708171 + 10 =
    201708181

  16. #16
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    Re Tee ^^,



    Pour ta question, cela dépend du nombre de commande par jour sur ton site.
    Je m'explique : Ici on a un INT(11), actuellement on utiliser 8 caractères pour la date et 3 pour le nombre de commande dans la journée.
    C'est à dire que par jour, il peut y avoir 999 commandes.
    Donc, même si ton site attire par mal de monde, 999 c'est pas mal ^^

    PS : pour l'insert dans le cas ou la première commande de la journée serait passée, il faudra rajouter des zéro devant le 1 tel que :
    20170817001
    Et ainsi si tu as 10 commandes dans la journée, les additions sur l'orderid ne vont pas modifier la date comprise dans le champ.
    C'est à dire, si tu as :
    201708171 et qu'il y a plus de 10 commandes dans la journée, cela va modifier le jour comme ceci :
    201708171 + 10 = 201708181

    Alors qu'il faudrait que cela fasse comme cela 20170817001 + 10 = 20170817011

  17. #17
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut orderid
    les 00 que tu rajoute c'est dans le code? ou c'est orderid int actuellement set 0 cela voudra dire que je devrait set orderid int(11) default 000 exact?
    et egalement dans les entree de la journee remettre au bon format avec les 001 etc...
    pour que les prochaine commande suivent le meme modele exact?

    bonne soiree.

  18. #18
    Membre régulier Avatar de Cat81
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    Points : 74
    Points
    74
    Par défaut
    les 00 que tu rajoute c'est dans le code? ou c'est orderid int actuellement set 0 cela voudra dire que je devrait set orderid int(11) default 000 exact?
    et egalement dans les entree de la journee remettre au bon format avec les 001 etc...
    pour que les prochaine commande suivent le meme modele exact?

    bonne soiree.
    Le '00' sera à mettre dans le code si on ne rentre pas dans ta condition suivante :
    Cela donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if($orderid_no1b > 1){
      $orderid_no2b = $orderid_no1b; 
    }else{
      $orderid_no2b = intval(date('Ymd').'001'); 
    }
    Un truc du genre quoi ^^

  19. #19
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut orderid
    j ai tester aujourd hui, le soucis il ne change pas la date.
    il ne ce base pas sur la date d'aujourd hui pourtant dans le formulaire d'inscription il y avait deja une date elle fonctionne en date time
    dans le champs de la base users table date la date s'affiche correctement : 2017-08-18 02:08:02
    dans le formulaire de traitement elle est inserer d'origine comme cela pour chaque inscription

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <tr>
        <input type="hidden" name="date" id="date" value="<?php echo date("Y-m-d h:m:s" ); ?>"> 
        	</tr>


    par contre pour la date dans mon orderid j 'ai fais un test d'une nouvelle commande 23 en date d'aujourd hui 20170818
    a la validation de la commande elle a valider dans orderid la date d'hier 2017081723

    en faite pour resoudre le problem le soucis vient du faite que $qu1b="SELECT MAX(orderid) FROM users"; prends aussi la date injecter par les precendentes inscriptions.

    donc j'ai trouver une solution

    orderid ne sauvegarde que le orderid sans la date et je creer par exemple Bookingid qui lui inject date avec orderid

    du coup bookingid n;est pas calculer dans le $qu1b="SELECT MAX(orderid) FROM users"; et je regle le conflit de date.

    dans orderid il n 'y a que le numero de la commande exemple 10 et dans booking apres il y a la date 20170818 et j'ajoute le numero de la commande 10
    c'est un peu du systeme D certainement que des developeurs ne vont pas apprecier ma logique mais je n 'ai pas trouver de fonction qui permettrait
    de verifier orderid le numero apres la date. donc j;ai separer les champs.

    ce qui donne et a l'air de fonctionner

    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
    $qu1b="SELECT MAX(orderid) FROM users"; 
     $rsqu1b = mysql_query($qu1b);
     $rowqu1b = mysql_fetch_row($rsqu1b);
     
     $orderid_no1b = $rowqu1b[0] + 1;
     
     if($orderid_no1b > 1)
     {
       $orderid_no2b = date('Ymd').''.$orderid_no1b;
     }
      
      
    else {
       $orderid_no2b = intval(date('Ymd').'001');
       
         }
       
    
     
    
    $sql = "INSERT INTO users(name, email, username, password, status, rights, orderid, bookingid,
    orderid affiche 14
    bookingid affiche 2017081914

    pour le moment parfait! j'attends 24 heures pour voir ce qui ce passe

    cordialement tee.

  20. #20
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Août 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : amateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2017
    Messages : 10
    Points : 3
    Points
    3
    Par défaut the post est resolu cela fonctionne impeccable
    bon apres 24 heures j;ai teste avec les 2 champs de bases cela fonctionne impeccable merci Cat81 et Inazo qui ont eu la gentilesse de m'orienter correctement.

    bonne journee a tous et merci
    Tee

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

Discussions similaires

  1. Alimenter le numero de commande a la creation
    Par Rminator dans le forum SAGE
    Réponses: 20
    Dernier message: 02/03/2016, 16h59
  2. Réponses: 3
    Dernier message: 17/02/2009, 13h09
  3. erreur sur le numero de commande
    Par nani1 dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2008, 15h17
  4. Réponses: 3
    Dernier message: 02/09/2002, 18h49
  5. Réponses: 2
    Dernier message: 11/08/2002, 21h27

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