selezione menu a discesa

salve,

ho un problema con una pagina php che mi modifica un record.

E' composta da una serie di input text e un campo select che va a pescare gli item da un tabella mysql con il seguente codice:

$query="SELECT campo FROM tbl order by id";

$result=mysql_query($query);

while ($row=mysql_fetch_array($result)){

echo "<option value=\"" . $row[campo] .  "\">" . $row[campo] . "</option>";

}

Vorrei che quando apro la pagina con il record da modificare la select si posizionasse sull'item relativo al record da modificare, mentre ora si posiziona all'inizio dell'elenco.

Spero di essere stato chiaro.

Suggerimenti?

inviato 9 anni fa
francesco.murri
X 0 X
<?php
$id_item = 'id_relativo_a_item_da_modificare';
$query="SELECT campo FROM tbl order by id";
$result=mysql_query($query);
while ($row=mysql_fetch_array($result)){
   $selected = ($id_item == $row[campo]) ? " selected" : "";
   echo '<option value="' . $row[campo] .  '"' . $selected . '>' . $row[campo] . '</option>';
}
?>

mi raccomando, non copiaincollare...cerca di capire che c'è scritto...poi se non capisci te lo spiego

risposto 9 anni fa
Xscratch
X 0 X

Credo di non aver capito o meglio credo che lo script non faccia quello che vorrei fare.

Allora:

ho una tabella che memorizza i dati di materiali di consumo composta dai seguenti campi:

id, articolo, descrizione, marca, prezzo.

il campo marca è un elenco che proviene da una tabella tbl_marche dove si trovano tutte le marche in questo ordine:

Canon, Epson, HP, Xerox...

ora il record è fatto così:

id|articolo | descrizione      | marca | prezzo

1 |s0001  | Cartuccia nero | Epson  | 10,00

ora se voglio modificare questo record aprendo la pagina di modifica la select della marca si posiziona sulla prima voce, cioè Canon, e non sulla voce Epson. Mi spighi come fa a farlo il tuo script?

Questo è il mio originale che serve solo a far vedere l'elenco delle marche disponibili nella select

<select name="marca" size="1">

query="SELECT marca FROM tbl_marche order by id";

$result=mysql_query($query);

while ($row=mysql_fetch_array($result)){

echo "<option value=\"" . $row[marca] .  "\">" . $row[marca] . "</option>";

}

</select>

risposto 9 anni fa
francesco.murri
X 0 X

lo script fa quello che intendi...è semplice HTML:

campo select con tre voci, quella selezionata è la prima perché non è specificato nulla

<select name="nome">
    <option value="1">uno</option>
    <option value="2">due</option>
    <option value="3">tre</option>
</select>

quì invece quella selezionata è la seconda (notare l'attributo selected)

<select name="nome">
    <option value="1">uno</option>
    <option value="2" selected>due</option>
    <option value="3">tre</option>
</select>

il mio script controlla se il valore il valore di $row['campo'] dell'attuale iterazione è uguale al valore del campo del record che stai modificando

Ovviamente dovrai cambiare $row['campo'] con $row['marca'] e $id_item con la marca della cartuccia.

forse il tuo dubbio è su questa riga?

$selected = ($id_item == $row[campo]) ? " selected" : "";

conosci l'operatore ternario?

risposto 9 anni fa
Xscratch
X 0 X

ok,

tutto chiaro facevo l'errore di settare la var $id_item con l'id del record da modificare e non il valore del campo marca.

Funzia benissimo.

Per quanto riguarda l'operatore ternario lo conosco, solo che non faceva quello che voleva perchè gli passavo il valore sbagliato.

Grazie

risposto 9 anni fa
francesco.murri
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda