- Home
- Categorie
- Coding e Sistemistica
- Coding
- Problema Con Le Checkbox
-
Problema Con Le Checkbox
ciao ragazzi mi sto inbrgliando in un problema con le checkbox.
in una checkbox ho una serie di nomi di categorie che prendo da una tabella del db.
ora vorrei che quando scelgo piu categorie, nella tabella dove vanno a finire vorrei che si creassero diciamo piu righe.
cioè se l'utente con idutente=3 scegli 2 categorie nel tabella dovrebbero creare 2 righe con una avente idutente=3 e idcategoria=1 e l'altra riga idutente=3 e idcategoria=2.
come faccio a fare questo??:x<?php require_once('connessione.php'); ?> <html> <head> </head> <body> <h1>CREA IL TUO PROFILO </h1> <FORM NAME="formcreaprofilo" action="creaprofilo.php" method="post" > <label></label> <p>SCEGLI LE CATEGORIE SULLE QUALI VUOI ESSERE INFORMATO IN TEMPO REALE</p> <p> </p> <table width="11%" border="1" cellspacing="0" cellpadding="0" bordercolor="#999999"> <?php $query ="Select * from categoria"; $ris=mysql_query($query) or die("Errore nella query:".mysql_error()); $numrows = mysql_num_rows($ris); for($x=0; $x<$numrows; $x++){ $resrow = mysql_fetch_row($ris); $titolo=$resrow['1']; $idcategoria=$resrow['0']; ?> <tr> <td width="11%"> <label> <input name="menu" type="checkbox" value="<?php echo $idcategoria; ?>" /> <? echo $titolo; ?><br> </label></tr> <?php } ?> </table> <p> </p> <p> </p> <input type="submit" value="invia"> </form>
<?php //Includo i file per la connessione //e per la verifica Utente require_once('connessione.php'); $menu = $_POST QUI NON SO CHE METTERE $strSQL = "INSERT INTO seleziona(idcategoria,idpersona)"; $strSQL .= "VALUES('CHE METTO)"; mysql_query($strSQL)OR die("Errore nella query:".mysql_error()); echo "<br>REGISTRAZIONE EVVENUTA CON SUCCESSO!!!"; echo "<br><a href='index.php'>Vai all' homepage dell'utente loggato</a>"; ?>
-
fare un elenco in questo modo non è difficile ma non è nemmeno banale.
il checkbox come ti sarai accorto esiste solamente se ha il flag = true altrimenti non esiste proprio la variabile.
quindi la prima cosa che devi fare è verificarne l'esistenza con la funzione isset
poi... tu stampi nella form un numero di checkbox che hanno tutti lo stesso nome (menu), come fai nella pagina di raccolta dati a distinguerli?
quando fai questo genere di scelte devi:
- contare quanti elementi dovrai stampare e lo puoi fare usando la funzione mysql_num_rows.
quando sai quanti sono gli elementi stampali usando un hidden
a questo punto crea il checkbox che si chiamerà menu e concatena una variabile contatore
crea anche un hidden con il nome id_menu+contatore ed inserisci l'id del record in esame.nella pagina di raccolta dati farai un ciclo che va da zero a numero di elementi trovati con mysql_num_rows
a questo punto controlli tutti i checkbox (che sai come si chiamano perchè avranno tutti il nome fatto da menu + contatore)
verifichi se la variabile esiste e se esiste vai a leggere il valore presente nel controllo id_menu+contatore per recuperare l'id del record.
spiegazione più che incasinata lo so ma spero tu abbia capito lo stesso.
-
Tymba grazie per l'auito, in teoria ho capito piu o meno come fare ma sinceramente in pratica mi è un pò complicato.
mi dai un aiuto pratico per iniziare
-
ragazzi ho fatto cosi ma non mi entra nel ciclo while. dove sbaglio??
x:x
<?php require_once('connessione.php'); ?> <html> <head> </head> <body> <h1>CREA IL TUO PROFILO </h1> <FORM NAME="formcreaprofilo" action="creaprofilo.php" method="post" > <label></label> <p>SCEGLI LE CATEGORIE SULLE QUALI VUOI ESSERE INFORMATO IN TEMPO REALE</p> <p> </p> <table width="11%" border="1" cellspacing="0" cellpadding="0" bordercolor="#999999"> <?php $query ="Select * from categoria"; $ris=mysql_query($query) or die("Errore nella query:".mysql_error()); $numrows = mysql_num_rows($ris); for($x=0; $x<$numrows; $x++){ $resrow = mysql_fetch_row($ris); $titolo=$resrow['1']; $idcategoria=$resrow['0']; ?> <tr> <td width="11%"> <label> <input name="<?php echo "menu".$i; ?>" type="checkbox" value="<?php echo $idcategoria; ?>" /> <? echo $titolo; ?><br> </label></tr> <?php } ?> </table> <p> </p> <p> </p> <input type="submit" value="invia"> </form>
?php //Includo i file per la connessione //e per la verifica Utente require_once('connessione.php'); $i=0; while($_POST['menu'.$i.'']) { $strSQL = "INSERT INTO seleziona(idcategoria,idpersona)"; $strSQL .= "VALUES('$menu','4')"; mysql_query($strSQL)OR die("Errore nella query:".mysql_error()); $i++; echo "<br>REGISTRAZIONE EVVENUTA CON SUCCESSO!!!"; echo "<br><a href='index.php'>Vai all' homepage dell'utente loggato</a>"; } ?>
-
nella prima pagina devi necessariamente stampare il numeor di record con un campo hidden e lo chiamerai nRecord
nella seconda pagin, al posto di un while usa:
for($i=0;$i<$_POST['nRecord'];$i++)a questo punto verifichi l'esistenza della variabile $_POST['menu'.$i], se esiste (quindi è flaggata), recuperi l'id dal campo
$_POST['id_menu'.$i];ciauz
-
ma in questa parte
while($_POST['menu'.$i.'']) {
$strSQL = "INSERT INTO seleziona(idcategoria,idpersona)"; $strSQL .= "VALUES(''menu'.$i','4')"; mysql_query($strSQL)OR die("Errore nella query:".mysql_error()); $i++;dove sbagli a inserire il valore in VALUES?
-
ciao tymba mi potresti aiutare non ci sto riuscendo. vorrei fare come mi hai detto tu ma non sto capendo.
nell'idden cosa metto?
aiuto mi sn bloccato