Newsgroup: it.comp.www.php
Titolo: minidomandina sugli array

Ciao a tutti!
come faccio a passare ad un array il suo indice tramite una variabile?
cioč, in un ciclo while dove mi cambia il valore di una variabile, 
voglio che questa sia l'indice dell'array.
Ho provato cosě, ma non funge. mi sa che sbaglio la sintassi..
$listavuote["$res[categories_id]"] = 1;
$listavoute č un array che deve avere come indice il valore di 
$res[categories_id] e come valore 1.
help...

 help...
ma cosa e' che non funziona?
posta il codice..
adv..
$res['0'] = 'value';
$list[$res['0']] = 1;
echo $list['value'];
-- 
www.iuz-lab.info

 posta il codice..
Questo è il codice, è una funziona aggiuntiva per oscommerce che mi 
permette di fare un controllo sulle categorie per vedere quali non hanno 
prodotti.
function getemptycategories() {
//fai la query su products_to_categories
//se non c'è neance un entry nell'array allora quella categoria non ha 
prodotti.
$categoryisempty_query = "SELECT * from products_to_categories";
$results=mysql_query($categoryisempty_query);
//Definisco che la lista delle categorie vuote è un array.
$listavuote = array();
     // Per ogni prodotto risali tramite l'albero alla categoria 
primaria. Così hai la struttura.
     while ($res=mysql_fetch_array($results)) {
echo "$res[categories_id]<br><br>";
     // Aggiungo alla lista delle categorie vuote il valore 1
     // per la categoria che contine il prodotto, a meno che non sia già 
in lista.
     // In tal caso non faccio niente perchè l'albero della cat che lo 
contiene
     // è già stato esaminato.
     echo $listavuote["$res[categories_id]"];
     if($listavuote["$res[categories_id]"] == "1") {}
     else {
     $listavuote["$res[categories_id]"] = "1";
         do {
         $categoryisempty_query_2 = "SELECT parent_id from categories 
WHERE categories_id = $res[parent_id]";
         $results_2=mysql_query($categoryisempty_query_2);
         // Aggiungo il genitore alla lista delle categorie vuote
         // (se non era già persente)
         while ($res_2=mysql_fetch_array($results_2)) {
         if($listavuote["$res_2[parent_id]"] == "1") {}
         else {$listavuote["$res_2[parent_id]"] = "1";}
         // riassegno la variabile per controllare il genitore
         $res[parent_id] = $res_2[parent_id];
}
         // faccio il controllo finchè non aggiungo la categoria 
primaria che avrà
         // il parent_id = 0. Poi mi fermo
         } while ($res_2[parent_id] > 0);
      }
     }
}

 }
confesso che non ho letto il tuo codice completamente ma non credo che tu
stia procedendo nel modo piu' appropriato..
puoi postare le strutture delle tabelle interessate (prodotti, categorie,
etc)
-- 
www.iuz-lab.info

 
dunque, non testando questa query, dovrebbe restituire una lista completa di
tutte le categorie ed il corrispondente numero di prodotti in esse
contenute..
SELECT 
categories.categories_id, 
count(products_to_categories.products_id) as counter 
FROM categories LEFT JOIN products_to_categories 
ON categories.categories_id = products_to_categories.categories_id 
WHERE 1 
GROUP BY categories_id
quindi..
function getemptycategories(){
  $categoryList = @mysql_query("QUERY");
  if(!is_resource($categoryList))
    return FALSE;
  $emptyCategoryList = array();
  while($currentCategory = mysql_fetch_assoc($categoryList)){
    if($currentCategory['counter'] == 0)
      $emptyCategoryList[] = $currentCategory['categories_id'];
  }
  return $emptyCategoryList;
}
questa funzione dovrebbe ritornare un array del tipo
array(
 0 = categories_id,
 1 = categories_id,
 ..
)
dove ogni categories_id e' l'id di una categoria vuota..
ritorna FALSE se la query fallisce..
fammi sapere..
-- 
www.iuz-lab.info

 $listavuote["$res[categories_id]"] = 1;
$listavuote[$res[categories_id]];
prova senza i doppi apici :)




o a metterli nel posto giusto.
Bye.
-- 
Alessandro Pellizzari