- Home
- Categorie
- Coding e Sistemistica
- PHP
- checkbox
-
checkbox
ciao,
dunque, ho 2 tabelle:
tbl_lang_comics:- id_lang_comics
- lang_comics_name
tbl_prod_lang
- pd_id
- id_lang_comics
nella 1a tabella ho inserito le lingue disponibili per i prodotti.
nella 2a tabella ho inserito le lingue che ho scelto dalla lista della 1a tabella e assegnate all' id_ prodotto ( pd_id ).
adesso se volessi modificare il prodotto, vorrei che mi caricasse nella tabella html, tutte le lingue disponibili dalla tbl_lang_comics e però mi spuntasse quelle che sono già state assegnate al prodotto nella tbl_prod_lang. Questo perchè voglio avere la possibilità di far visualizzare le lingue che sono state scelte per il prodotto infase di creazione e togliere/aggiungere lingue al prodotto, in caso ce ne fosse bisogno in fase di modifica.
ho questo codice che però mi estrae sì tutte le lingue, ma mi spunta solo l'ultima:[php]<?php
$sql = "SELECT * FROM tbl_lang_comics";
$result = dbQuery($sql) or die('Cannot get Product. ' . mysql_error());
while ($dati = mysql_fetch_array ($result)) {$sql2= "SELECT * FROM tbl_prod_lang"; $result2= dbQuery($sql2) or die ('Cannot get Product. ' . mysql_error()); while ($dati2 = mysql_fetch_array($result2)){ $id_lang = $dati2['id_lang_comics']; } $checked=""; if ($dati['id_lang_comics']== $id_lang){ $checked="checked"; }
echo"<input type="checkbox" name="lingua[]" value="{$dati['id_lang_comics']}" {$checked}>".$dati['lang_comics_name'];
}
?>[/php]grazie
-
Premetto che non sono un esperto.
Ma fare un controllo per quando tbl_prod_lang.id_lang_comics == tbl_lang_comics.id_lang_comics e ogni volta mettere il checked non sarebbe un idea?
-
ma infatti, il controllo ci dovrebbe essere....
[PHP] $checked="";
if ($dati['id_lang_comics'] == $id_lang){
$checked="checked";
}[/PHP]
solo che invece di spuntarmi tutte le checkbox delle lingue assegnate al prodotto, mi spunta sempre e comunque l'ultima....
-
Devi stare attento alle query annidate.
La versione standard di gestione alla connessione PHP-MySQL quando apre una connessione al db (per fare una query) si perde lo stato precedente.
Ti consiglio di fare la prima query, mettere tutti i record in un array e poi per ogni riga dell'array fare le seconda query.
-
[PHP] $sql = "SELECT tbl_lang_comics.*, tbl_prod_lang.pd_id
FROM tbl_prod_lang RIGHT JOIN tbl_lang_comics ON tbl_lang_comics.id_lang_comics = tbl_prod_lang.id_lang_comics
AND tbl_prod_lang.pd_id = $productId";
$result = dbQuery($sql) or die('Cannot get Product. ' . mysql_error());
while ($dati = mysql_fetch_array ($result)) {$checked=""; if ($dati['pd_id'] !="") { $checked="checked"; }
echo"<input type="checkbox" name="lingua[]" value="{$dati['id_lang_comics']}" {$checked} />".$dati['lang_comics_name'];
}[/PHP]così va bene, senza doppie query e array di sorta.