Newsgroup: it.comp.www.php
Titolo: query mssql da combobox

Ciao,
Devo creare delle query in base al dato scelto dal combobox, il codice
dovrebbe essere all'incirca così ma non riesco a farlo funzionare.
Provo a spiegarmi meglio, ho 10 tabelle uguali (i campi sono gli
stessi cambia solo il contenuto) ogni tabella riguarda un'azienda
diversa, in questo combobox metterò i nomi delle 10 aziende, in base
all'azienda scelta nel combobox devo stampare a video i dati di quella
tabella.
?php
// your code...
session_start();
set_time_limit(0);
error_reporting(E_ALL);
//complete "stationsqlexpress" with your particular case
$SERVER = "stationsqlexpress";
$ADMIN_NAME = "sa";
//complete pass with your pass
$ADMIN_PASS = "pass";
//complete database witht the name of database you whant to
// connect to
$DATABASE = "database";
$Conexion = mssql_connect($SERVER, $ADMIN_NAME, $ADMIN_PASS)
or die ("Can't connect to Microsoft SQL Server");
mssql_select_db($DATABASE, $Conexion)
or die ("Can't connect to Database");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html;
charset=windows-1250">
  <meta name="generator" content="">
  <title></title>
  </head>
  <body>
<form name="modulo">
<select name="colori" onchange="SelectPost()">
<option value=""></option>
<option value="ROSSO">ROSSO</option>
<option value="GIALLO">GIALLO</option>
<option value="VERDE">VERDE</option>
<option value="BLU">BLU</option>
</select>
</form>
<?
// $_REQUEST because i don't know the method (post or get) I would be
//use method post (what in need to modify?)
// - this way:
$table = $_POST['colori'];
// i think this will print the code...
// i just changed the table name....
$sql="SELECT * FROM ".$table;
$oggetto = $mssql->runquery($sql);  //i need to modify something in
//this line?????
// -you do not must to modify... run the page and see the error
// message
$mssql->closeDb();
print ($oggetto);
?>
 </body>
</html>

 print ($oggetto);
Per la fase di debug č meglio un codice tipo:
print('<pre>');
print_r($oggetto);
print('</pre>');
Oppure:
print('<pre>');
var_dump($oggetto);
print('</pre>');
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

Ciao, ti ringrazio per avermi risposto, però  non ho capito tutto
quello che mi hai scritto (ho iniziato a lavorare con i database da
pochi giorni e ancora molte cose le sto studiando), ho provato a
seguire le tue indicazioni ma la parte relativa a "$mssql" non ho
capito come modificarla.
Quella parte di codice "$mssql" l'ho trovata su un forum facendo una
ricerca, io ho solo provato a utilizzarla per quel che serve a me.
Ho testato la pagina e questi sono gli errori:
Notice: Undefined index: colori in C:\Program Files\xampp\htdocs
\intranet\test_10_03_08_43for.php on line 47
Notice: Undefined variable: mssql in C:\Program Files\xampp\htdocs
\intranet\test_10_03_08_43for.php on line 51
Fatal error: Call to a member function runquery() on a non-object in C:
\Program Files\xampp\htdocs\intranet\test_10_03_08_43for.php on line
51
riga 47:$table = $_POST['colori'];
riga 51: $oggetto = $mssql->runquery($sql); (proprio la parte che mi
avevi già segnalato)
<?php
// your code...
error_reporting(E_ALL);
ini_set('display_errors', 1);
$SERVER = "ss";
$ADMIN_NAME = "dd";
//complete pass with your pass
$ADMIN_PASS = "dd";
//complete database witht the name of database you whant to
// connect to
$DATABASE = "ddd";
$Conexion = mssql_connect($SERVER, $ADMIN_NAME, $ADMIN_PASS)
or die ("Can't connect to Microsoft SQL Server");
mssql_select_db($DATABASE, $Conexion)
or die ("Can't connect to Database");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html;
charset=windows-1250">
  <meta name="generator" content="">
  <title></title>
  </head>
  <body>
