Eviter les doublons

ladj59 Messages postés 322 Statut Membre -  
 Jiji la malice -
Bonjour,
j'ai un tableau et ensuite j'affiche mais le probléme c'est que je ne veux pas mettre les doublons du tableau

comment faire svp?

<?php
foreach($tab as $data)
{
echo '<option value="'.$data.'">'.$data.'</option>';
}
?>

le tableau est préalablement trié
natcasesort($tab);
A voir également:

10 réponses

bloom
 
Hé hé Croy!

Tant de bonté et de mobilisation d'intelligence en une seule personne, ça force le respect.
1
croy Messages postés 457 Statut Membre 114
 
Réfléchis un petit peu et tu trouveras comment tu peux intégrer dans ta boucle foreach :

1.au début un test pour savoir si l'entrée en cours du tableau est identique à la précédente
2.à la fin la sauvegarde dans une variable de la valeur en cours du tableau

Une autre piste si le tableau vient d'une base mysql : DISTINCT ou GROUP BY
0
ladj59 Messages postés 322 Statut Membre 3
 
ben pourtat avec le code complet ci dessous il me semble avoir mis tous les order by et distinct nécessaire donc je ne vois pas quoi changer


<?php
$sql=mysql_query("SELECT DISTINCT sujet FROM base_physique ORDER BY sujet") or die(mysql_error());
$sql2=mysql_query("SELECT DISTINCT sujet2 FROM sujets ORDER BY sujet2") or die(mysql_error());
$n=0;
$tab = array();

while ($sujet = mysql_fetch_array($sql)) //propose tous les sujets présents dans la table
{
$data = $sujet['sujet'];
$tab[$n] = $data;
$n++;
}

while ($sujet2 = mysql_fetch_array($sql2)) //propose tous les sujets présents dans la table
{
$data = $sujet2['sujet2'];
$tab[$n] = $data;
$n++;
}
natcasesort($tab);

?>

<form id="formulaire" method="post" action="import2.php">
<select name="sujet" id="sujet">

<?php

$array = array();
foreach($tab as $data)
{
if (!in_array($data, $array)) {
array_push($data, $array);
echo '<option value="'.$data.'">'.$data.'</option>';
}
}
?>

</select>
<input value="envoyer" type="submit"/>
</form>
0
croy Messages postés 457 Statut Membre 114
 
Tu persistes dans l'erreur en ne formattant pas correctement pas tes scripts pour bien montrer leur structure logique.

Pas d'effort ==> pas d'aide.
0
ladj59 Messages postés 322 Statut Membre 3
 
j'ai essayé ca mais toujours pas
j'ai du mal...

<?php
$array = array();
foreach($tab as $data) {
if (!in_array($data, $array)) {
array_push($data, $array);
}
}
foreach($array as $data) {
echo '<option value="'.$data.'">'.$data.'</option>';
}
?>
0

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

Posez votre question
croy Messages postés 457 Statut Membre 114
 
C'est ma semaine de bonté ! Malgré un script toujours mal formatté, voici un exemple de boucle (bien formattée) qui devrait résoudre ton pb :
<?php
$array = array( "a", "a", "b", "c", "c", "d" );
foreach( $array as $data )
	{
	if( $data != $dataPrecedente )
		echo '<br>...' . $data . '...';
	$dataPrecedente = $data;
	}
?>
0
ladj59 Messages postés 322 Statut Membre 3
 
j'ai essayé de l'adapter à mon cas mais rien
sachant que $tab est un array qui contient mes données

foreach( $tab as $data )
{
if( $data != $data++ )
echo '<br>...' . $data . '...';
$data = $data++;
}
0
croy Messages postés 457 Statut Membre 114
 
Dans le cadre de ma semaine de bonté toujours :
foreach( $array as $data )
	{
	if( $data != $dataPrecedente )
		echo '<option value="' . $data . '">' . $data . '</option>'; 
	$dataPrecedente = $data;
	}


Quelles sont les différences avec ta tentative d'adaptation ? Dans celle-ci pourquoi $data++ ?
0
Jiji la malice
 
'tain sa marche tjs pas :
mon array_puch ne renvoit rien.
voiçi mon code ben formatter ! ;-)

$concours=array();
$concours = array_unique ($concours);

while($row=mysql_fetch_array($jeu))
{
$aut = $row['auteur'];
$total = $row['count( auteur )']*2;
array_push($concours,$aut,$total);
}

while($row=mysql_fetch_array($forum))
{
$aut = $row['auteur'];
$total = $row['count( auteur )']*1;
array_push($concours,$aut,$total);
}
0
ladj59 Messages postés 322 Statut Membre 3
 
ok merci croy
je suis vraiment un galérien
0
croy Messages postés 457 Statut Membre 114
 
A mon avis tu ne mobilises pas assez ton intelligence :
1. un formattage des scripts révèle une bonne maîtrise de la structure logique de ton script
2. tu n'analyses pas tes erreurs : pourquoi $data++ ? différences entre ta tentative et la solution finale ?
0
ladj59 Messages postés 322 Statut Membre 3
 
oue j'ai compris ta solution
ma solution n'était pas logique
0