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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    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 membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    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 membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    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 !

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