<form name="modulo">
<select name="colori" onchange="SelectPost()">
<option value=""></option>
<option value="users">users</option>
<option value="GIALLO">GIALLO</option>
<option value="VERDE">VERDE</option>
<option value="BLU">BLU</option>
</select>
</form>
<?
// $_REQUEST because i don't know the method (post or get) I would be
//use method post (what in need to modify?)
// - this way:
$table = $_POST['colori'];
// i think this will print the code...
// i just changed the table name....
$sql="SELECT * FROM ".$table;



Non sono ancora riuscita a capire come sistemare il codice ma mi porto
avanti con un'altra domanda.
Ho scoperto ora che non dovrò estrarre tutta la tabella ma solo alcuni
campi, ovviamente (visto che non ero già abbastanza in difficoltà) di
ogni tabella dovrò estrarre dei campi diversi.
Di sicuro dovrò utilizzare qualcosa del genere " SELECT primocampo,
secondocampo FROM tabella" ma non capisco come gestire il combobox con
select diverse.

 
Affronta un problema alla volta....
Avrai una combobox dove selezione il database e in base al database 
selezionato devi estrarre campi diversi?
In tal caso risolvi con 2 array:
$array_db['db1'] = 'Database 1 tizio';
$array_db['db2'] = 'Database 2 caio';
$array_field['db1'] = 'Nome, cognome, sesso';
$array_field['db2'] = 'Nascita, residenza';
O meglio ancora, una matrice
$struttura['db1']['db'] ='Db tizio';
$struttura['db1']['field'] ='Nome, cognome';
$struttura['db2']['db'] ='Db caio';
$struttura['db2']['field'] ='Sesso, eta';
Con questi generi la combobox e poi vai con la select...
	Francesco


