Newsgroup: it.comp.www.php
Titolo: funzione: crea array associativo da tabella db

Salve gente,
gli zuccheri di questi giorni mi hanno intoppato il cervello e quello che
credevo di saper fare ora mi sembra impossibile.
Voglio creare una funzione che data una tabella di database mi crei un array
associativo.
Partendo da questo:
function arraytmp ($vettore, $tabella, $where="",$order="")
 {
 $querytmp="SELECT * FROM ".$tabella;
 if (isset($where)) {$querytmp.=" WHERE ".$where;}
 if (isset($order)) {$querytmp.=" ORDER BY ".$order;}
 $result=mysql_query($querytmp) or die();
 if (mysql_num_rows($result)>0)
 {
  while ($row=mysql_fetch_array($result))
   {
//parte incompleta
  }
 }
 return $vettore;
 }
come potrei completarlo? Ho dei dubbi sull'utilizzo di mysql_fetch_array o
mysql_fetch_assoc (che dalla documentazione non ne capisco il giusto
utilizzo)
vorrei che il vettore di ritorno sia del tipo
$nomevettore=array(
"id_riga_tabella_x"=>array(
                            "nomecampo1"=>"valorecampo1",
                            "nomecampo2"=>"valorecampo2",
                            "nomecampo3"=>"valorecampo3",
                            ....
                        ),
"id_riga_tabella_y"=>array(
                            "nomecampo1"=>"valorecampo1",
                            "nomecampo2"=>"valorecampo2",
                            "nomecampo3"=>"valorecampo3",
                            ....
                        ),
...
)
forse dovrei prima crearmi un array per i nomi-valori e poi associarli ai
vari id?
Grazie a tutti
    Mark... che ha il sangue saturo di colesterolo :)

 un array associativo.
function arraytmp ($tabella, $where = "", $order = "", $keyname = "ID")
{
	$querytmp = "SELECT * FROM " . $tabella;
	if (!empty ($where)) { $querytmp .= " WHERE " . $where; }
	if (!empty ($order)) { $querytmp .= " ORDER BY " . $order; }
	$result = mysql_query ($querytmp) or die();
	$return = array ();
	if (($result) && (mysql_num_rows ($result)>0))
	{
		while ($row = mysql_fetch_assoc ($result))
		{
			if (!isset ($row[$keyname])) { $row[$keyname] = -1; }
			$return[$row[$keyname]] = $row;
		}
		mysql_free_result ($result);
	}
	return $return;
}
Testata e funzionante.
-- 
I'am what I'am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1

Avevo fatto un po' di errori,
ditemi se questa é una buona cosa...
L'unica cosa che non mi piace é dover passare il nome dell'id della tabella
ma non trovo alternative.
Però così almeno dovrebbe funzionare.
function arraytmpid ($tabella, $id, $where="", $order="")
 {
 $vettore=array();
 $querytmp="SELECT * FROM ".$tabella;
 if ($where!="") {$querytmp.=" WHERE ".$where;}
 if ($order!="") {$querytmp.=" ORDER BY ".$order;}
 $result=mysql_query($querytmp) or die();
 if (mysql_num_rows($result)>0)
 {
 $tmp=array();
  while ($row=mysql_fetch_array($result,MYSQL_ASSOC))
   {
     while (list($key,$value)=each($row))
   {
    if ($key!=$id)
    {
    $tmp[$key]=$value;
    }
   }
  $id_numero=$row[$id];
  $vettore[$id_numero]=$tmp;
  }
 }
 return $vettore;
 }
        Mark... che va a riprendersi un po' di zuccheri...  :-P

 Testata e funzionante.
mitico, non ho fatto in tempo a rispondermi e ad autocorreggermi che hai
fatto una cosa in pochissime righe!
La provo subito!
Grazie!!

 Testata e funzionante.
ok, a titolo informativo per imparare meglio il php, mi spiegheresti questa
riga?
if (!isset ($row[$keyname])) { $row[$keyname] = -1; }
a cosa serve? e soprattutto che cosa succede con l'assegnazione "-1"?

 e soprattutto che cosa succede con l'assegnazione "-1"?
E' solo un valore di default. Utilizzo -1 in modo da potermi accorgere
che qualche cosa e' andato storto (e' un valore che un autoinc non
dovrebbe mai avere).
