Newsgroup: it.comp.www.php
Titolo: Select con For

salve!
ho scritto il seguente codice, che mi permette di prelevare delle
categorie da una tabella (categoria) ed elencarle all'interno della
select attraverso le option value.
inoltre c'è il controllo che imposta il valore selezionato se la
categoria è quella prelevata dalla tabella.
il problema è che non viene visualizzato nulla.
mi sapete aiutare?
grazie!
<select name="categoria">
<?
$querycategoria="SELECT * FROM categoria";
$resultcategoria = mysql_query("$querycategoria")or die(mysql_error());
while ($row = mysql_fetch_array($resultcategoria)){
$idcategoria[] = $row['IDCategoria'];
$categoria[] = $row['Descrizione'];
}
$i=1;
For($i=1;$i<17;$i++){
?>
<option value="<? print("$idcategoria[$i]"); ?>" <?
if($categoria==$idcategoria){ print("selected='selected'"); } ?>><?
print("$categoria[$i]"); ?></option>
<?
}
?>
</select>

 </select>
intanto prova a correggere i primi due errori (il terzo è un
suggerimento...)
cheers,
David
-- 
Linux Registered User #334216
Get FireFox! >> 
http://www.spreadfirefox.com/?q=affiliates&id=48183&t=1
Staff >> 
http://www.debianizzati.org
 <<

 ha scritto nel messaggio
news:1149608190....@i40g2000cwc.googlegroups.com...
salve!
ho scritto il seguente codice, che mi permette di prelevare delle
categorie da una tabella (categoria) ed elencarle all'interno della
select attraverso le option value.
inoltre c'è il controllo che imposta il valore selezionato se la
categoria è quella prelevata dalla tabella.
il problema è che non viene visualizzato nulla.
mi sapete aiutare?
grazie!
<select name="categoria">
<?
$querycategoria="SELECT * FROM categoria";
$resultcategoria = mysql_query("$querycategoria")or die(mysql_error());
?>
<option value="<?=$row['IDCategoria']; ?>" <?
if($categoria==$row['IDCategoria']){ print("selected='selected' "); } ?>><?
print("$categoria[$i]"); ?></option>
<?
}
?>
</select>
hai gia il ciclo :-)

 hai gia il ciclo :-)
per l'array che inizia da 0...lo so ma a zero ha un valore che non deve
comparire, quindi non lo metto....
per il resto.....non funziona.....la pagina rimane bloccata con la
select vuota e la pagina non completamente caricata.....
non so....mi sapete dire altre alternative per l'obbiettivo che devo
raggiungere?
grazie!

 echo ($categoria == $idecategoria) ? "selected='selected'" : ""
ho provato ma non funziona...mi da errore....
comunque, l'obbiettivo era quello di farlo vedere, l'ottimizzazione la
faccio dopo....sai...prima almeno il risultato...poi la semplicità....

 
Prova un pò... (vado a mente, eh, non è detto che funzioni al 100%...):
<select name="categoria">
<?
	$querycategoria="SELECT * FROM categoria";
	$resultcategoria = mysql_query($querycategoria) or die( mysql_error() );
	while ($row = mysql_fetch_array($resultcategoria)) {
		$idcategoria[] = $row['IDCategoria'];
		$categoria[] = $row['Descrizione'];
	}
	for ($i = 1; $i < 17; $i++) {
?>
	<option value="<?php echo $idcategoria[$i]; ?>" <?php echo
($idcategoria[$i] == $_GET['categoria']) ? 'selected="selected"' : '';
?>><?php echo $categoria[$i]; ?></option>
<?
	}
