フォルム:Array récalcitrant

Array récalcitrant - PHP

Mon array ne m'affiche pas la première image, et en plus il me mélange l'ordre des 4/5 premières images...

Claymeniaによって、 2009年7月14日(火曜日) 01:34:51
認可HTML - スマイリー - タグ - マルチポスト
Claymeniaによって、 2009年7月14日(火曜日) 01:34:51
アバター
メンバー
Ahhhhh...

Array & Clay

Bonsoir mina,

Désolé de ne pas venir plus souvent ces derniers temps, je ne vous oublie pas mais je susi su-over-mega-hyper-trucidemment-bouqué...

Juste une question rapide à Zef et à toute autre personne s'y connaissant :

J'ai un array pour la création d'une "galerie" mais celui-ci tronque systématiquement l'image 1, et me mélange les 4/5 suivantes dans un ordre aléatoire (style : 2 - 5 - 4 - 3 - 6)...

Voici mon code, quelqu'un aurait-il une idée ?

コード:

<?php // on dclare un tableau qui contiendra le nom des fichiers de nos miniatures
    $tableau = array();
    $mini = $path_mini;
    // on ouvre notre dossier contenant les miniatures
    $dossier = opendir($mini);
    while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'archives.php') {
      // on stocke le nom des fichiers des miniatures dans un tableau
      $tableau[] = $fichier;
    }
    }
    closedir ($dossier);

    // on dfini le nombre de colonne sur lesquelles vont s'afficher nos miniatures
    $nbcol=12;
    // on compte le nombre de miniatures
    $nbpics = count($tableau);

    // si on a au moins une miniature, on les affiche toutes
    if ($nbpics != 0) {
    echo '<table class="galerie">';
    for ($i=000; $i<$nbpics; $i++){
        if($i%$nbcol==0) echo '<tr>';
        // pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille relle
        else echo '<td class="cellule_archives"><a href="' , $path_large , '' , $tableau[$i] , '" class="highslide" onclick="return hs.expand(this)"><img src="' , $path_mini , '' , $tableau[$i] , '" alt="" title="Cliquer pour agrandir" /></a></td>';
        if($i%$nbcol==($nbcol-1)) echo '</tr>';
        }
        if($i%$nbcol==($nbcol != 0)) echo '</tr></table>';
        else echo '</table>';
        }
        // si on a aucune miniature, on affiche un petit message :)
        else echo 'Aucune image à afficher';
?>

Il est chargé comme suit :

コード:

if  ($_GET['rubrique']=='hiver_08') {
     if  ($_GET['type']=='info'){
     include ("hiver_08.php");
    }

    elseif  ($_GET['type']=='photo') {
    $path_mini =  './archives/hiver_08/thumbs/';
    $path_large =  './archives/hiver_08/large/';
    include ("galerie.php");
    }
    elseif  ($_GET['type']=='video') {
?>
niet
<?php
    }
}

Merci par avance !!! Et promis je vais essayer de revenir rapidement... et avec des cadeaux pour me faire pardonner !!!


Zéflingによって、 2009年7月14日(火曜日) 07:45:18
アバター
ウェブマスター

T'as essayé de demander un trie sur le tableau ?

コード:

usort($tableau, "cmp");

Je te revoie vers la doc pour la fonction de comparaison qui va avec : usort

La plus grande consolation de la médiocrité, c'est que le génie n'est pas immortel.
Claymeniaによって、 2009年7月14日(火曜日) 13:42:52
アバター
メンバー

Thx cher Zefling, toutefois j'arrive à afficher la première image mais les autres sont complètement désorganisées... style : 001, 002, 087, 003, 047...

Voici le code :

コード:

<?php // on dclare un tableau qui contiendra le nom des fichiers de nos miniatures
    function cmp($tableau)
{
    if ($tableau == 0) {
        return 0;
    }
    return ($tableau < 0) ? -1 : 1;
}

    $tableau = array();
    $mini = $path_mini;
    // on ouvre notre dossier contenant les miniatures
    $dossier = opendir($mini);
    while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'archives.php') {
      // on stocke le nom des fichiers des miniatures dans un tableau
      $tableau[] = $fichier;
    }
    }
    closedir ($dossier);

    // on dfini le nombre de colonne sur lesquelles vont s'afficher nos miniatures
    $nbcol=12;
    // on compte le nombre de miniatures
    $nbpics = count($tableau);
    usort($tableau, "cmp");

Aurais-je fait une couillonade quelque part ?


Zéflingによって、 2009年7月14日(火曜日) 13:55:13
アバター
ウェブマスター
コード:

function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1:1;
}

Et si tu utilises celle là ?


働いたら負け。
Claymeniaによって、 2009年7月14日(火曜日) 14:00:13
アバター
メンバー

ça repars comme avant : pas de première image... mais tout dans l'ordre !

Zéflingによって、 2009年7月14日(火曜日) 14:43:20
アバター
ウェブマスター

Tu te sers de print_r ?

Si personne ne s'en souvient, ça n'est jamais arrivé. La mémoire humaine n'est qu'une donnée. On peut la réécrire. (Lain)
Claymeniaによって、 2009年7月17日(金曜日) 13:24:55
アバター
メンバー

Re dsl j'ai eu un problème de ligne adsl (plus de net depuis mon dernier post -_-). Bah là now j'ai un soucis. Pour remédier au problème, j'ai inclu dans le dossier une image noir en 000.jpg. 9a marchait j'avais la première image mais je me suis aperçu qu'à chaque fin de ligne ( </tr> ) quand je passe sur la ligne suivante il me manque une photo. Pour l'exemple : 23 - 24 - 25 </tr><tr> 27 - 28 - 29 ... et ce sur chaque ligne. Là perso ça me dépasse totalement. Merci de votre aide (pas que celle de Zef :p)

Claymeniaによって、 2009年7月19日(日曜日) 01:40:24
アバター
メンバー

Bon en implantant le code directement dans la page ça marche sans soucis...

Zéflingによって、 2009年7月21日(火曜日) 15:42:30
アバター
ウェブマスター
hè hè :P

Désolé, j'ai pas le net le week-end et hier j'ai complètement oublié de passé.

Sinon je vois pas trop le rapport avec le sujet. ;) Enfin si ça fonctionne tant mieux.

Compared to French grammar, nothing is hard. (Rasmus Lerdorf)