Eviter les doublons
Fermé
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
-
5 mai 2008 à 09:04
Jiji la malice - 21 févr. 2009 à 17:30
Jiji la malice - 21 févr. 2009 à 17:30
10 réponses
Hé hé Croy!
Tant de bonté et de mobilisation d'intelligence en une seule personne, ça force le respect.
Tant de bonté et de mobilisation d'intelligence en une seule personne, ça force le respect.
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
113
5 mai 2008 à 10:14
5 mai 2008 à 10:14
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
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
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
5 mai 2008 à 10:18
5 mai 2008 à 10:18
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>
<?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>
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
113
5 mai 2008 à 10:23
5 mai 2008 à 10:23
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.
Pas d'effort ==> pas d'aide.
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
5 mai 2008 à 10:39
5 mai 2008 à 10:39
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>';
}
?>
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
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
113
5 mai 2008 à 10:44
5 mai 2008 à 10:44
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;
}
?>
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
5 mai 2008 à 10:52
5 mai 2008 à 10:52
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++;
}
sachant que $tab est un array qui contient mes données
foreach( $tab as $data )
{
if( $data != $data++ )
echo '<br>...' . $data . '...';
$data = $data++;
}
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
113
5 mai 2008 à 10:59
5 mai 2008 à 10:59
Dans le cadre de ma semaine de bonté toujours :
Quelles sont les différences avec ta tentative d'adaptation ? Dans celle-ci pourquoi $data++ ?
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);
}
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);
}
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
5 mai 2008 à 11:04
5 mai 2008 à 11:04
ok merci croy
je suis vraiment un galérien
je suis vraiment un galérien
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
113
5 mai 2008 à 11:10
5 mai 2008 à 11:10
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 ?
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 ?
ladj59
Messages postés
322
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
29 décembre 2008
3
5 mai 2008 à 12:13
5 mai 2008 à 12:13
oue j'ai compris ta solution
ma solution n'était pas logique
ma solution n'était pas logique