Eviter les doublons
ladj59
Messages postés
322
Statut
Membre
-
Jiji la malice -
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);
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);
Configuration: Windows XP Internet Explorer 7.0
10 réponses
-
Hé hé Croy!
Tant de bonté et de mobilisation d'intelligence en une seule personne, ça force le respect. -
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-
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>
-
-
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. -
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>';
}
?> -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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; } ?> -
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++;
} -
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++ ?-
'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);
}
-
-
-
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 ? -
oue j'ai compris ta solution
ma solution n'était pas logique