Newsgroup: it.comp.www.php
Titolo: [Aiuto] Casella combinata dinamica

Ciao a tutti
ho il seguente problema:
ho creato una casella combinata dinamica che mi passa i dati inseriti in una
tabella del database.
Il mio problema è che non riesco a inviare i dati selezionati dalla casella
combinata stessa a una funzione che mi stampa i dati selezionati.
Seguono gli script.
Qualcuno mi aiuta?
PS: Scusate la lunghezza del post necessaria per l'invio degli script
Grazie ancora
----------------------------------------------------------------------------
---------------------------------------------
SCRIPT TEST4.PHP
<form method=post action="test3.php">
<?php
include("dbconnect2.php");
include("test5.php");
include("casella4.php");
//La funzione che segue mi restituisce la casella combinata
//dinamica,basata sui valori della tabella specificata da
//$table, e della colonna specificata da $value_field.
//Agisce grazie alla funzione db_values_array()(vd. casella4.php),
//alla quale passa i valori della tabella e della colonna che
//questa deve estrarre dal database. La db_values_array() esegue
//con questi valori una query al database.
 function db_select_field ($name="", $table="Clienti",
$value_field="Cognome", $label_field="", $sort_field="", $match="",
$where="")
{
$values = db_values_array($table, $value_field, $label_field
            , $sort_field, $where);
//La funzione che segue,select_field()(vd. test5.php)
//interagisce con la db_select_field(),
//impostando i valori della casella combinata(che questa restituisce)
//a valori selezionabili e inviabili tramite form alla test3.php. Ad es.,
//impostando a un valore la variabile $match nella db_select_field(),
//questo sarà il valore di default visualizzato dalla casella combinata
//dinamica.
            $output =  select_field($name, $values, $match);
            return $output;
      }
$value_field = db_select_field($table);
print "$value_field\n";
?>
<input type="submit" name="submit" value="Invia">
</form>
----------------------------------------------------------------------------
------------------------
SCRIPT CASELLA2.PHP
<?php
function db_values_array ($table="", $value_field1="", $label_field="" ,
$sort_field="", $where=""
)
{
$values = array();
if (empty($table) || empty($value_field1)) { return $values; }
if (empty($label_field)) { $label_field = $value_field1; }
if (empty($sort_field)) { $sort_field = $label_field;}
if (empty($where)) { $where = "1=1"; }
$query = "select $value_field1 as value_field , $label_field as label_field
from $table
where $where
order by $sort_field";
$result =  mysql_query($query) or die (mysql_error());
if ($result)
{
while (list($value,$label) = mysql_fetch_array($result))
{
$values[$value] = $label;
}
}
return $values;
}
?>
----------------------------------------------------------------------------
--------------------------------------------------------------
SCRIPT TEST5.PHP
<?php
function select_field ($name="", $array="", $value="")
{
$output = <<<EOQ
<select name="$name">
EOQ;
if (is_array($array))
{
while (list($avalue,$alabel) = each($array))
{
$selected = ($avalue == $value || $alabel == $value) ?
            "selected" : "";
                  $output .= <<<EOQ
                  <option value="$avalue" $selected>$alabel</option>
EOQ;
}
}
$output .= <<<EOQ
</select>
EOQ;
return $output;
}
?>
----------------------------------------------------------------------------
-----------------------------------------------------------------------
SCRIPT TEST3.PHP
<?
//Qual'è il nome dell'array che devo postare?!?
$?!?= $_POST["?!?"];
if (is_array($?!?))
{
//Che cosa devo mettere al posto dei classici
//$key???,$value??
while (list($???,$??) = each($?!?))
{
$result = $??;
}
}
echo "<b>Hai selezionato  $result\n";
?>
----------------------------------------------------------------------------
----------------------------------------------------------------------------

 ho il seguente problema:
Antonello, ci fai o ci sei?
E' inutile che continui a postare le tue domande se non leggi le
risposte che ti vengono date.
-- 
I am what I am, I do what I can
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y
L'uomo, conscio di sbagliare, persevera.