?>
</select>
Come puoi notare dal codice che ho scritto, c'è un errore nel tuo codice
anche nell'if per determinare se l'option è selezionata... Nel tuo
codice compari due array, mentre dovresti comparare $idcategoria[$i] con
una variabile categoria "esterna", tipo (come nell'esempio)
$_GET['categoria']...
Secondo: perché fai tutto sto casino con il for? Ecco una (possibile)
alternativa al tuo codice:
<form ... method="get">
...
<?php
	$categoria = intval($_GET['categoria']);	// suppongo che l'ID nel
database sia un valore intero...
?>
<select name="categoria">
<?php
	$query  = "SELECT * FROM `categoria`";
	$result = mysql_query($query) or die( mysql_error() );
	while ($row = mysql_fetch_array($result))
	{
		$id_categoria    = $row['IDCategoria'];
		$descr_categoria = $row['Descrizione'];
		echo '<option value="' . $id_categoria . '"' . ($id_categoria ==
$categoria) ? ' selected="selected"' : '' . '>' . $descr_categoria .
'</option>';
	}
?>
</select>
...
</form>
Prova un pò e fammi sapere! ;)
David
P.S.: è un codicillo fatto al volo, eh, non è detto che funzioni... ;)


 P.S.: è un codicillo fatto al volo, eh, non è detto che funzioni... ;)
si, comunque da un consiglio di un post precedente, stavo provando pure
io....il codice non è bellino come il tuo ma funzia....ora provo a
sistemarlo.....

raga...come visualizzazione ora funziona, ma credo che l'if non vada
correttamente (e non riesco a capire il motivo), in quanto è+ sempre
il primo che viene visualizzato. ora il codice della categoria lo
rileva correttamente, ma non mi cambia l'option selezionata...
cosa può essere?

BoboBob ha scritto:

Posta un pò il codice *esatto* (aka copia-incolla qui) che stai usando...
David


<select name="categoria">
<?
$querycategoria="SELECT * FROM categoria";
$resultcategoria = mysql_query($querycategoria)or die(mysql_error());
while ($row = mysql_fetch_array($resultcategoria)){
$idcategoria = $row['IDCategoria'];
$categoria = $row['Descrizione'];
echo "<option value=$idcategoria. if($codcategoria==$idcategoria){
'selected=selected' } .>$categoria</option>";
}
?>
</select>

BoboBob ha scritto:

Allora... ti sei scordato un pò di spazi o un pò di virgolette, scegli
tu... ;)
Allora... scrivi _questo_ codice e vedrai che funzionerà (ovviamente,
togliendo i numeri di riga):
1:	<select name="categoria">
2:	<?
3:		$codcategoria = $_GET['categoria'];
4:
5:		$querycategoria="SELECT * FROM categoria";
6:		$resultcategoria = mysql_query($querycategoria) or die(mysql_error());
7:
8:		while ($row = mysql_fetch_array($resultcategoria)) {
9:			$idcategoria = $row['IDCategoria'];
10:			$categoria = $row['Descrizione'];
11:
12:			echo '<option value="' . $idcategoria . '"';
13:			if ($codcategoria == $idcategoria) {
14:				echo ' selected="selected">';
15:			}
16:			else {
17:				echo '>';
18:			}
19:			echo $categoria . '</option>';
20:		}
21:	?>
22:	</select>
Ora delle spiegazioni:
1. $codcategoria la utilizzi nell'if ma non la definisci... a seconda
del metodo che utilizzi nel tuo form, utilizza $_GET['categoria'] o
$_POST['categoria'] alla linea 3;
2. il tuo costrutto echo è sbagliato: non puoi usare il costrutto if
dentro un echo (o _inline_, come si dovrebbe dire). Se vuoi usare un if
inline, devi utilizzare la sintassi (condizione) ? se_vero : se_falso;.
Altrimenti utilizzi due echo, e tra di loro ci metti l'if (vedi linee 12~19)
3. il tuo costrutto echo è sbagliato anche perché ti sei mangiato un pò
di virgolette: l'HTML risultante, dal tuo codice, sarebbe stato qualcosa
del tipo (supponendo $idcategoria = 1):
<option value=1. if(==1){ 'selected=selected' } .>$categoria</option>
come puoi ben capire, questo "HTML" (se così si può definire) non può
essere letto da alcun browser, semplicemente perché è sbagliato!


 essere letto da alcun browser, semplicemente perché è sbagliato!
grazie di nuovo....faccio fatica ancora a capire le virgolette...cioè
il loro inserimento corretto...ma con questo codice e spiegazione ora
la cosaè un po più chiara....