• User Attivo

    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>&nbsp;  </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%">&nbsp;
      <label>
      <input name="menu" type="checkbox" value="<?php echo $idcategoria; ?>" />
      <? echo $titolo; ?><br>
      </label></tr>
    <?php 
    }
    ?>
    </table>
      
    <p>&nbsp;</p>
    <p>&nbsp;</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>";
    ?>
    
    

  • Super User

    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:

    1. 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.

    :ciauz:


  • User Attivo

    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


  • User Attivo

    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>&nbsp;  </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%">&nbsp;
      <label>
    <input name="<?php echo "menu".$i; ?>" type="checkbox" value="<?php echo $idcategoria; ?>" /> 
      <? echo $titolo; ?><br>
      </label></tr>
    <?php 
    }
    ?>
    </table>
      
    <p>&nbsp;</p>
    <p>&nbsp;</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>";
    }
    
    
    ?>
    
    

  • Super User

    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


  • User Attivo

    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?

  • User Attivo

    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