Newsgroup: it.comp.www.php
Titolo: ODBC in php --->ce l'ho fatta senza DSN!

Grazie per l'aiuto a michelangelo giacomelli.
Mi hai detto che devo chiedere il DSN al provider ma lui mi aveva detto che
in ASP bastava fare riferimento al DB.
Quindi mi sono detto: "e in php??? anche!".
Basta impostare il dsn all'interno dello script:
DBQ=nome del database;
DefaultDir= ubicazione del database;
-----
<?PHP
$dsn ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath("prova.mdb")
." ;DefaultDir=".realpath("./");
$user="user";
$password="pwd";
$id_connessione=odbc_connect($dsn, $user, $password);
if ($id_connessione<=0)
{
  printf("errore");
  exit(-1);
}
else
{
  $rs=odbc_exec($id_connessione,"SELECT * FROM DatiRegistrazione");
  printf("<TABLE border><TR><TD><B>NOME</B></TD><TD><B>TELEFONO</B></TR>");
  while (odbc_fetch_row($rs))
{
    $nome=odbc_result($rs,"nome");
    $telefono=odbc_result($rs,"telefono");
    printf("<TR><TD>%s</TD><TD>%s</TD></TR>",$nome,$telefono);
  }
  odbc_free_result($rs);
  odbc_close($id_connessione);
}
?>
----
Adesso sto cercando un metodo per rilevare i nomi dei campi... se qualcuno
sa come si fa :)))
Ho fatto delle prove con "odbc_columns" ma sono riuscito a farmi dare solo
il primo campo.
Ciao a tutti, eyes2ice

odbc_field_name($id_risultato_query, int numero_del_campo);
complimenti e ciao

le pagine php sono su server windows o linux?
grazie
maxxe


Il server che contiene la base di dati deve essere per forza windows, 
anche unixODBC che permette di utilizzare l'accesso ai database tramite 
odbc utilizza una tecnica chiamata "bridge" ossia ponte, si connette ad 
un server windows e fa appunto da ponte con software linux che si 
connette tramite odbc a database di microsoft access, sfortunatamente (o 
fortunatamente? io opto per fortunatamente) non è possibili accedere a 
database access in maniera nativa da linux.
ciao


Grazie ancora,
ed ecco il frutto del mio "sudore" perfettamente funzionante!
<?PHP
//---------- Variabili per l'apertura del Database ----------------
$dsn ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath("prova.mdb")
." ;DefaultDir=".realpath("./");
$user="user";
$password="pwd";
//---------- Connessione al Database ----------------
$id_connessione=odbc_connect($dsn, $user, $password);
if ($id_connessione<=0)
{
  printf("errore");
  exit(-1);
}
else
{
  $rs=odbc_exec($id_connessione,"SELECT * FROM DatiRegistrazione");
  $num_colonne =odbc_num_fields ($rs);    // Preleva il numero di campi
presenti
//---------- Crea una tabella che ha come intestazioni i valori dei
campi ----------------
  echo "<TABLE border><TR>";
  for ($cont=1; $cont<=$num_colonne; $cont++) {
    echo "<TH>" . odbc_field_name($rs, $cont) ."</TH>";
  }
  echo "</TR>";
//---------- e ogni riga opportunamente riempita ----------------
  while (odbc_fetch_row($rs))
  {
    echo "<TR>";
    for ($cont=1; $cont<=$num_colonne; $cont++) {
      echo "<TD>" . $nome=odbc_result($rs,odbc_field_name($rs, $cont)) .
"</TD>";
    }
    echo "</TR>";
  }
  echo "</TABLE>";
  odbc_free_result($rs);
  odbc_close($id_connessione);
}
?>
Ciao, eyes2ice

...

Ciao,
se possono tornare utili qui ci sono alcuni chiarissimi tutorial su
come utilizzare ODBC e Php (anche con OS diversi, vedi specialmente
link in fondo)
http://php.weblogs.com/odbc
Per una soluzione differente da ODBC (COM)
http://freephp.html.it/articoli/view_articolo.asp?id=64