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

ASP.NET Discussion :

Meilleur methode d'affichage pour un moteur de recherche


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut Meilleur methode d'affichage pour un moteur de recherche
    Bonjour a tous,

    je suis en train de coder un annuaire qui marche un peu comme Google :

    une barre de recherche (enfin, j'en ai 4 moi) puis, apres le clic, l'affichage des resultats.

    Un clic sur un des resultats amene a la page detaille de ce resultat.

    Rien de complique en fait.

    Quelle est le meilleur moyen (le + rapide et le plus simple) de gerer ca :

    1. Datalist (ou Repeater)
    2. Un SqlReader
      Ex :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
       
      SqlDataReader myReader = myCommand.ExecuteReader();
      while (myReader.Read()){
                  name.text = myReader["categorySecondName"].ToString();
                  id.text = myReader["categorySecondID"].ToString();            
              }
      }
      en code behind et des <asp:Literal> ou <asp:Label> sur l'aspx pour afficher le resultat dans une autre boucle.
      ou
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
       
                  String aff=null;
      SqlDataReader myReader = myCommand.ExecuteReader();
      while (myReader.Read()){
                  String name = myReader["categorySecondName"].ToString();
                  String id = myReader["categorySecondID"].ToString();            
       
                  aff += "<div>"
                  aff += "<h1>"+name+"</h1>";
                  aff += "<p>" + id + "</p>";
                  aff += "</div>"
              }
      monLiteral.text = aff; // affiche sur la page
      }
    3. autre ?


    Et pour les requetes SQL, procedures Stockees ou non ?
    Je sais pas enciore les utilisees, mais ca peut etre interessant je pense.

    Merci a vous !

  2. #2
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Fait la 1, surtout pas la 2.

    Sinon oui, une procédure stocké c'est plus propre, sécurisé et un chouïa plus rapide.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    ok, je reste donc sur mon Repeater.

    Par contre pour les Stored Procedures, je ne sais pas comment faire exactement :

    Pour l'instant j'envoie ma requete au Repeater de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String sqlSearch = "SELECT * FROM [companyTable] WHERE (([nameEn] LIKE '%' + @nameEn + '%')";
    if (rCat2 != 0) sqlSearch += " AND ([categorySecond] = @categorySecond)";
    sqlSearch += " )ORDER BY [categorySecond], [nameEn]";
    SqlDataSource1.SelectCommand = sqlSearch;
    C'est cette ligne : SqlDataSource1.SelectCommand = sqlSearch;
    qui execute le Repeater.

    Si je passe par une Stored Procedure, comment je recupere et lui envoie le resultat, car la ce n'est plus une requete SQL que je devrai lui renvoyer, mais un resultat renvoye par la procedure stockee ?

  4. #4
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Bein tu lis la doc MSDN, ou tu cherches un peu parmis les centaines d'exemples sur google, et si t'as un pb ou une question précise, tu reviens la poser ici

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Mose
    Bein tu lis la doc MSDN, ou tu cherches un peu parmis les centaines d'exemples sur google, et si t'as un pb ou une question précise, tu reviens la poser ici
    oui oui, en plus je crois qu'il suffit de donner le nom de la Procedure Stockee et de preciser au Repeater le type de requete.

    Par contre c'est dommage que 80% du code sur le net pour ll'asp soit en VB et pas en C#...

  6. #6
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Rajoute 'C#' dans ta recherche google

    C'est ptet vrai si tu ne recherche que des articles en français. Maintenant si tu rajoute l'anglais, crois moi y'a de la matière. J'ai très rarement été en galère pour trouver un sample en C#.

    Et pour un truc aussi classique que les procédures stockées, franchement si tu trouves pas t'es d'une mauvaise foi incroyable

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    ok c'est nikel
    Je passe par une procedure stockee ::

    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
     
    ALTER Procedure dbo.test
     
    @keyword char(50),
    @category char(5)
     
    AS
     
    Declare @strSQL varchar(300)
    Declare @reste varchar(200)
    SET @reste = ''
     
    IF (@category != 0) 
    	SET @reste = ' AND (categorySecond = '+@category+')';
     
     
    SELECT @strSQL = 'SELECT     *
    FROM         companyTable
     
    WHERE     (((nameEn LIKE ''%' + ltrim(rtrim(@keyword))+'%'' ) ) '+@reste+')'
     
     
     
    exec(@strSQL)
     
    return @@Rowcount
    Elle fonctionne bien (par contre je sais pas si elle est optimale...)
    Je voudrais recuperer le nombre de resultats, j'ai donc rajoute :: return @@Rowcount

    Par contre, les resultats etant affiches automatiquement dans mon repeater ::
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <asp:Repeater ID="datalist" runat="server" DataSourceID="SqlDataSource1">
                <ItemTemplate>
                    <p>
                        <span class="right">Tel.
                            <%# Eval("telnum") %>
                        </span><strong><a onclick="tu" href="Product.aspx?id=<%# getID(Eval("companyID")) %>">
    // ...
    je ne sais pas recuperer la valeur du return (nombre de resultats) pour traiter cette valeure dans le code behind.
    Quand je passe par le code behind avec : datalist.Items.count pour avoir le nombre de resultats, la valeur est recuperee "en retard".
    L'affichage se fait avant sa mise a jour...

    Auriez vous des conseils la dessus ?

  8. #8
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par djedie
    Auriez vous des conseils la dessus ?
    Oui, évite d'utiliser les SqlDataSource si tu veux faire du code behind.

Discussions similaires

  1. Stratégie pour un moteur de recherche évolué
    Par berceker united dans le forum Langage SQL
    Réponses: 6
    Dernier message: 05/01/2008, 13h42
  2. [MySQL] Base de données : stratégie à adopter pour un moteur de recherche
    Par yohan0262 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 04/06/2007, 12h35
  3. selection date ou VIDE pour un moteur de recherche
    Par popofpopof dans le forum VBA Access
    Réponses: 4
    Dernier message: 16/05/2007, 08h29
  4. [SQL] Aide pour un moteur de recherche
    Par Death83 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 26/10/2005, 15h12
  5. comment faire ma base de donnée pour un moteur de recherche
    Par HoB dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/05/2004, 16h07

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