Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012

    ordinamento array su statistica di ricerca

    ciao a tutti!!! ho bisogno di una mano per questo problema:

    sto creando un motore di ricerca per un sito, che ha il compito di cercare determinate parole all' interno del mio db (un flat file dove ogni riga è un record e i dati sono separati da | ). Lo scopo del motore è quello di visualizzare non solo gli articoli, ma di ordinarli anche in modo tale che il primo o i primi visualizzati siano anche quelli con maggior coincidenza di dati.
    Mi spiego meglio:

    record nel db:

    213123213|immobili|capannone|700|libero|cremona
    745675456|immobili|capannone|900|libero|cremona
    046735535|immobili|capannone|300|occupato|cremona
    900278366|immobili|capannone|500|libero|bari

    se l' utente nei campo di ricerca inserisce come valori di ricerca

    capannone
    900
    libero

    il primo articolo che visualizzerà sarà con codice 745675456 , il secondo 213123213, il terzo 046735535 e il quarto 900278366.

    io sto procedendo con questo metodo:

    Codice PHP:
    $dati_ricerca=array();// arreizzo i dati di ricerca
    $colonna=array();
    $result=array();
    $codici=find(0,"data",NULL); //find.. una mia funzione che mi permette di ottenere in un array tutti dati di una determinata colonna in base alla posizione del dato
    foreach($name_fields as $key=>$dato)
    {
    $dati_ricerca[]=$_POST[$key];
    $colonna[$key]=find (($key+2),"data",NULL);//parto da 2 per evitare controlli su codice e gruppo, quindi solo i dati
    foreach ($colonna[$key] as $subkey=>$valore)
    {
    $result[$key]=array();
    if (
    $dati_ricerca[$key]==$valore)
    $result[$key][]=$codici[$subkey];//inserisce il codice articolo se riscronta l'eguaglianza
    // i risultati sono: $result[0]-(per il tipo di dato)-[0]-(per il codice)-
    }

    in pratica mi ritrovo un array multidimensionale $result[0][0] dove la prima chiave è un numero che viene riutilizzato per accedere all' array $dati di ricerca, e la seconda chiave è ad incremento automatico con valore = codice articolo.

    come posso ordinarli in base alla mia esigenza???


    rompicapo
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    up!!!
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    mi sembra di capire che sia difficile anche per voi....
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ok risolto

    Codice PHP:

    $ordine
    =array();
    foreach(
    $codici as $code)
      {
      
    $ordine[$code]=0;
      foreach (
    $result as $col)
        {
        foreach (
    $col as $dato)
          {
          if (
    $code==$dato)
            
    $ordine[$code]++;
          } 
        }
      }

    $elenco_codici=array();
    foreach (
    $ordine as $cod=>$num)
    $elenco_codici[]=$cod;

    for (
    $a=0;$a<=count($elenco_codici)-1;$a++)
      {
      for (
    $b=0;$b<$a;$b++)
        {
        if (
    $ordine[$elenco_codici[$a]]==$ordine[$elenco_codici[$b]])
          {
          if(
    strstr($ordine[$elenco_codici[$a]],"."))
            {
            
    $mod_indice=explode(".",$ordine[$elenco_codici[$a]]);
            
    $mod_indice[1]++;
            
    $ordine[$elenco_codici[$a]]=$mod_indice[0].".".$mod_indice[1];
            }
          else
            {
            
    $ordine[$elenco_codici[$a]].=".1";
            }
          }
        }
      }
    $ordine=array_flip($ordine);
    krsort($ordine);
    foreach (
    $ordine as $key_ord=>$valore)
    {echo 
    "kiave $key_ord e valore $valore
    "
    ;} 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.