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 :

Conserver les valeurs d'un tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 72
    Points : 41
    Points
    41
    Par défaut Conserver les valeurs d'un tableau
    Bonjour à tous,

    je suis en train de développer un site en PHP (avec cakePHP pour être précis) et j'ai un soucis avec un tableau.
    Dans mon application, un sportif peut d'entrainer en regardant des vidéos et répondant à des questions sur ces vidéos. Les vidéos sont passées par série de 5.
    Dans ma vue j'ai un formulaire qui me passe les réponses à chaque question. Je récupère ces valeurs dans mon contrôleur qui est appelé à chaque validation du formulaire.

    Mon problème est que je veux rassembler les réponses dans un tableau pour chaque série de 5 vidéos. Pour l'instant, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $temp = strtoupper($this->data['Type of shot']).','.strtoupper(substr($this->data['clicked_area'],46));
    $test[] = $temp;
    Ca ne marche pas car le tableau est ré-initialisé à chaque appel de la fonction. Comment puis faire pour que les réponses précédentes restent dans le tableau?

    Merci d'avance de votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Tu dois déclarer global le tableau dans la fonction.
    Tu peux nous montrer un peu plus de code (la fonction aussi)?

    A+.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 72
    Points : 41
    Points
    41
    Par défaut
    Voici ma fonction:

    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
     
    function athlete_answer($id = null) {
    		if($id){
    			$this->Video->id = $id;
    			$this->set('data', $this->Video->read());
    			if(!empty($this->data)) {
    				$temp = strtoupper($this->data['Type of shot']).','.strtoupper(substr($this->data['clicked_area'],46));
    				debug($temp);
    				global $test;
    				$test[] = $temp;
    				debug($test);
    				$this->Answer->save($test);
    			}
    		}
    	}
    J'ai déclaré le tableau global mais ca n'a pas l'air de fonctionner.

    Et voici aussi mon formulaire si ca peut servir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    echo $this->Form->create(false, array('action' => $redirect));
    echo $this->Form->input('Type of shot', array(
          'options'   => array('smash shot', 'drop shot', 'clear shot','block shot','drive shot','push shot','net shot'),));
    echo $html->image('courtparts.JPG', array('width' => '633', 'height' => '501', 'usemap' => '#court'));
    echo $this->Form->hidden('clicked_area');
    echo $this->Form->end('Confirm answer');
    ?>
    Le champ hidden récupère le nom d'une zone d'une image map.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    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
    $test[] = array();
    function athlete_answer($id = null) {
            if($id){
                $this->Video->id = $id;
                $this->set('data', $this->Video->read());
                if(!empty($this->data)) {
                    $temp = strtoupper($this->data['Type of shot']).','.strtoupper(substr($this->data['clicked_area'],46));
                    debug($temp);
                    global $test[];
                    $test[] = $temp;
                    debug($test);
                    $this->Answer->save($test);
                }
            }
        }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 72
    Points : 41
    Points
    41
    Par défaut
    Pardon j'avais oublié de l'inclure dans le post car il n'est pas juste au dessus de la fonction mais il est bel et bien la, et ca ne marche pas malgré tout...

  6. #6
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Citation Envoyé par pausg Voir le message
    Ca ne marche pas car le tableau est ré-initialisé à chaque appel de la fonction. Comment puis faire pour que les réponses précédentes restent dans le tableau?
    Je suppose que par 'à chaque appel de la fonction' tu veux dire : à chaque fois que le formulaire est validé ? Si c'est le cas, c'est en session qu'il faut sauvegarder le tableau : soit en renseignant $_SESSION, soit - si tu es sous CakePHP - en utilisant l'objet Session de Cake

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 41
    Points : 134
    Points
    134
    Par défaut
    Ou alors, que ta fonction retourne le tableau.

    Et que le script qui appelle la fonction se charge de merger les différents tableaux.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 72
    Points : 41
    Points
    41
    Par défaut
    Merci à tous j'ai utilisé Session et ça marche sans problème!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 21h18
  2. "inverser" les valeurs d'un tableau
    Par Clad3 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 12/12/2005, 12h13
  3. Réponses: 9
    Dernier message: 05/11/2005, 14h59
  4. comparer les valeurs d'un tableau
    Par nicerico dans le forum ASP
    Réponses: 4
    Dernier message: 19/08/2004, 11h20
  5. Compter les valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 6
    Dernier message: 30/03/2004, 13h29

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