IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Problème avec unset


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Par défaut [Tableaux] Problème avec unset
    Bonjour tout le monde. Je préviens, je ne suis pas un grand du développemnt et je débute en php.

    Voilà mon problème : sur mon site que j'ai développé, j'ai voulu proposé aux visiteurs de faire sa propre paylist d'émissions et musique à écouter.

    jusque la avec des sessions php je suis arrivé à faire un tableau array qui stocke au fur et à mesure les identifiants de chaques émissions.

    Seulement j'aimerais pourvoir effacer, dans un premier temps, les émissions en trop ou que le visiteurs ne veux plus. j'ai vu qu'on pouvais utiliser la fonction unset() puis array_values() pour réinitialiser les indexs.

    le problème c'est le comportement et le résultat qu'il m'affiche parfois.
    parfois il faut que je clique plusieurs fois sur le lien pour qu'il soit efficace mais pire parfois quand je clique sur le lien pour effacer, il me réaffiche les anciennes émissions effacées juste avant.

    voici mes codes :

    la page ou s'affiche les list des émissions sélectionnées (j'ai juste mis les éléments importants) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    . . .
     
    for($i=0;$i<sizeof($_SESSION["caddie"]);$i++) 
     
    { 
     
    echo "<tr>
             <td width='20%'>
             <a href='drop_playlist.php?p=".$i."'> Effacer </a>
             <td>
             </tr>";
    }
     
    . . .
    Puis le fichier drop_playlist.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
    session_start();
     
    $val = $_GET['p'];
     
    unset($_SESSION["caddie"][$val]);
    $_SESSION["caddie"] = array_values($_SESSION["caddie"]);
     
    echo "<script language='javascript'
     type='text/javascript'>
    <!--
    window.location.replace(
     'playlist.php');
    -->
    </script>";
    ?>
    voilà si quelqu'un peut m'expliquer si j'ai fait une erreur quelque part.

    sachant que sur cahque page du site, il y a un include vers ce code qui permet de savoir combien d'émissions on a selectionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <?
    Echo '<center><a href="playlist.php"><img src="img/hdr-playlist.png" border="0" title="Selectionnez toutes les émissions que vous voulez pour vous faire votre propre programmation d\'émissions"></a></center><hr>';
        if ($_GET["action"]=="destroy") 
    {
            // on a demander à tout supprimer
    session_destroy();
    echo "<script language='javascript'
     type='text/javascript'>
    <!--
    window.location.replace(
     '?');
    -->
    </script>";
    }
     
        // Chargement du caddie
        if (isset($_SESSION["caddie"])) {
            $caddie = $_SESSION["caddie"];
        } else {
            $caddie = array();
        }
     
        if (isset($_GET["ajout"])) {
            // On a demandé à ajouter une émission    
            $emi = $_GET["ajout"];
            array_push($caddie, $emi);
            $_SESSION["caddie"] = $caddie;
            echo "<script language='javascript'
             type='text/javascript'>
            <!--
            history.go(-1);
            -->
            </script>";
            }
     
    $result = count($_SESSION["caddie"]);
    if ($result == '0')
    {
    echo "<center>Playlist Vide</center>";
    }
    elseif ($result == '1')
    {
    echo "<center>Vous avez sélectionnez <b>1</b> seule émission.</center>";
    }
    else
    {
    echo "<center>Vous avez sélectionnez : <b>".$result."</b> émissions.</center>";
    }
     
    echo "<hr><center>
          <table width='80%'>
          <tr>
          <td align='center' width='50%'><a href='?action=destroy'><img src='img/corbeille.png' title='vider la playlist' border='0'></a></td>
          <td align='center' width='50%'><a href='playlist.php'><img src='img/voir.gif' border='0' title='Voir la playlist en détails'></a></td>
          </tr>
          </table>" ;
    ?>
    Peut être y'a-t-il un conflict ?
    je ne sais pas.
    si vous avez une idée...
    merci d'avance

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Par défaut
    personne n'a de piste ?

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Là, j'aimerais bien savoir aussi... Je me heurte parfois au même souci, à savoir session_destroy() qui me fait un warning comme quoi il n'y a rien à détruire (alors que le script commence bien par session_start()), du coup je le mets dans un isset($_SESSION) et ça ne produit pas le résultat que j'espère (déjà que isset() dans cette situation ne me plaît guère, alors si en plus ça ne fonctionne pas...).
    Résultat, j'essaie avec unset($_SESSION), ce qui a l'air de supprimer la variable comme je m'y attends mais, si je reviens dans l'historique du navigateur et que j'actualise, hop tout est revenu comme par magie.

    Il y a des moments où ça donne envie de revenir au SID systématiquement dans l'URL...

  4. #4
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Hum…hum !

    J'avais rencontré un souci similaire dans une applic. utilisant xhr et Siddh doit se souvenir du thread concerné puisqu’intervenu sur le sujet.
    Sur une série d’éléments rajoutés ou effaçés, j’avais toujours le « fantôme » des données qui ne devaient plus figurer dans mes résultats.
    Et effectivement unset ne réglait pas le probléme.
    La solution, je l’avais détectée dans mes fichiers temporaires.
    Dans un premier temps, j’effaçais tous mes fichiers temp.
    Ensuite, j’effectuais un traitement quelconque sur mon applic. (insert, update ou delete ), et je revenais dans mes fichiers temporaires pour noter les url utilisées.
    Il suffit ensuite de supprimer à la suite l’une de ces url (dans ses fichiers temporaires)et de revenir sur son application pour vérifier si le « fantôme » est tjrs présent.
    Si c’est ok, c’est le fichier intégré dans l’url qui est concerné et qui doit contenir la destruction.
    Exemple :
    www.mon_site.com/mon_insert.php?etc=$etc…..
    La page principale, notemment celle qui doit accueillir les résultats doit comporter session_start()......et c’est tout.
    Ce qui explique sans doute le warning pour Kirkis
    En revanche, c’est la page mon_insert.php qui doit comporter les 2 événements :
    session_start()……et session_destroy()
    J’avoue que j’avais galéré sur ce probléme et depuis, tout est rentré dans l’ordre.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Juste pour la référence, la solution est donnée ici :
    http://www.developpez.net/forums/vie...604766#2604766
    Si simple...

Discussions similaires

  1. [Tableaux] Problème avec utf8_encode()
    Par RapidJul dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 19h22
  2. [Tableaux] Problème avec array_multisort
    Par ecocentric dans le forum Langage
    Réponses: 5
    Dernier message: 27/09/2005, 15h56
  3. [Tableaux] Problème avec les boucles
    Par speed_man002 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 16h42
  4. [Tableaux] problème avec while
    Par zimotep dans le forum Langage
    Réponses: 3
    Dernier message: 11/09/2005, 11h30
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo