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

Symfony PHP Discussion :

Fonction qui modifie un champ d'une table [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre habitué Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Points : 136
    Points
    136
    Par défaut Fonction qui modifie un champ d'une table
    Bonjour à tous,
    Je cherche à créer une fonction qui me permet de modifier le champ b_active de la table trajet. En cliquant sur un lien-image, ça m'appelle la fonction qui se charge de modifier ce champ et de rediriger sur la même page.
    J'ai 2 questions :
    1) Comment fait-on le lien pour appeler la fonction qui se trouve dans le action.class.php ?

    2) Comment puis-je manipuler les bases de données ? J'en ai utilisé qu'une fois pour lire des informations, mais pas pour modifier...

    Merci d'avance pour vos réponses !

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu fais un lien en XHTML et tu utilises le helper url_for pour créer le lien mode symfony.

    donc dans le route.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    modify_my_field:
      url: /modifiy/:Id
      param:
        module: MyModule
        action:   MyAction
    et dans le XHTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="<?php echo url_for('@modify_my_field?Id=' . $field->getId()) ?>"><imf src="coucou.png" /></a>
    Il y a sans doutes quelques noms à changer...

    Dans l'action,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function executeMyAction (sfWebRequest $request)
    {
      $q = Mytable::RetriveById($request->getParam('Id'));
      $q->setMyField(LA DONNEE MODIFIEE)->save();
    }
    Je n'ai pas de symfony sous la main là, c'est du code de tête non vérifié non garanti...

    Mais dans l'idée, on est dans cette direction.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Membre habitué Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Points : 136
    Points
    136
    Par défaut
    Merci pour ta réponse !
    Concernant le lien, j'ai juste fait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo url_for('MonModule/Monaction'); ?>">Mon lien</a>"
    L'action se charge de rediriger l'utilisateur.

    Par contre, pour la modification, j'ai tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q = Trajet::RetriveById($request->getParam('Id'));
    Trajet étant ma table, mais j'ai une erreur call to undefinedmethod Trajet::RetriveById()...

  4. #4
    Membre habitué Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Points : 136
    Points
    136
    Par défaut
    Sinon j'ai tenté autre chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $trajet = Doctrine::getTable("Trajet");  	
    	$trajet->setBActive(0);
      	$q->save();
    Mais j'ai une erreur :

    Unknown method TrajetTable::setBActive
    Merci d'avance pour les réponses.

  5. #5
    Membre habitué Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Points : 136
    Points
    136
    Par défaut
    C'est bon, j'ai fini par trouver !
    Du coup, mon lien ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo url_for('compte/ActiverTrajet?idtrajet='.$trajet->getIdtrajet()); ?>">Mon lien</a>
    Et mon action ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function executeActiverTrajet (sfWebRequest $request){
    	Doctrine_Query::create()
    	  ->update('Trajet t')
    	  ->set('t.b_active', '?', 1)
    	  ->where('t.idtrajet = ?', $request->getParameter('idtrajet'))
    	  ->execute();
     
      	$this->getUser()->setFlash('notice', 'Le trajet a bien été activé.');
      	$this->redirect('@sf_guard_account');
      }
    Merci mimi68 pour ta réponse, et merci moi !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/08/2006, 11h51
  2. Modifier des champs d'une table a partir du VB
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/07/2006, 14h58
  3. Réponses: 12
    Dernier message: 19/06/2006, 16h26
  4. Comment modifier un champ dans une table liée ?
    Par HookerSeven dans le forum Access
    Réponses: 11
    Dernier message: 05/02/2006, 23h50
  5. modifier les champs d'une table
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/10/2005, 15h22

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