Visualizzazione risultati 1 fino 6 di 6

Discussione: Recuperare le categorie

  1. #1
    Guest

    Predefinito Recuperare le categorie

    allora, ho un problema abbastanza serio...
    ho una tabella strutturata come segue
    CatId,CatNome,CatDescrizione,CatParent
    e funziona così: Se il campo CatParent è uguale a 0 quella è una categoria Principale, se invece ad esempio contiene l'id di qualche altra categoria prende le sembianza di una sottocategoria.
    Il mio problema è quello di reperire tutte le categorie in questo ordine:
    Categoria Principale -> Sotto Categoria -> Sotto Categoria Della sottocategoria -> ecc...
    solo che non riesco in quanto dovrei strutturare il codice con infiniti cicli per reperirle tutte...

    Qualche ideuzza su come aiutarmi a risolvere questo problema? Tnx...
    Ultima modifica di neoscript : 19-12-2004 alle ore 17.35.56

  2. #2
    L'avatar di madbad
    madbad non è connesso AlterVistiano
    Data registrazione
    25-08-2002
    Messaggi
    842

    Predefinito

    Anke per lo script che sto realizzando io ho dovuto fare una cosa del genere....
    Non è molto facile da spiegare anke se il funzionamento è abbastanza intuitivo
    ammettiamo che questi siano i dati che hai nel mysql
    CatId,CatNome,CatDescrizione,CatParent
    1 -Principale- Descr - 0
    2 -Sub- Descr - 1
    3 -Sub1- Descr - 2
    4 -Sub2- Descr - 3
    Dove CatParent e' l'id della categoria che contiene l'attuale sottocategoria
    In pratica io ho usato un ciclo while dove dato l'id 4 (cioè l'id della categoria che sto prendendo in considerazione) vado alla ricerca del del suo CatParent che memorizzo in una variabile.....finche' CatParent è diverso da zero faccio eseguire il ciclo while dove all'interno del ciclo mi memorizzo in una variabile i dati a me necessari.

    Se ti puo' essere utile ti posto il codice php che sto usando io anke se forse a te non sara' molto comperensibile
    Codice:
    function TD_ottieni_percorso($TD_cat_id){
    	//Ricavo i dati di tutte le cartelle
    	//includo il file config
     	include('config.inc.php');
    	$TD_tablename='cat';
    	$query = "SELECT * FROM $TD_pre$TD_tablename ORDER BY TD_cat_name";
    	$queryresult = TD_connect($query);
    		while ($row = mysql_fetch_array($queryresult))
    			{ 
      				$TD_cat[]=TD_create_var($row,$queryresult,'TD_cat_');
    			}
    	//ottengo gli id dei refer delle cartelle //ottengo la lista degli id al ritroso dalla punta alla base
    	while ($TD_cat_id!=''){
    		foreach($TD_cat as $var_index => $var_value)
    			{
    				if($TD_cat[$var_index][id]==$TD_cat_id)
    				{
    				$TD_lista_cat_id[]=array('name'=>$TD_cat[$var_index][name],'id'=>$TD_cat[$var_index][id]);
    				$TD_cat_id=$TD_cat[$var_index][ref];
    				}
    				
    			}
    	}
    	//riordino gli id dala base alla punta 
    	if (is_array($TD_lista_cat_id)){		
    			$TD_lista_cat_id=array_reverse($TD_lista_cat_id);
    			foreach($TD_lista_cat_id as $var_index => $var_value)
    			{
    			$TD_links.=' :: [<a href="'.$TD_path[script_included_file].'&TD_action=show&mode=1&TD_cat_id='.$TD_lista_cat_id[$var_index][id].'">'.$TD_lista_cat_id[$var_index][name]."</a>]";
    			}
    	}
    	return $TD_links;
    	}

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da madbad
    anke se forse a te non sara' molto comperensibile
    appunto... cmq vedo di studiarmelo... grazie se ho problemi ti dico... :eyes:

    @edit: ah, non è quello che intendevo... cioè a me non serve risalire data una categoria, ma semplicemente elencarle tutte in un campo <select> in modo da aver una cosa del genere

    Categoria
    >SottoCategoria
    >>Sotto SottoCategoria
    >>>Sotto Sotto SottoCategoria

    Categoria2
    >SottoCategoria

    ecc... un ciclo che mi crei un'elenco come sopra...
    Ultima modifica di neoscript : 19-12-2004 alle ore 18.57.29

  4. #4
    L'avatar di madbad
    madbad non è connesso AlterVistiano
    Data registrazione
    25-08-2002
    Messaggi
    842

    Predefinito

    Per aiutarti a capirlo tieni presente che nell'array TD_cat[] sono raccolte tutte le info su ogni cartella....
    TD_cat[1][id]
    TD_cat[1][name]
    TD_cat[1][descr]
    TD_cat[1][ref] // questo corrisponde al tuo CatParent
    TD_cat[1][img]
    etc... etc...
    TD_cat[2][id]

  5. #5
    Guest

    Predefinito

    risolto egregiamente... ho fatto un navigatore dinamico, nel senso che cliccando su una categoria, la seleziona come destinazione, e se ci sono altre sottocategorie le elenca... devo solo aggiungere il codice per reperire la cartella superiore e poi sono apposto... cmq grazie madbad per il codice che mi hai dato...

  6. #6
    L'avatar di madbad
    madbad non è connesso AlterVistiano
    Data registrazione
    25-08-2002
    Messaggi
    842

    Predefinito

    Non ho capito se alla fine il mio codice ti è servito. cmq lieto di averti aiutato :)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •