Probleme avec tableaux

Résolu
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   -  
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous ceux qui voudront bien me lire,

alors mon soucis est que je dois effectuer une vérification de l'existence d'une valeur dans un tableau avant d'ajouter cette valeur si elle n'y est pas deja.

j'ai bidouillé une boucle mais la vérification ne se fait que sur la derniere valeur ajoutée au tableau ainsi si j'y insere une valeur X, et que je rééssaie d'inserer un X la vérification fonctionne et interdit l'ajout. En revenche si après avoir inséré un X j'y insere un Y et que je réésaie de mettre X la il me prend donc la verif est bien faite que sur le dernier enregistrement => Probleme...

voila mon code, si quelqu'un à une piste vous êtes les bienvenus!!! ;)

if(isset($_POST['reference'],$_POST['nom'],$_POST['prix'],$_POST['quantite']))
{	
	$ref=$_POST['reference'];
	$position=false;
	$cadd=$monpanier->getBasket();
	$nb_art = $monpanier->getNbrArticle();
	$yo=$nb_art;
	for($i=0; $i<$nb_art; $i++)
	{
		$tabs=$cadd[$i];
	}
	
	$x=0;
	while($x<$yo)
	{
	          $position=array_search($ref, $tabs["code"]);
	          $x++;
	}
		if ($position !== false)
        {					
	      echo'votre article existe deja, veuillez utiliser les bouttons + et - pour ajuster la quantité désirée';	
			print_r($tabs);
        }
        else
        {
	      echo'article ajouté';
                   $monpanier->addArticle(array('code'=>$_POST['reference'],'nom'=>$_POST['nom'],'prix'=>$_POST['prix'],'quantite'=>$_POST['quantite']));//  on insere les valeurs dans le tableau "monpanier"
        } 
		
	
}

10 réponses

Damemarianne Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   2
 
for($i=0; $i<$nb_art; $i++)
	{
		$tabs=$cadd[$i];
	}

dans ta variable $tabs il n'y a que la dernière valeur du tableau
il faudrait faire quelquechose du genre
$tabs=array();
for($i=0; $i<$nb_art; $i++)
	{
		$tabs[]=$cadd[$i];
	}

et sinon ca c'est inutile
while($x<$yo)
	{
	          $position=array_search($ref, $tabs["code"]);
	          $x++;
	}
0
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
comment je fais ma vérification dans mon tableau alors si c'est inutile?
0
Damemarianne Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   2
 
la boucle est inutile pas la vérification
met juste
$position=array_search($ref, $tabs["code"]);

à la place de ta boucle

parceque là tu fais juste le même test x fois
0
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
oui ok mais ca ne m'aide pas pour résoudre mon problème.... :'(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
TROUVE!!!!
grace à un autre forum (je dis pas je sais pas si on a le droit de citer la concurrence lol)
voila la solution pour ceux qui auraient le même souchi:

$trouve=false;
foreach ($cadd as $art) {
if (in_array($ref,$art)) {
$trouve=true;
break;
}
}
if ($trouve)
echo'votre article existe deja, veuillez utiliser les bouttons + et - pour ajuster la quantité désirée';
else {
echo'article ajouté';
$monpanier->addArticle(array('code'=>$_POST['reference'],'nom'=>$_POST['nom'],'prix'=>$_POST['prix'],'quantite'=>$_POST['quantite']));// on insere les valeurs dans le tableau "monpanier"
}
0
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
nouveau soucis. Après avoir interdit l'ajout d'un même article dans le panier j'ai intégré les boutons + et - dans ce dernier cependant des petits soucis se posent:

- la quantité ne passe pas 2
- après 2 si j'augmente encore la quantité n'est pas incrémentée et un nouvel article est ajouté sans aucune autre caractéristique qu'une quantité égale à 2
- si j'ai deux articles dans mon panier les deux quantitées sont incrémentées (toujours jusqu'a 2 puis de meme ajout d'un article vide)
- si une quantité de 2 est décrémentée elle passe de suite à 0 et génère des erreurs.


Voila la partie de mon code concernée:

foreach($caddie as $article)
					{		
						$q=$article['quantite']['code'];
						if(isset($_GET['qtt']))
						{
							if($_GET['qtt']=="plus")
							{
								$monpanier->modifyArticle($_GET['use'], 'quantite', $article['quantite']++);
							}
							else
							{	
								$monpanier->modifyArticle($_GET['use'], 'quantite', $article['quantite']--);	
							}
						}
						echo "<tr> 
								<td class='panier'>$count </td>
								<td class='panier'> $article[code] </td>
								<td class='panier'> $article[nom] </td>
								<td class='panier'> $article[prix] euros </td>
								<td class='panier'> <br/>$article[quantite] <br/><br/><a href=panier2.php?qtt=plus&use=$article[code]><img src='images/plus.jpg'/></a> <a href=panier2.php?qtt=moins><img src='images/moins.jpg'/></a></td>
								<td><a href=panier2.php?id_suppr=$count><img src='images/supr.jpg' alt='Supprimer' title='Supprimer' border='0'></a></td>
							</tr>";
0
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
j'ai réussi à faire ca et plus d'erreur mais je n'arrive pas à décrémenter alors que "moins" est bien dans l'url... please help

$cd=$monpanier->getBasket();
if(isset($_GET['qtt']))
	{
		$xx=$_GET['use'];
		$tt=$_GET['qtt'];
		$xx-=1;
		foreach ($cd as $ar)
		{					
			if($tt="plus")
			{
				$monpanier->modifyArticle($xx, 'quantite', $ar['quantite']+=1);
			}
			elseif($tt="moins")
			{	
				$monpanier->modifyArticle($xx, 'quantite', $ar['quantite']-=1);	
			}
		}
		
	}
0
le père
 
Bonjour

La comparaison, c'est == pas =

if($tt=="plus")
if($tt=="moins")
0
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
arf zut oui c'est vrai j'avais enlevé lors de mon précédent soucis pour tester... ralala it's boulet time... dsl
et merci le père ;)
0
papouuu86 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
un peu plus fonctionnel:incrémente ou décrémente bien dans la bonne ligne (avant non en fait si plusieurs articles...)

$cd=$monpanier->getBasket();
if(isset($_GET['qtt']))
	{
		$xx=$_GET['use'];
		$tt=$_GET['qtt'];
		$xx-=1;
							
			if($tt=="plus")
			{
				$monpanier->modifyArticle($xx, 'quantite', $cd[$xx]['quantite']+=1);
			}
			elseif($tt=="moins")
			{	
				$monpanier->modifyArticle($xx, 'quantite', $cd[$xx]['quantite']-=1);	
			}		
	}
0