PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » [résolu] je cherche a combiner deux tests avec une fonction AND » 11-12-2016 16:03:51

Merci ManicoW !

Je n'ai pas eu de mail me disant que vous avez posté une réponse... d'ou le retard de ma réponse.

La solution que j'ai retenue est la suivante :


$products_1 = array(3,4,5,6,7,12);
$products_2 = array(9,10,11);

$has_product_1 = false;
$has_product_2 = false;

$cartClass = hikashop_get('class.cart');
$cart = $cartClass->loadFullCart();

foreach($cart->products as $product) {
  if($has_product_1 && $has_product_2) {
    return true;
  }

  if ($has_product_1 || in_array($product->product_id, $products_1))
  {
    $has_product_1 = true;
    continue;
  }

  if ($has_product_2 || in_array($product->product_id, $products_2))
  {
    $has_product_2 = true;
    continue;
  }
}

return $has_product_1 && $has_product_2;
 

Encore merci pour votre aide !

J'ai un autre petit souci :

je cherche a ajouter un bout de texte devant

tax_namekey

dans le code suivant :

'NAME' => $tax->tax_namekey,

Mais lorsque j'entre ceci :

'NAME' => $tax->"Dont ".tax_namekey,

j'ai une erreur de syntaxe.
J'ai beau chercher, mais je ne trouves pas (faut dire que mon niveau de PHP est très bas)

EDIT---------------------------
J'ai trouvé !
La bonne syntaxe est :

'NAME' => 'Dont '.$tax->tax_namekey,

EDIT FIN ----------------------

D'avance merci pour votre aide,
Cordialement,
Stéphane

#2 Re : Forum Général PHP » [résolu] je cherche a combiner deux tests avec une fonction AND » 11-12-2016 16:03:51

j'ai revu ma copie et ai réécris le code comme suit :


$match_product2 = array(3,4,5,6,7,12);
$match_product1 = array(9,10,11)
$result = false;

$cartClass = hikashop_get('class.cart');
$cart = $cartClass->loadFullCart();
foreach($cart->products as $product) {
  if (in_array($product->product_id, $match_product1)) {
    foreach($cart->products as $product) { 
      if (in_array($product->product_id, $match_product2)) {
        $result = true;
        break 2;
      }
    }
  }
}
echo $result;
 

mais j'ai une erreur de syntaxe... et je ne sais pas où elle pourrait être...
Je ne suis pas sur que ma variable $result soit booléenne... or j'ai besoin d'un résultat true/false.

D'avance merci pour votre aide,
Cordialement,
Steph

#3 Forum Général PHP » [résolu] je cherche a combiner deux tests avec une fonction AND » 11-12-2016 16:03:51

steph38
Réponses : 3

Bonjour,

Le code me sert a tester l'existance de produits à partir de leurs id dans Hikashop afin de modifier avec RegularLabs ReReplacer les liens des menus Joomla! si le produit n'est pas dans le panier.
En faite j'ai 4 étapes de commande qui peuvent s'étaler dans le temps. etape 1 maintenant et etape 2 dans 3 mois (émission de deux factures)
Par contre pour que le client puisse aller en étape 2 il faut qu'il ait un produit de l'étape 1 dans le panier. Il en vas de même pour l'étape 2, le client ne peut aller en étape 3 que s'il a un produit de l'étape 2 dans le panier (mais il faut que je sois sur qu'il ai toujours un produit de l'étape 1 dans son panier)
C'est là où je butte :

code test de l'étape 1 qui fonctionne bien :


$match_products = array(9,10,11);

$cartClass = hikashop_get('class.cart');
$cart = $cartClass->loadFullCart();
foreach($cart->products as $product){
  if(in_array($product->product_id, $match_products))
   {
      return true;
   }
return false;
}
 

Code test de l'étape 2 seule qui fonctionne bien :


$match_product1 = array(3,4,5,6,7,12);

$cartClass = hikashop_get('class.cart');
$cart = $cartClass->loadFullCart();
foreach($cart->products as $product){
  if(in_array($product->product_id, $match_product1))
   {
      return true;
   }
return false;
}
 

mais il faut que je "combine/imbrique" les deux tests qui doivent retourner un état comme suit étape 1=true ET étape 2=true pour que l'état global du code soit true, dans tous les autres cas l'état global est false.

J'ai donc pensé "combiner/imbriquer" cela comme suit :


$match_product2 = array(3,4,5,6,7,12);
$match_product1 = array(9,10,11)

$cartClass = hikashop_get('class.cart');
$cart = $cartClass->loadFullCart();
foreach($cart->products as $product){
  if (in_array($product->product_id, $match_product2))
   {
      if (in_array($product->product_id, $match_product1))
   }
return false;
}
 

et cela ne fonctionne pas... et là mes maigres connaissances en PHP ne m'aident pas... hmm

Si vous pouviez me donner une piste sur mon erreur (SVP soyez indulgents, expliquez moi mon erreur)

D'avance merci pour votre aide,
Cordialement,
Steph

Pied de page des forums

Propulsé par FluxBB