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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Synchronisation des stocks php et mysql


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Points : 0
    Points
    0
    Par défaut Synchronisation des stocks php et mysql
    Bonjour tout le monde,

    c'est mon premier poste ici

    Voilà, nous avons une caisse en ligne (hiboutik.com) qui est utilisé pour notre boutique physique pres de BREST.
    nous avons aussi une boutique prestashop qui sert de drive.

    Quand un client passe en caisse, les stock hiboutik sont modifiées, et nous avons un script fourni par hiboutik qui permet via un cron toute les 5 minutes d'envoyer les nouveaux stocks sur notre boutique prestashop (directement sur la base.
    Nous avons une connection a l'API hiboutik qui nous permet de recuperer les stocks et de les importer sur prestashop.

    Ma question est celle ci, j'aimerais avoir un script qui fait le chemin inverse apres une vente sur prestashop, que les stock prestashop soit envoyé vers hiboutik...
    car ca va seulement dans un sens.
    Ex : j'ai 10 pommes sur hiboutik, donc sur prestashop aussi. Un client passe en caisse avec une pomme, les stocks hiboutik diminue, et donc les stock prestashop aussi. Le hic, c'est que lorsqu'un client passe sur prestashop, il en prend 1... donc ca fait 9 pommes restantes, mais rien ne l'indique a hiboutik, qui reste a 10... 5 minutes plus tard, le cron se lance... et hop les stock de pommes sur prestashop reviennent à 10.

    l'idee serait qau'a chaque vente prestashop, un autre script envoi les stocks restant sur prestashop...

    le script hiboutik qui fonctionne pour actualisé les stock sur prestashop est celui ci :
    Que doit je modifier pour que ca aille dans l'autre sens, vers HIBOUTIK ??

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <?
    /*
    ####################################################################################################
    //Constantes à adapter selon votre compte Hiboutik et votre base de données Prestashop
    ####################################################################################################
    */
     
    require __DIR__ . '/vendor/autoload.php';
    use \Curl\Curl;
     
    //API REST Hiboutik
    $url = "https://demo.hiboutik.com/apirest";
    $user = "contact@hiboutik.com";
    $key = "";
     
    //Base de données de votre Prestashop (cf. /prestashop/config/settings.inc.php)
    $mysql_host = "localhost";
    $mysql_user = "";
    $mysql_pass = "";
    $mysql_db = "";
    $mysql_db_prefix = "ps_";
     
    $en_verbose = 0;
    $ma_date = date("Y-m-d H:i:s");
     
    /*
    ####################################################################################################
    //Connexion MySQL et ajustement des noms des tables
    ####################################################################################################
    */
    $mysqli = mysqli_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_db);
    if (mysqli_connect_errno($mysqli)) {
        echo "Echec lors de la connexion à MySQL : " . mysqli_connect_error();
    }
    $mysqli->set_charset("utf8");
     
    $table_product_attribute = $mysql_db_prefix . "product_attribute";
    $table_product = $mysql_db_prefix . "product";
    $table_stock_available = $mysql_db_prefix . "stock_available";
     
     
    /*
    ####################################################################################################
    //Connexion à l'API Hiboutik et récupération du stock disponible sur la warehouse 1
    ####################################################################################################
    */
    $curl = new Curl();
    $curl->setBasicAuthentication($user, $key);
    $curl->get("$url/stock_available/warehouse_id/1");
     
    if ($curl->error)
    {
    echo 'Error: ' . $curl->errorCode . ': ' . $curl->errorMessage;
    }
    else
    {
     
    //récupération du stock disponible
    $stock_available = $curl->response;
    foreach ($stock_available as $key => $value) {
    $id_prod_sa = $value -> product_id;
    $id_prod_taille_sa = $value -> product_size;
    $stock_dispo[$id_prod_sa][$id_prod_taille_sa] = $value -> stock_available;
    }
     
     
     
    /*
    ####################################################################################################
    //Traitement des produits avec déclinaisons
    ####################################################################################################
    */
    $sql_produits_prestashop = "SELECT * FROM $table_product_attribute WHERE reference <> '';";
    $result_produits_prestashop = mysqli_query ($mysqli, "$sql_produits_prestashop");
    $nombreligne_produits_prestashop = $result_produits_prestashop->num_rows;
    if ($en_verbose == "1") print("<br />$sql_produits_prestashop --> $nombreligne_produits_prestashop");
    while ($row = $result_produits_prestashop->fetch_array(MYSQLI_BOTH))
    {
    $reference = $row["reference"];
    $id_product = $row["id_product"];
    $id_product_attribute = $row["id_product_attribute"];
     
    if (preg_match('/|/', $reference))
    {
    $reference_presta = explode("|", $reference);    
    $id_prod_hibou = $reference_presta[0];
    $id_taille_hibou = $reference_presta[1];
     
    $qtity = $stock_dispo[$id_prod_hibou][$id_taille_hibou];
    if (is_numeric($qtity))
    {
    $ma_requete_modif_produit = "UPDATE $table_stock_available SET quantity = '$qtity' WHERE id_product_attribute = '$id_product_attribute' AND id_product = '$id_product';";
    $mysql_query_modif_account = mysqli_query ($mysqli, "$ma_requete_modif_produit");
    if ($en_verbose == "1") print("<br />$ma_requete_modif_produit");
    }
    }
    }
    $result_produits_prestashop->free();
     
     
    /*
    ####################################################################################################
    //Traitement des produits sans déclinaisons
    ####################################################################################################
    */
    $sql_produits_prestashop = "SELECT * FROM $table_product WHERE reference <> '';";
    $result_produits_prestashop = mysqli_query ($mysqli, "$sql_produits_prestashop");
    $nombreligne_produits_prestashop = $result_produits_prestashop->num_rows;
    if ($en_verbose == "1") print("<br />$sql_produits_prestashop --> $nombreligne_produits_prestashop");
    while ($row = $result_produits_prestashop->fetch_array(MYSQLI_BOTH))
    {
    $reference = $row["reference"];
    $id_product = $row["id_product"];
     
    $qtity = $stock_dispo[$reference]["0"];
    if (is_numeric($qtity))
    {
    $ma_requete_modif_produit = "UPDATE $table_stock_available SET quantity = '$qtity' WHERE id_product = '$id_product';";
    $mysql_query_modif_account = mysqli_query ($mysqli, "$ma_requete_modif_produit");
    if ($en_verbose == "1") print("<br />$ma_requete_modif_produit");
    }
    }
    $result_produits_prestashop->free();
     
     
    }
    ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour et bienvenu sur DVP

    Merci de fournir un code correctement indenté, pour en faciliter la lecture.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    Voilà c'est fait je penses

  4. #4
    Invité
    Invité(e)
    Par défaut
    1/ Voir :


    En informatique, l'indentation consiste en l'ajout de tabulations ou d'espaces dans un fichier texte.
    2/ Si vous savez le faire dans un sens, je ne comprends pas quel est le problème pour le faire dans l'autre sens

    Autre question : pourquoi ne pas travailler directement sur la même base de données (et tables), au lieu de faire ces échanges de données...
    Ca ressemble fort à un problème de conception initiale, et donc à l'ajout de rustines.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    ok :/ je dois l'indenté selon quel style ? je connais pas trop tout ca désolé. y'a t il des générateurs en ligne qui permettent de le faire ?

    que faut il garder, que faut il retirer ? merci pour votre aide

  6. #6
    Invité
    Invité(e)
    Par défaut
    Peu importe le style que tu choisis : c'est une question de LISIBILITE => mets des tabulations !

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    je suis désolé, mais je ne comprends pas ce que je dois faire :/ j'ai pas l'habitude, sorry

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Yop,

    Je vais repasser un peu sur les interventions de Jreaux62.

    Ce qu'il entend par indenter ton code, c'est le rendre lisible. Là, on ne distingue pas, ou mal, les boucles, les conditions, on à du mal à le lire de manière aisée.

    Pour indenter un code, tu dois y mettre des tabulations (sur ton clavier, au dessus de la touche maj) afin que ce soit espacé. Je te conseil d'aller voir le lien de Jreaux sur l'indentation, tu y verras plus claire.

    Pour ce qui est de ton soucis, je rejoins également plus haut... Si vous arrivez dans un sens, qu'est ce qui bloque l'autre sens?
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    Merci pour votre reponse . Ha d'accord c'est ca alors indenter, mais justement je sais pas ou sontles boucles, conditions, etc. La j'ai repris le script tel qu'il est fourni sur hiboutik.com, partie blog.

    En fait les stock sont actualise de hiboutik vers prestashop, mais pas l'inverse, car aucun code ne fait la liaison. J'ai installer via ssh sur mon serveur composer et les librairies hiboutik... tout marche nickel, mais la je voudrais modifier le script hiboutik pour faire le chemin inverse, puisque j'ai acces total a l'api hiboutik.... les bases sont compatibles actuellement grace a la reference produits.
    Je sais pas que c'est pas sorcier mais je sais pas comment faire car je suis novice en la matiere....~~

  10. #10
    Invité
    Invité(e)
    Par défaut
    1/
    Citation Envoyé par karzak59 Voir le message
    je sais pas ou sont les boucles, conditions, etc.
    Tu ne sais pas ce qu'est l'indentation, une boucle, une condition,......

    Alors, je doute que tu saches programmer, et que ce code soit de toi.
    Je me demande même pourquoi c'est à toi qu'on confie le travail......

    Je suppose que tu es stagiaire ?


    2/ Et ce n'est pas le script Hiboutik qu'il faut modifier, mais aller mettre les mains dans le cambouis de Prestashop pour AJOUTER le bout de script VERS Hiboutik, à chaque nouvelle commande.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    oui c'est ce que je compte faire, je crois que je peux faire un callback lors d'une vente. Il suffirait que je modifie legerement le script hiboutik qui se connecte dejà a l'API...

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    Je est là pour apprendre et s'entraider

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    Donc dans le script on voit qu'il se connecte à l'API de hiboutik, il recupere les stock de la caisse en ligne et les envoi sur la base de données prestashop.

    ce que j'aimerais faire, c'est plutôt prendre les stocks de prestashop et les envoyer vers hiboutik...

    au moins ca va dans les deux sens, le script sera lancé lors d'une vente par un appel callback (fonction native de prestashop)

    Si vous pourriez m'aider pour cela, (promis dans quelques années, je ferais mieux

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ce que tu demandes, c'est qu'on fasse le travail à ta place.
    Ce n'est pas comme ça que ça fonctionne.

    On peut t'aider à CORRIGER tes codes.
    Pas les écrire pour toi.

    Citation Envoyé par karzak59 Voir le message
    ...je crois que je peux faire un callback lors d'une vente. Il suffirait que je modifie legerement le script hiboutik qui se connecte dejà a l'API...
    On attends donc ton code.

    N.B. Plusieurs questions t'ont été posées. Merci aussi d'y répondre.

Discussions similaires

  1. [MySQL] Utilisation des procédures stockées PHP/MySQL
    Par flodotsoft dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/07/2008, 11h36
  2. Réponses: 9
    Dernier message: 08/02/2008, 16h17
  3. traitement des apostrophes php-mysql-flash
    Par pingoo67 dans le forum Dynamique
    Réponses: 2
    Dernier message: 19/06/2007, 20h17
  4. Réponses: 4
    Dernier message: 26/01/2007, 10h20
  5. Réponses: 4
    Dernier message: 05/12/2006, 20h13

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