Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Motore di ricerca

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    142

    Motore di ricerca

    premetto che con il mySQL ci ho lavorato pochissimo fin'ora...
    sto seguendo questa guida:
    http://php.html.it/articoli/leggi/89...php-e-mysql/2/

    ma ci sono delle cose che nn capisco...

    - le tabelle di tipo MyISAM quali sono?
    ho fatto le mie tabelle MyISAM, ma dato che mi piace imparare, vorrei saperne di più

    - la modifica alle tabelle con il comando "ALTER TABLE ... ADD FULLTEXT(...)"
    mi comporta qualcosa? o no? la taella dovrebbe continuare a funz come sempre vero?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    142
    ok gente io mi sono un pò perso in quella guida...

    ho creato tutte le classi necessarie cercando di modificarle in base alle mie esigenze:

    ora ho un problema... cosa devo richiamare e come creo il form php???


    Codice PHP:
    <?php
    class Search {
      var 
    $results = array(),
        
    $getcommentsnumber false;
      
      function 
    DoSearch($qstr$db){
        
    $str $qstr->ToString();
        
    $result $db->ExecuteQuery(sprintf("
        SELECT *,
        MATCH(nome, categoria, descrizione, geo) AGAINST('%s' IN BOOLEAN MODE) as score
        FROM    articoli, riviste
        WHERE  buzz_user AND MATCH(nome, categoria, descrizione, geo) AGAINST('%s' IN BOOLEAN MODE)
        ORDER BY  score DESC"
    ,
        
    $str$str));
        
    $data $db->FetchResult($result);
        foreach(
    $data as $article){
          
    $res = new Result($data['aid'], $data['magazine'], $data['date'], $data['title'], $data['author'], $data['score']);
          if(
    $this->getcommentsnumber){
            
    $res->GetCommentsNumber(&$db);
          }
          
    $this->results[] = $res;
        }
      }
      
      function 
    GetResults(){
        return 
    $this->results;
      }

    }

    // classe database
    class Database {
        var 
    $conn NULL;
        
        function 
    Database (){
            
    $conn=&JFactory::getDBO();
        }
        function 
    ExecuteQuery($query){
            return 
    mysql_query($query$this->conn)
              or die(
    "ERRORE MYSQL: ".mysql_error());
        }
      
        function 
    FetchResult($result){
            
    $data = array();
            while(
    $tmp mysql_fetch_assoc($result))
            
    $data[] = $tmp;
            return 
    $data;
        }
      
        function 
    Close(){
            
    mysql_close($this->conn);
        }
    }

    // classe result
    class Result {
      
      var 
    $userid "";
      var 
    $nome "";
      var 
    $logo "";
      var 
    $categoria "";
      var 
    $descrizione "";
      var 
    $località "";
      var 
    $web "";
      var 
    $email "";
      var 
    $telefono "";
      
      var 
    $articlepagepath "articolo.php";
      
      function 
    Result($r_userid$r_nome$r_logo$r_categoria$r_descrizione$r_geo$r_web$r_email$r_telefono){
          
    $userid $r_userid;
          
    $nome $r_nome;
          
    $logo $r_logo;
          
    $categoria $r_categoria;
          
    $descrizione $r_descrizione;
        
          
    $geo $r_geo;
        
    $geoexplode (':'$r_geo);
        
    $geo_citta=$geo[0];
        
    $geo_provincia=$geo[1];
        
    $geo_regione=$geo[2];
        
    $localita=$geo_citta.', ('.$geo_provincia.'), '.$geo_regione;
        
          
    $web $r_web;
         
    $email $r_email;
          
    $telefono $r_telefono;
      }
      
      function 
    Display(){
          
          
    $report='<div class="azienda">
      [img]'
    .$this->logo.'[/img]
      <spam class="nome">[url="'
    .JURI::base().'index.php?option=com_buzz&view=pagina&userid='.$this->userid.'"]'.$this->nome.'[/url]</spam>

      <spam class="categoria">'
    .$this->categoria.'</spam>

      <spam class="descrizione">'
    .$this->descrizione.'</spam>

      <spam class="localita">'
    .$this->localita.'</spam>

      <spam class="web">'
    .$this->web.'</spam>

      <spam class="email">'
    .$this->email.'</spam>

      <spam class="telefono">'
    .$this->telefono.'</spam>

      </div>'
    ;
           
        return 
    $report;
      }

    }    

    // classe query string
    class QueryString {
      
      var 
    $string "";
      var 
    $all = array();
      var 
    $any = array();
      var 
    $none = array();
      var 
    $bad = array();
      var 
    $passed = array();
      
      function 
    QueryString(){
        
    $nargs func_num_args();
        if(
    $nargs 0){
          
    $arg func_get_arg(0);
          
    $this->string $this->CleanString($arg);
        }
      }
      
      function 
    CleanString($str){
        
    $str addslashes($str);
      }
      
      function 
    CleanWord($word){
        if(
    preg_match("[a-zA-Z0-9_"$word)){
          return 
    $word;
        }else{
          
    $this->passed[] = $word;
          return 
    NULL;
        }
      }
      
      function 
    AddBadWord($word){
        
    $word $this->CleanWord($word);
        if(!
    is_null($word)) $this->bad[] = $word;
      }
      
      function 
    AddBadWords($words){
        if(!
    is_array($words)){
          
    $words explode(" "$words);
        }
        foreach(
    $words as $word){
          
    $this->AddBadWord($word);
        }
      }
      
      function 
    AddAnyWord($word){
        
    $word $this->CleanWord($word);
        if(!
    is_null($word)) $this->any[] = $word;
      }
      
      function 
    AddAnyWords($words){
        if(!
    is_array($words)){
          
    $words explode(" "$words);
        }
        foreach(
    $words as $word){
          
    $this->AddAnyWord($word);
        }
      }
      
      function 
    AddAllWord($word){
        
    $word $this->CleanWord($word);
        if(!
    is_null($word)) $this->all[] = $word;
      }
      
      function 
    AddAllWords($words){
        if(!
    is_array($words)){
          
    $words explode(" "$words);
        }
        foreach(
    $words as $word){
          
    $this->AddAllWord($word);
        }
      }
      
      function 
    AddNoneWord($word){
        
    $word $this->CleanWord($word);
        if(!
    is_null($word)) $this->none[] = $word;
      }
      
      function 
    AddNoneWords($words){
        if(!
    is_array($words)){
          
    $words explode(" "$words);
        }
        foreach(
    $words as $word){
          
    $this->AddNoneWord($word);
        }
      }
      
      function 
    ToString(){
        return (
    $this->string != "") ? $this->string $this->BuildString();
      }
      
      function 
    BuilString(){
        
    $values = array(
          
    "+" => &$this->all,
          
    "-" => &$this->none,
          
    " " => &$this->any,
          
    "~" => &$this->bad);
        
    $tmp = array();
        foreach(
    $values as $operator => $words)
          if(
    count($words) > 0)
            
    $tmp[] = $operator."(".implode(" "$words).")";
        return 
    implode(" "$tmp);
      }
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    142
    ok allora io mi ci sono impazzito... ed ho risolto in un modo molto più semplice, certo meno potente, ma almeno funziona..

    allora questa è la mia query:
    Codice PHP:
    $query="SELECT *, MATCH (`nome`, `categoria`, `descrizione`, `geo`) AGAINST ('".$key."' IN BOOLEAN MODE) as score FROM `#__buzz_user` ORDER BY score DESC"
    e questo è il mio php
    Codice PHP:
    if (count($user_array)){
        foreach (
    $user_array as $ua ){
            if (
    $ua->score 0){

                      echo 
    $ua->nome ECC... CON TUTTO QLL CHE MI PARE

            
    }
        }
     } 
    funzionalità:
    - input unico (un solo campo di testo, ma infiniteparole)
    - ricerca boolean mode su più voci nella medesima tabella
    - ordinamento dei report basato su un punteggio relativo alle parole da cercare

    lo scrivo per i posteri ;P ciao...

  5. #5
    Codice PHP:
     $report='<div class="azienda">
      [img]'
    .$this->logo.'[/img]
      <spam class="nome">[url="'
    .JURI::base().'index.php?option=com_buzz&view=pagina&userid='.$this->userid.'"]'.$this->nome.'[/url]</spam>

      <spam class="categoria">'
    .$this->categoria.'</spam>

      <spam class="descrizione">'
    .$this->descrizione.'</spam>

      <spam class="localita">'
    .$this->localita.'</spam>

      <spam class="web">'
    .$this->web.'</spam>

      <spam class="email">'
    .$this->email.'</spam>

      <spam class="telefono">'
    .$this->telefono.'</spam>

      </div>'

    Esiste un tag <spam> in XHTML/HTML?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Già
    Dovrebbe essere span...

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    142
    si si mi ero accorto ma non era qll l'errore

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.