Ciao! :-)
in realtà il db è lo stesso sono solo le tabelle ad essere diverse.
Provo a fare un esempio:
se scelgo nella combobox l'azienda pippo
devo estrarre dalla tabella "tabellaziendapippo" solo i campi "nome,
cognome, storia"  (invece che tutti i campi)
se scelgo nella combobox l'azienda pluto allora dovrei estrarre dalla
tabella "tabellaziendapluto" solo i campi " indirizzo, reparto,
settore"

 
Non cambia niente...
$query['db1']['nome'] = 'Azienda pippo';
$query['db1']['sql'] = 'Select cognome from pippo;';
$query['db1']['nome'] = 'Azienda pluto';
$query['db1']['sql'] = 'Select eta from pluto;';
if(isset($_GET['azienda'])) {
    $az = $_GET['azienda'];
    if(! array_key_exists($az, $query)) {
       echo 'Azienda selezionata NON esistente';
    } else {
      echo 'Azienda selezionata: '  . $query[$az]['nome'];
      $sql = $query[$az]['sql'];
      mssql_query(....)
      .....
      ......
      visualizzi il recordset (l'altro thread....)
    }
}
echo '<form method="get">';
echo '<select name="azienda">';
foreach($query as $key => $val) {
   echo '<option value="' . $key  .'">' . $val['nome'] . '</option>';
}
echo '</select>';
echo '</form>';
Ovviamente non provata, mille errori etc. etc. etc..
	Francesco

Ciao mi ritrovo ancora a chiedervi una mano, sono ancora dietro a
questa odiosa select tramite combobox:
ho fatto dei progressi ma ancora non mi funziona!
PAGINA DEL COMBOBOX
Questa pagina funziona
 l'unica cosa è che ho inserito il codice:
" $sql ="select name from [db]..sysobjects where xtype = 'U'order by
name";" e questa stringa mi inserisce nel combobox tutte le tabelle
all'interno del db mentre io ne voglio solo alcune.
//----------------------------------------------------------------------------------------------------------------
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$dbname = "[aa]";
$link = mssql_connect("aa", "ll", "ll")or die("Could not connect: " .
mssql_error());
mssql_select_db($dbname) or die('Could not select database');
?>
<html>
<head></head>
<body>
<?php
// SELECT FUNZIONANTE MA ESTRAE TUTTI I CAMPI
$sql ="select name from [db]..sysobjects where xtype = 'U'order by
name";
// processi la stringa $result = mssql_query($sql);
//verifichi il risultato se diverso da 0. Se fallisce significa che
non ci sono tabelle nel db
if (!$result) {
echo "DB Error, could not list tables\n";
echo ('MsSQL Error: ' . mssql_error());
exit;
}
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="171">Select table </td>
<td width="620">codice</td>
</tr>
<tr>
<td><form name="myform" method="post" action="test_10_03_08_64.php">
Tables: <select name="category" onChange="submit()">
<option value=""></option>
<?php
// cicli per estrarre tutti i nomi delle tabelle e crei direttamente
il form di scelta.
while ($row = mssql_fetch_row($result)) {
echo "<option value=\"".$row[0]."\">".$row[0]."</option>";
}
mssql_free_result($result);
?>
</select>
</form>
</td><td>&nbsp;</td>
</tr>
<tr><td>&nbsp;</td><td>&nbsp;</td>
</tr>
</table>
</body>
</html>
-------------------------------------------------------------------------
PAGINA IN CUI VENGONO ESTRATTI  I DATI:
-----------------------------
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$dbname = '[DB]';
$link = mssql_connect(dd, aa, aa)or die("Could not connect: " .
mssql_error());
mssql_select_db($dbname) or die('Could not select database');
if(isset($_POST['nome'])) {
$azienda = $_POST['nome'];
if($azienda == '[Telephony Daily A]'){
$sql = "SELECT campo1, campo2, campo3, campo4, campo5  from $azienda";
}else if($azienda == "[Telephony Daily B]"){
$sql = "SELECT campo1, campo3, campo7, campo9, campo11  from
$azienda";
}else{
echo "errore nella definizione del nome dell'azienda'";
}
echo $sql;
}
?>
<html>
<head>
</head>
<body>
<?php
$result = mssql_query($sql);
//verifichi il risultato se diverso da 0. Se fallisce significa che
non ci sono tabelle nel db
if (!$result) {
echo "DB Error, could not list tables\n";
//echo 'MsSQL Error: ' . mssql_error();
exit;
}
?>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr><td><div align="center">name/address</div></td><td><div
align="center">department/surname</div></td><td><div
align="center">field/history</div></td></tr>
<?php
// cicli l'array dei record per ircavare i dati
while($row = mssql_fetch_row($result)){
echo "<tr><td><div>s".$row[0]."</div></td><td><div>".$row[1]."</div></
td><td><div>
".$row[2]."</div></td></tr>";
}
mssql_free_result($result);
msysql_close($link);
?>
</table>
</body>
</html>
?>
-------------------------------------------------------------------------------
Gli errori che mi da sono questi:
Notice: Undefined variable: sql in C:\Program Files\xampp\htdocs
\intranet\test_10_03_08_64.php on line 35
Warning: mssql_query() [function.mssql-query]: Query failed in C:
\Program Files\xampp\htdocs\intranet\test_10_03_08_64.php on line 35
DB Error, could not list tables
la linea 35 è questa:  $result = mssql_query($sql);
Grazie Lidia

 Grazie Lidia
Ho un altro errore e non capisco perchè (nel codice che ho copiato
prima la linea 40 l'avevo commentata)
echo "DB Error, could not list tables\n";  // linea 39
echo 'MsSQL Error: ' . mssql_error();  //  linea 40
Fatal error: Call to undefined function mssql_error() in C:\Program
Files\xampp\htdocs\intranet\page2.php on line 40