• User

    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


  • Super User

    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?


  • User

    ma infatti, il controllo ci dovrebbe essere....
    [PHP] $checked="";
    if ($dati['id_lang_comics'] == $id_lang){
    $checked="checked";
    }[/PHP]

    :mmm:
    solo che invece di spuntarmi tutte le checkbox delle lingue assegnate al prodotto, mi spunta sempre e comunque l'ultima....
    :mmm:


  • User Attivo

    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.

    :fumato:


  • User

    [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.
    :vaiii:
    :fumato: