[php] Récuperation de doublons

Résolu/Fermé
neo2099 Messages postés 164 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 9 avril 2020 - 13 mars 2008 à 09:44
neo2099 Messages postés 164 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 9 avril 2020 - 13 mars 2008 à 11:12
Bonjour,

Voila j'ai un script qui me permet de recupéré la liste de mes membres dans des tableaux (en faite c'est un espece de jeux de conquete) on peut donc conquerir des territoires sur des planetes le problemes c'est que si on a conquit plusieurs territoire sur une meme planete le pseudo de l'utilisateur n'est marqué qu'une fois (un peu comme si la valeur du tableau avait été effecer) et a la place j'ai le pseudo du joueur d'apres.

Je vous met le code pour que vous puissiez m'aider :

<br>
<h1>Tous les territoires</h1>
<br>
<table border="2">

<tr>
<td width="50px"><center>Pos</center></td>
<td width="100px"><center>Pseudo</center></td>
<td width="100px"><center>Nom</center></td>
<td width="100px"><center>Action</center></td>
</tr>
<tr>

<?

$i=0;
$a=$ter['num_pla'];
echo '<form action="territoire.php?page=next" method=post>';
echo 'Choississez une planete ou vous voulez voir les territoires<br>';
echo '<p></p>';
echo '<input name="next" type="textbox">';
echo '<input type=submit value=">"><br>';
echo '<p></p>';
//echo 'Planete ' .$k;
if(@$_GET['page'] == 'next')
{
$a = @$_POST['next'];
}
if($a>10)
{
echo 'Aucune planete n\'est aussi éloigné';
exit();
}
if($a == '')
{
$a=1;
}
echo 'Planete numero ' .$a;

$result = mysql_query("SELECT * FROM territoire where num_pla='" .$a. "' ORDER BY territoire");
$list = array();
$list2 = array();
$list3= array();
while ( $line = mysql_fetch_array($result) ){

if( ! in_array($line[$i+3], $list ) )
$list[] = $line[$i+3];
if( ! in_array($line[$i+1], $list2 ) )
$list2[] = $line[$i+1];
if( ! in_array($line[$i+4], $list3 ) )
$list3[] = $line[$i+4];
}
$i=0;
for ( $z = 1; $z < 11; $z++ ){

// --- Check presence of $z in the array
if (in_array($z, $list )) {
if(in_array($z, $list));
{
echo '<td width="50" height="50"><center>' .$z. ' </center></td>';
echo '<td width="50" height="50"><center>'.$list2[$i].'</center></td>';
echo '<td width="50" height="50"><center>' .$list3[$i]. '</center></td>';
echo '<td width="50" height="50"><center><a href="mail.php?page=' .$list2[$i]. '"><img src="images/mail.jpg" width="25" height="25" alt=mail></a><a href="attaque.php?num_pla=' .$a. '&territoire=' .$z. '"> <img src="images/attaque.jpg" width="25" height="25" alt=attaquer></a><a href="espionnage.php?num_pla=' .$a. '&territoire=' .$z. '"> <img src="images/espion.jpg" width="25" height="25" alt=espionner></a><a href="commerce.php?num_pla=' .$a. '&territoire=' .$z. '"> <img src="images/commerce.jpg" width="25" height="25" alt=Commerce></a></center></td>';
echo '</tr><tr>';
$i++;
}}
else {
echo '<td width="50" height="50"><center>' .$z. ' </center></td>';
echo "<td width='50' height='50'><center><a href=colonisation.php?num_pla=$a&territoire=$z>Coloniser</a></center></td>";
echo '<td width="50" height="50"><center> </center></td>';
echo '<td width="50" height="50"><center> </center></td>';
echo '</tr><tr>';

}}

?>

</table><br>

<center><font color="white"><? include('copy.html'); ?></font></center>

</body>
</html>

Je remercie d'avance ceux qui m'aiderons
A voir également:

2 réponses

Bonjour

Tu veux récupérer les doublons, alors pourquoi as-tu mis du code spécialement pour les éliminer ?

Je ne suis pas entré dans le détail, mais il me semble bien que :
if( ! in_array($line[$i+3], $list ) ) 
$list[] = $line[$i+3]; 

c'est justement fait pour éviter de mettre deux fois $line[$i+3] dans la liste
Alors enlève le if et ne garde que le $list[] = $line[$i+3];

Au passage :
au lieu de $list, $list2 et $list3, utilise des noms de variables plus parlants : $listeid, $listenoms, etc...
à quoi sert le $i ici ? Il est à 0. Tes $ligne[$i+1 ou +3 ou +4] devraient ressembler à $ligne['id'], $ligne['nom'] etc
if(in_array($z, $list)); ne sert absolument à rien, puisque tu as déjà fait le test et que de toutes manières tu ne fais rien ( ; est une instruction vide) si la condition est remplie
0
neo2099 Messages postés 164 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 9 avril 2020 12
13 mars 2008 à 11:12
re,

Merci de ton aide, j'ai voulu aller trop vite sans me pencher vraiment dessus comme quoi les aide extérieur serve beaucoup j'avais meme pas fait attention.
Encore merci.
Le $i sert a changer de colonne au niveau de la base c'est vrai que je pourrai utiliser $listeid ou $listenom mais je m'y repere mieux avec des chiffres (bizar non??).
Sur ce une bonne journée et merci encore
0