Créer plusieurs partie d'un tableau

Skunkpro Messages postés 10 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 23 septembre 2008 - 10 sept. 2008 à 17:45
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 - 19 sept. 2008 à 17:49

6 réponses

Skunkpro Messages postés 10 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 23 septembre 2008
10 sept. 2008 à 17:48
Bonjour,

voilà, j'ai un soucis qui me dépasse partiellement :D
Je voudrais afficher une liste de noms de maps de jeu d'un serveur.
Actuellement, j'ai réussi à l'afficher en totalité.
Facile ! :P
Maintenant, les choses compliquées pour moi commencent.
Je voudrais en afficher qu'une partie (les 12 premiers).
Quand j'aurais réussi à faire ça, je voudrais pouvoir accéder à la partie suivante.
Et quand j'aurais réussi à faire ça, je voudrais pouvoir accéder à la précédente.
Et, et quand j'aurai réussi à faire ça, je voudrais pouvoir accéder à une partie précise.

Mon tableau s'affiche avec cette fonction :

$result = count ($ChallengeList);
echo $result;

foreach ($ChallengeList as $challenge) {
$FileName = $cp->toHTML($challenge['Name']);

echo '


<tr>
<td>'.$FileName.'</td>

</tr>


';
}

Voilà, je suis un peu perdu...
Je voudrais comprendre en plusieurs parties, juste pour bien saisir le truc :)
Voici la liste, si ça peut vous aider à comprendre où j'en suis.

PS : désolé du doublon, je vois pas mon message, je réessaie...
0
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 2
15 sept. 2008 à 11:15
Salut,

Et si au lieu de faire un foreach, tu faisais simplement un for?

Genre : for($i = $debut ; $i<$fin ; $i++){}

Avec $debut = premier élément à regarder par exemple 0
$fin = dernière élément par exemple 12

A++ extraman1
0
Skunkpro Messages postés 10 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 23 septembre 2008
18 sept. 2008 à 15:20
Merci de ta réponse.
J'ai aussi conclu que c'était la solution à adopter, mais je n'arrive pas à créer cette fonction avec for.
D'après ma logique, puisque je n'ai pas encore les connaissances, je crois avoir compris que le schéma serait :
Pour tous les éléments du tableau de la "colonne" "name", afficher le contenu.

Alors qu'avec la boucle "for", je n'arrive pas à trouver le schéma...
Je ne sais pas dire "afficher les douze premières lignes de la colonne "name""
Parce qu'en fin de compte, ça m'affiche la première ligne douze fois.
0
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 2
19 sept. 2008 à 10:46
Salut,

Si ton tableau est en forme de matrice $ChallengeList[][]

Alors ça donne :
for($i=$debut; $i<fin; $++){
         echo $ChallengeList[$i]['Name'];
}

Après, s'il n'est pas sous cette forme, il me faudra plus d'indications

A++ extraman1
0

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

Posez votre question
Skunkpro Messages postés 10 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 23 septembre 2008
19 sept. 2008 à 12:32
Salut,
alors, j'ai essayé sans succès le code que tu m'as donné.
Lorsque tu appelles la fonction GetChallengeList, ça retourne la liste courante des maps du serveur. Cette méthode prend deux paramètres. Le premier précise le nombre d'informations retournées et le deuxième où doit-il commencer dans la liste. La liste est un array de structures. Chaque structure contient les noms de champs suivant : Name, UId, FileName, Environnement, Author, GoldTime et CopperPrice.
Donc, moi pour afficher toutes les maps je fais comme ça :

<?php
require "includes/monitoring.php";
$id = 0;
$key = $id;

require_once('includes/tmfcolorparser.inc.php');
$cp= new TMFColorParser();

if(!$client->InitWithIp($server[$key]['ip'],$server[$key]['port'])){
die('An error occurred - '.$client->getErrorCode().":".$client->getErrorMessage());
}

$client->query("Authenticate", $server[$key]['username'], $server[$key]['password']);
$response = $client->getResponse();
if(isset($response['faultCode']) && isset($response['faultString'])){
die("[".$response['faultCode']."]".$response['faultString']);
}
$client->query("GetStatus");
$response = $client->getResponse();
if(isset($response['faultCode']) && isset($response['faultString'])){
die("[".$response['faultCode']."]".$response['faultString']);
}
$client->query('GetChallengeList',200, 0);
if (!$Response = $client->getResponse()){
}else{
foreach ($Response as $track){
$FileName = $cp->toHTML($track['Name']);
echo '
<td>'.$FileName.'</td>
';
}
}
?>

Et ça affiche ça :
http://91.121.146.195/~serveur/serveurs/pagebyzizi/ajax/v3/testtrack/tracklist0.php
0
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 2
19 sept. 2008 à 17:49
Salut,

Ok le mieux c'est que tu fasses ça :

$laListe = array();
foreach($Response as $track){
    $FileName = $cp->toHTML($track['Name']);
    $laListe[] = $FileName;
}

Et après tu as accès facilement quand tu veux de cette façon :
for($i=$debut; $i<$fin ; $i++){
          echo '
<td>'.$laListe.'</td>
';

}

------------------------
------------------------
Et si tu veux éviter de reparcourir la liste à chaque page tu peux faire ça :

    if(!isset($_SESSION['laListe'])){
            foreach($Response as $track){

            $FileName = $cp->toHTML($track['Name']);

            $_SESSION['laListe'][] = $FileName;
   
}

Et après quelque soit la page, tu fais :
for($i=$debut; $i<$fin ; $i++){

          echo '
<td>'.$_SESSION['laListe'][$i].'</td>
';


}

Voilà A++ extraman1
0
Rejoignez-nous