Probleme avec tableaux

Résolu/Fermé
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 - 21 oct. 2009 à 11:15
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 - 22 oct. 2009 à 17:23
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 vendredi 2 octobre 2009 Statut Membre Dernière intervention 24 novembre 2009 2
21 oct. 2009 à 12:26
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 mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
21 oct. 2009 à 14:07
comment je fais ma vérification dans mon tableau alors si c'est inutile?
0
Damemarianne Messages postés 37 Date d'inscription vendredi 2 octobre 2009 Statut Membre Dernière intervention 24 novembre 2009 2
21 oct. 2009 à 14:10
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 mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
21 oct. 2009 à 15:40
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 mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
21 oct. 2009 à 15:48
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 mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
22 oct. 2009 à 14:19
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 mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
22 oct. 2009 à 16: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
Bonjour

La comparaison, c'est == pas =

if($tt=="plus")
if($tt=="moins")
0
papouuu86 Messages postés 77 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
22 oct. 2009 à 16:19
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 mercredi 21 octobre 2009 Statut Membre Dernière intervention 4 novembre 2009 11
22 oct. 2009 à 17:23
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