Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2008, 11h14   #1
Invité de passage
 
Inscription : mai 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 4
Points : 2
Points : 2
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 :
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 :
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.
rockybalboa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2008, 18h01   #2
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Salut,

dans executeRecherche, récupère le contenu de la requête par un :
Code :
$nom_commercial = $this->getRequestParameter('nom');
puis tu l'ajoutes comme critère dans $c
Code :
$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).
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2008, 18h23   #3
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
Hum,

en relisant ton action, je m'aperçois qu'il ne fonctionne pas.
En faisant :
Code :
$nom = EntreprisePeer::doSelect($c);
tu crées des objets correspondant à toutes les entreprises, sans exception. Du coup,
Code :
$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 :
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 :
1
2
3
4
5
 
<?php foreach($entreprises as $entreprise): ?>
   //affichage des noms
<?php   echo($entreprise->getNomCommercial(); ?>
<?php endforeach; ?>
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2008, 18h15   #4
Invité de passage
 
Inscription : mai 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 4
Points : 2
Points : 2
Merci pour ton aide Tsilefy, grâce à toi j'ai réussi à faire mon formulaire de recherche.
rockybalboa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2008, 22h05   #5
Membre éclairé
 
Inscription : mai 2008
Messages : 359
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 359
Points : 397
Points : 397
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.
Tsilefy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h01.


 
 
 
 
Partenaires

Hébergement Web