action de masse php avec champ perso

  • Posts: 2639
  • Thank you received: 66
  • Hikashop Business
2 years 2 months ago #344933

-- HikaShop version -- : 4.6.1

je fais cette action de masse php pour recuperer les valeur du champ perso product_categories

$cats = explode(',',{product_categories});

$db = JFactory::getDBO();

foreach($cats as $c){
    $q = 'INSERT IGNORE INTO #__hikashop_product_category (category_id, product_id)	VALUES ('.$c.', {product_id});';
    $db->setQuery($q);
    $db->execute();
}

mais j'ai une erreur sur explode car le champ perso product_categories n'est pas trouve

si je remplace par les valeurs $cats = array (503,803,246,605,251,263,60,711,1081); tout marche parfaitement


merci pour l'aide

Last edit: 2 years 2 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
2 years 2 months ago #344934

Bonjour,

Pouvez-vous fournir une capture des paramètres du champ et une capture des paramètres de l'action de masse ?

Please Log in or Create an account to join the conversation.

  • Posts: 2639
  • Thank you received: 66
  • Hikashop Business
2 years 2 months ago #344936

Le champ perso



l'action


l'erreur actuelle

1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$cats = explode(',' , 503,803,246,605,251,263,60,711,1081 ); $db = JFactory:' at line 1


j'ai essaye
$cats = explode(',' , '{product_categories}' );
et
$cats = explode(',' , {product_categories});
et
$cats = explode(',' , addslashes({product_categories}) );

rien ne marche

on dirait qu'il manque les quotes au string 503,803,246,605,251,263,60,711,1081

Attachments:
Last edit: 2 years 2 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
2 years 2 months ago #344938

Vous utilisez une action "requête MySQL".
Dans ce cas, vous n'avez que le droit de mettre une requête MySQL, pas de code PHP.
Vous devez changer le type de l'action pout l'action "code PHP" et cela devrait fonctionner.

Please Log in or Create an account to join the conversation.

  • Posts: 2639
  • Thank you received: 66
  • Hikashop Business
2 years 2 months ago #344945

c'est en dupliquant l'action et en la simplifiant pour le test que j'ai par erreur selectionne mysql si je selectionne php avec la meme action j'ai

Le code PHP de l'action est erroné : syntax error, unexpected token "{", expecting ")"

le contenu de product_categories est par exemple : 503,803,246,605,251,263,60,711,1081

le code exact est

$db = JFactory::getDBO();

$cats = explode(',',{product_categorie});

foreach($cats as $c){
    $q = 'INSERT IGNORE INTO #__hikashop_product_category (category_id, product_id)	VALUES ('.$c.', {product_id});';
    $db->setQuery($q);
    $db->execute();
}

$q = 'DELETE FROM #__hikashop_product_category WHERE  product_id = {product_id} AND category_id = 30;';
$db->setQuery($q);
$db->execute();

Last edit: 2 years 2 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
2 years 2 months ago #344948

Le code PHP n'est pas valide.
Au lieu de :
$cats = explode(',' , {product_categories} );
il faut mettre:
$cats = explode(',' , '{product_categories}' );

Please Log in or Create an account to join the conversation.

  • Posts: 2639
  • Thank you received: 66
  • Hikashop Business
2 years 2 months ago #344955

Je viens de le re essayer et ca marche, merci

c'est pourtant ce que j'ai écris queques messages au dessus

j'ai essaye
$cats = explode(',' , '{product_categories}' );
et
$cats = explode(',' , {product_categories});
et
$cats = explode(',' , addslashes({product_categories}) );

Please Log in or Create an account to join the conversation.

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
2 years 2 months ago #344958

Oui, mais quand vous aviez fait ces changements, vous aviez laisser l'action "requête MySQL" au lieu de "code PHP", donc de toute façon cela ne fonctionnait pas.

The following user(s) said Thank You: erickb

Please Log in or Create an account to join the conversation.

Time to create page: 0.079 seconds
Powered by Kunena Forum