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 :

Interroger une base de données [1.x]


Sujet :

Symfony PHP

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Interroger une base de données
    Bonjour, je découvre symfony, j'essaye de mettre un petit moteur de recherche et j'ai un problème.

    J'ai créé une base de données:
    Table : entreprise avec deux champs id_entreprise et nom_commercial

    Je voudrais créé un moteur de recherche où l'on puisse entrer un nom d'entreprise. Si ce nom est présent dans la base de données on affiche ce nom sinon cela renvoie un message d'erreur.

    J'ai créé un module 'multi':

    Voici mon fichier multi/actions/actions.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class multiActions extends sfActions
    {   
      public function executeRecherche()
      {    
            $c = new Criteria();
    	$c->addAscendingOrderByColumn(EntreprisePeer::NOM_COMMERCIAL);
    	$nom = EntreprisePeer::doSelect($c);
    	$this->nom_entreprise = $nom;	
      } 
    }
    Cela me permet de sélectionner dans ma base le nom des entreprises.

    Et voici ma template templates/rechercheSuccess.php
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php echo form_tag('multi/recherche') ?>
      <h4>
      <div class="form-row" >
        <label for="nom">Nom de l'entreprise&nbsp;</label>
        <?php echo input_tag('nom', htmlspecialchars($sf_params->get('nom'))) ?>&nbsp;    
      </div>    
        <?php echo submit_tag('Rechercher') ?>
    </form>

    Cela permet à l'utilisateur d'entrer un nom d'entreprise. Mais comment faire pour que dès que l'on appuie sur le bouton 'rechercher', on vérifie si le nom entré existe bien dans la base de données ?

    Merci.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Salut,

    dans executeRecherche, récupère le contenu de la requête par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom_commercial = $this->getRequestParameter('nom');
    puis tu l'ajoutes comme critère dans $c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $c->add(EntreprisePeer::NOM_COMMERCIAL, $nom_commercial); (
    et tu lances la requête.
    A moins que j'aie mal compris la question. Et j'ai l'impression que ton action et ta template bouclent (à moins que tu n'aies enlevé du code, bien sûr).

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Hum,

    en relisant ton action, je m'aperçois qu'il ne fonctionne pas.
    En faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom = EntreprisePeer::doSelect($c);
    tu crées des objets correspondant à toutes les entreprises, sans exception. Du coup,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->nom_entreprise = $nom;
    n'a pas de sens : $nom n'est pas un nom, c'est un objet entreprise. Il faudrait que tu fasses :
    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
     
    //récupération du nom posé par le visiteur
    $nom_commercial = $this->getRequestParameter('nom');
     
    $c = new Criteria();
     
    //ajout du nom comme critère de recherche
    $c->add(EntreprisePeer::NOM_COMMERCIAL, $nom_commercial);
    $c->addAscendingOrderByColumn(EntreprisePeer::NOM_COMMERCIAL);
     
    //récupération des objets entreprise portant ce nom
    $entreprises = EntreprisePeer::doSelect($c);
     
    //si aucune entreprise ne correspond
    if(!$entreprises)
    {
     //  page annonçant qu'il n'y a pas de résutats
      }
    else
    {
      $this->entreprises = $entreprises;
      //template listant les résultats
    }
    et dans le template affichant les résutats, tu récupères les noms par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php foreach($entreprises as $entreprise): ?>
       //affichage des noms
    <?php   echo($entreprise->getNomCommercial(); ?>
    <?php endforeach; ?>

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton aide Tsilefy, grâce à toi j'ai réussi à faire mon formulaire de recherche.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Content pour toi :-)
    As-tu essayé le tutorial Askeet ? Bien que le code dans le SVN ne soit pas à jour, il t'apprend des choses intéressantes.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/07/2011, 14h30
  2. interroger une base de données mysql avec Quartz
    Par yousse dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/08/2009, 13h04
  3. interroger une base de donnée a distance
    Par Msysteme dans le forum C#
    Réponses: 42
    Dernier message: 27/05/2009, 13h11
  4. interroger une Base de données?
    Par secondechance dans le forum Bases de données
    Réponses: 9
    Dernier message: 09/04/2009, 10h29
  5. Interroger une base de données blacklist
    Par undercrash dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 29/04/2008, 09h54

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