Ciao Astronomy,
forse non ho capito bene, forse ci faccio, ma a me non interessa come
inviare dati da una casella combinata con valori PRECEDENTEMENTE  inseriti
nello script (1,2,3,......),bensě valori che provengono da una tabella del
database in costante evoluzione e aggiornamento. Ad esempio, da una tabella
di Cognomi che vado ad inserire nel database, e che automaticamente mi
saltano fuori nella casella combinata (cosa che riesco a fare, se leggi gli
script....). Quello che NON riesco a fare, č inviare questo dato VARIABILE
che seleziono, ad un'altra funzione, in questo caso test3.php. Ripeto, forse
non ho capito bene il tuo script, ma non mi sembra che faccia quello che mi
serve. Saresti cosě gentile da spiegarmelo ancora una volta? D'altronde sono
conscio di sbagliare... Ti ringrazio,
Antonello
....
($_SERVER['PHP_SELF']); ?>">
  <select name="combo">
    <option value="Value 1">1</option>    ||  Questa e' la parte a cui mi
iferisco. Non voglio passare
    <option value="Value 2">2</option>    ||   dati preinseriti ma che
provangono da tabella aggiornata
    <option value="Value 3">3</option>    \/  costantemente
  </select>
  <input type="hidden" name="IDAction" value="1" />
  <input type="submit" value="Insert" />
....

 seleziono, ad un'altra funzione, in questo caso test3.php. 
<?php 
$DATI_VARIABILI = array ("1" => "value 1", "2" => "Value 2", "3" =>
"Value 3");
function insertIntoDB ($value = "") {
	print ("Insert into DB " . $value); // fake
}
if (isset ($_POST["IDAction"]) && ($_POST["IDAction"] == 1)) {
	if (!isset ($_POST["combo"])) {
		$_POST["combo"] = ""; // default value
	}
	insertIntoDB ($_POST["combo"]);
}
?>
<form name="form1" method="post" action="<?php print
($_SERVER['PHP_SELF']); ?>">
  <select name="combo">
  <?php 
  	foreach ($DATI_VARIABILI as $key=>$value) {
	?>
	<option value="<?php print ($key); ?>"><?php print ($value);
?></option>
	<?php 
	}
  ?>
  </select>
  <input type="hidden" name="IDAction" value="1" />
  <input type="submit" value="Insert" />
</form>
Immagina $DATI_VARIABILI come dei dati variabili.


Ciao,
Antonello wrote:
non č che sei stato molto chiaro a definire il problema....
Dunque se ho capito tu vuoi sapere come alimentare le option di una 
select con dati che vengono da una tabella di DB....
Nell'esempio qui sotto la select viene alimentata con i cognomi come 
label e gli id come value ... ovviamente devi avere un result set pronto...
diciamo per esempio
<?php
mysql_select_db($database_test, $test);
$query_utenti = "SELECT * FROM tblutenti";
$utenti = mysql_query($query_utenti, $test) or die(mysql_error());
$row_utenti = mysql_fetch_assoc($utenti);
$totalRows_utenti = mysql_num_rows($utenti);
?>
.....
   <select name="ListaUtenti">
     <?php
do {
?>
     <option value="<?php echo $row_utenti['IDUtente']?>"><?php echo 
$row_utenti['Cognome']?></option>
     <?php
} while ($row_utenti = mysql_fetch_assoc($utenti));
   $rows = mysql_num_rows($utenti);
   if($rows > 0) {
       mysql_data_seek($utenti, 0);
	  $row_utenti = mysql_fetch_assoc($utenti);
   }
?>
   </select>
il codice dopo il while serve per resettare i cursori del resultset 
semmai dovessi averne ancora bisogno...
Spero che questo ti aiuti.
Ciao Gianfranzo
-- 
ICQ#: 21258924 Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo č contro la guerra
"dopo tutto, gli angeli non sono altro che dei volatili" D. Pennac