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

Vue hybride

tee2017 numero de commande 16/08/2017, 10h56
Inazo Bonjour, Déjà pourquoi tu... 16/08/2017, 11h47
Cat81 Bonjour ^^ Déjà, tu peux... 16/08/2017, 15h20
tee2017 orderid 16/08/2017, 15h34
Cat81 Tee, Y'a un truc que je... 16/08/2017, 15h51
tee2017 primaire et secondaire 16/08/2017, 18h28
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    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
    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 chevronné 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
    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 éclairé 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 : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    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
    Membre régulier
    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
    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 éclairé 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 : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    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
    Membre régulier
    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
    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 éclairé 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 : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 56
    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 ^^'

+ 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