abilitare menu a tendina tramite relativa chekbox

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
Ciao a tutti
Sono nuovo del forum, spero di aver scelto la sezione corretta, anche se il problema riguarda anche javascript.
Ho questo problema... ho una tabella, dove i dati sono ricavati da un db in sql, sostanzialmente ogni riga ha una checkbox che deve abilitarmi il menu a tendina di quella medesima riga.
Carico una immagine per essere più chiaro.
Questo avviene solo per la prima anche cliccando le successive checkbox non funziona.
Qualcuno può aiutarmi?
Grazie!!!

img.png
 

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
questo è il codice relativo alla tabella che estrae i dati dal db:
PHP:
$q=mysql_query("SELECT *

                FROM prodotti

                ORDER BY nome_prodotto;");


$r=mysql_num_rows($q);

    if ($r<=0){

        echo "<h4><img src='icone/error.png' style='border:0; width:100px;'/>ATTENZIONE!!! NON SONO PRESENTI PRODOTTI</h4>";

    }else{

    echo "<table class='table3'>";

    echo "<tr><th >Codice Prodotto</th><th>Nome Prodotto</th><th>Album</th><th>Quantità Disponibile</th><th>Prezzo Unitario</th><th>Quantità Ordinata</th><th>Seleziona</th></tr>";

    echo "<tr>";

    while ($r=mysql_fetch_array($q)){

        echo "<td width='120px'>".$r['codice']."</td>";

        echo "<td width='380px'>".$r['nome_prodotto']."</td>";

        echo "<td width='30px'>".$r['album']."</td>";

        echo "<td width='30px'>".$r['q.ta']."";

        if($r['q.ta']<='0'){

             echo "<img src='icone/red.png' style='border:0; width:20px; float:left;'/>";

            }elseif($r['q.ta']=='1'){

                echo "<img src='icone/orange.png' style='border:0; width:20px; float:left;'/>";

            }else{

                echo "<img src='icone/green.png' style='border:0; width:20px; float:left;'/>";

            }

        echo"</td>";

        echo "<td width='30px'>".$r['prezzo']."€</td>";

        echo "<td width='80px'>";

            echo "<select id='menu1' name='qta_ordinata' disabled='disabled'>";

                echo "<option selected='selected'>Seleziona una q.tà</option>";

        for ($c=1; $c<=$r['q.ta']; $c++){

                   echo "<option>$c</option>";

                   }

            echo "</select>";

        echo "<td width='10px'>";

        echo "<input type='checkbox' name='sel[]' value='".$r['codice']."' onclick='abilita_select(this)'></td>";

        echo "</tr>";

    }}

echo "</table>";


questo è la parte java:


<script>

    function abilita_select(obj){

        var stato=(obj.checked)?'':'disabled';

        document.getElementById('menu1').disabled=stato;}

</script>
Grazie!!!
 
Ultima modifica di un moderatore:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@R@ff@

Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strument
box inserisci.png

Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!

Grazie

Usa i tag per il futuro
mi raccomando altrimenti sarò costretto a cancellare le discussioni
 

ninja72

Utente Attivo
15 Giu 2020
24
4
3
Ciao, prima di tutto modifica l'id Menu1 con una class="menu" inoltre aggiungi in "input type='checkbox'" class="sel", spero ti funzioni correttamente.

JavaScript:
'use strict';
        let menu = Array.from(document.getElementsByClassName('menu'));
        let checkbox = Array.from(document.getElementsByClassName('sel'));

        checkbox.forEach((e, key) => e.addEventListener('click', element => {
            if (element.target.checked == true) {
                menu[key].disabled = false;
            } else {
                menu[key].disabled = true;
            }
        }, false));
 

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
grazie ninja72 per la risposta...
ho provato ma non funziona non abilita nessun menù.
Ho sostituito il mio codice java con il tuo, fatto le sostituzioni che mi hai chiesto ma niente.
 

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
riposto il codice java, ho sostituito menu con ddl, perchè ho un'altra classe che si chiama cosi...
JavaScript:
<script>
'use strict';
      let ddl = Array.from(document.getElementsByClassName('ddl'));
      let checkbox = Array.from(document.getElementsByClassName('sel'));

      checkbox.forEach((e, key) => e.addEventListener('click', element => {
          if (element.target.checked == true) {
              ddl[key].disabled = false;
          } else {
              ddl[key].disabled = true;
          }
      }, false));
</script>
 

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
e questo è il codice della tabella con le modifiche.
PHP:
$q=mysql_query("SELECT *
                FROM prodotti
                ORDER BY nome_prodotto;");

$r=mysql_num_rows($q);
    if ($r<=0){
        echo "<h4><img src='icone/error.png' style='border:0; width:100px;'/>ATTENZIONE!!! NON SONO PRESENTI PRODOTTI</h4>";
    }else{
    echo "<table class='table3'>";
    echo "<tr><th >Codice Prodotto</th><th>Nome Prodotto</th><th>Album</th><th>Quantità Disponibile</th><th>Prezzo Unitario</th><th>Quantità Ordinata</th><th>Seleziona</th></tr>";
    echo "<tr>";
    while ($r=mysql_fetch_array($q)){
        echo "<td width='120px'>".$r['codice']."</td>";
        echo "<td width='380px'>".$r['nome_prodotto']."</td>";
        echo "<td width='30px'>".$r['album']."</td>";
        echo "<td width='30px'>".$r['q.ta']."";
        if($r['q.ta']<='0'){
             echo "<img src='icone/red.png' style='border:0; width:20px; float:left;'/>";
            }elseif($r['q.ta']=='1'){
                echo "<img src='icone/orange.png' style='border:0; width:20px; float:left;'/>";
            }else{
                echo "<img src='icone/green.png' style='border:0; width:20px; float:left;'/>";
            }
        echo"</td>";
        echo "<td width='30px'>".$r['prezzo']."€</td>";
        echo "<td width='80px'>";
            echo "<select class='ddl' name='qta_ordinata' disabled='disabled'>";
                echo "<option>Seleziona una q.tà</option>";
        for ($c=1; $c<=$r['q.ta']; $c++){
                   echo "<option>$c</option>";
                   }
            echo "</select>";
        echo "<td width='10px'>";
        echo "<input type='checkbox' class='sel' name='sel[]' value='".$r['codice']."'></td>";
        echo "</tr>";
    }}
echo "</table>";
 

ninja72

Utente Attivo
15 Giu 2020
24
4
3
Da me funziona , testato con FF, chrome e edge, (win10 in locale), da remoto forse necessità di una verifica sul caricamento totale del DOM della pagina, prova in questo modo.

JavaScript:
 'use strict';
        document.addEventListener('DOMContentLoaded', f);

        function f() {
            let ddl = Array.from(document.getElementsByClassName('ddl'));
            let checkbox = Array.from(document.getElementsByClassName('sel'));

            checkbox.forEach((e, key) => e.addEventListener('click', element => {
                if (element.target.checked == true) {
                    ddl[key].disabled = false;
                } else {
                    ddl[key].disabled = true;
                }
            }, false));
        }
 

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
perfetto grazie mille funziona a meraviglia!!! :):):)
ne approfitto per chiederti un'altra cosa.
ho creato 2 array (sel[] e qta_ordinata[]), dove all'interno, rispettivamente, salvo i codici dei prodotti selezionati e le q.tà.
il mio problema è il seguente:
riesco a passare gli array nella pagina successiva che fa l'inserimento nel db (inserimento in 2 tabelle diverse ordine e appartengono), ma non riesco ad avere i dati corretti, quello delle q.tà mi da un valore errato, credo che legga l'indice e non il valore.
posto il codice della pagina di salvataggio.

Sicuramente va fatto un ciclo di controllo prima dell'inserimento nella tabella appartengono

PHP:
$cognome=$_POST['cognome'];
$nome=$_POST['nome'];
$indirizzo=$_POST['indirizzo'];
$data_ordine=$_POST['data_ordine'];
$pagato=$_POST['pagato'];
$data_pagamento=$_POST['data_pagamento'];
$data_spedizione=$_POST['data_spedizione'];
$costo_spedizione=$_POST['costo_spedizione'];
//dati prodotti catalogo
$prodotto=$_POST['sel'];
$qta_ordinata=$_POST['qta_ordinata'];

//trasformazione dati in maiuscolo
$COGNOME=strtoupper($cognome);
$NOME=strtoupper($nome);
$INDIRIZZO=strtoupper($indirizzo);
$NOME=strtoupper($nome);

//verifico i dati
foreach ($prodotto as $p_sel=>$value){
    echo "".$p_sel."-".$value."**";
}
    echo "</br>";
    foreach ($qta_ordinata as $nr_qt=>$nr_value){
            echo "".$nr_qt."-".$nr_value."++";
}


//inserisco i prodotti nel db
if($cognome!="" and $nome!="" and $indirizzo!="" and $data_ordine!=""){
        mysql_query ("INSERT INTO ordine VALUES
        ('".$COGNOME." ".$NOME."', '".$data_ordine."', '".$pagato."', '".$data_pagamento."', '".$INDIRIZZO."', '".$data_spedizione."', '".$costo_spedizione."');");
      mysql_query ("INSERT INTO appartengono VALUES
        ('".$value."', '".$nr_value."', '".$data_ordine."','".$COGNOME." ".$NOME."');");
    echo "<h3><img src='icone/ok.png' style='border:0; width:100px;'/>ORDINE INSERITO CORRETTAMENTE.</h3>";
    }else{
        echo "<h4><img src='icone/warning.png' style='border:0; width:100px;'/>ATTENZIONE!!! COMPLETARE TUTTI I CAMPI</h4>";
    }
 

ninja72

Utente Attivo
15 Giu 2020
24
4
3
hai corretto questa riga ?
da:
echo "<select class='ddl' name='qta_ordinata' disabled='disabled'>";
a:
echo "<select class='ddl' name='qta_ordinata[]' disabled='disabled'>";
 

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
si.
gli array contengono i dati corretti, però quando vado a fare l'inserimento, lo fa, ma ci sono dati errati
mi spiego meglio il primo array sel[] contiene i codici dei prodotti in questo formato
0-56342**1-23098**
mentre il secondo qta_ordinata[] contiene i valori che seleziono dal menù a tendina fatto prima e
0-1++1-2++
nella tabella appartengono mi inserisce correttamente tutto tranne le q.tà mi inserisce sempre e solo 1 anche se dalla stampa del array qta_ordinata c'è come valore 2.
sembra che inserisca l'indice del valore e non il valore.
 

ninja72

Utente Attivo
15 Giu 2020
24
4
3
potresti verificare il tipo di dato che stai passando con echo gettyp($tuavariabile), magari è diversa dal tipo assegnata al database.
 

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
non mi da nessun risultato echo gettyp($variabile).
comunque i dati, nel db, sono varchar.
 

ninja72

Utente Attivo
15 Giu 2020
24
4
3
Il mio dubbio era sul fatto che potevi passare una dato di tipo stringa ad un campo integer del database, per quello ti ho chiesto il controllo con echo gettyp($nr_value) ma visto che sono di tipo varchar il problema è altrove. Se non ho capito male su $nr_value si trovano le quantità dell'ordine in riferimento al prodotto, verifica se siano ciclate correttamente prima dell'inserimento. Con un minimo di debug non dovrebbe essere complesso risolvere, putroppo non avendo database con i relativi dati sottomano per me è un po' difficile riprodurre il problema.
 

R@ff@

Nuovo Utente
19 Lug 2020
10
0
1
risolto anche questo problema.
semplicemente ho fatto un ciclo for utilizzando la variabile come indice dell'array.
Credevo fosse più complesso, ho provato la soluzione più semplice ed ha funzionato al primo colpo.

Grazie per l'aiuto @ninja72!!!
 
Discussioni simili
Autore Titolo Forum Risposte Data
L [Apache] abilitare ssl in locale Apache 0
O PHP 5.6 non riesco ad abilitare TSL 1.2 PHP 1
S [PHP] Abilitare un pulsante dopo scelta file... PHP 3
A Abilitare disabilitare un sito in Apache2 Apache 0
Benix89 Abilitare i Radio Buttons PHP 9
J Abilitare bottone dopo click su immagine Javascript 1
D Abilitare link dopo inserimento valore nella textbox PHP 2
L Abilitare download font Google Chrome HTML e CSS 0
O .htaccess abilitare 2 livello o sottocartella Apache 0
M Si deve installare/abilitare la estensione XMLRPC extension nella configurazione PHP PHP 6
D Abilitare scrollbar su textarea disabled HTML e CSS 0
E Abilitare estensione CURL Win2003 PHP 1
M abilitare zip in php5 su linux PHP 1
R Abilitare server php per invio mail PHP 12
A Abilitare il php nei topic CMS (Content Management System) 0
A come abilitare in ordine un imput di tipo file??? Javascript 3
I abilitare e disabilitare dei link PHP 3
J come abilitare i tasti funzione Hardware 1
T problemi con dati menu a tendina HTML e CSS 2
A menu a tendina php PHP 1
M Accordion menu e posizione div HTML e CSS 0
F Menu responsive larghezza schermo HTML e CSS 2
G Colorare menu select attraverso ricerca php PHP 0
M Creazione menu a tendina Javascript 3
D menu con submenu orizzontale HTML e CSS 0
Cosina Menu fisso copre i titoli quando cliccati nel sommario jQuery Javascript 4
G creazione menu a tendina e invio a pagina php PHP 1
P Sub menu con Collapse. Javascript 0
L Aiuto creazione menu mancante WordPress 0
S spostare il pulsante menu dropdown HTML e CSS 8
F Dropdown menu con tabella PHP 33
Spown [WordPress] Problemi visualizzazione su più browser + voci menu in movimento WordPress 1
A [WordPress] Menu bar WordPress 0
W [WordPress] Non si vedono le categorie da aggiungerle al Top Menu WordPress 3
M Inviare variabili da menu a tendina a pagina php con post PHP 6
M [PHP] Selezione da menu a discesa con 2 variabili PHP 0
F [WordPress] [HTML] Aggiungere una pagina solo allo sticky menu WordPress 4
M [PHP] Creare un menu a tendina con pdo PHP 18
M [Javascript] Caricamento menu da file esterno Javascript 8
W [HTML] Animazione menu mobile HTML e CSS 0
P [HTML] Eliminare doppio menu in wordpress WordPress 2
andreas88 [PHP] menu PHP 15
K [ASP.Net] Realizzazione menu a tendina dipendenti ASP.NET 1
M [HTML] problema spazio aggiuntivo tra elementi <li> di menu a tendina HTML e CSS 1
L [css e html] destra e sinistra (menu navigazione) HTML e CSS 3
P [Gratuito][Cerco] qualcuno per fare menu a tendina ottimizzato per mobile-responsive con css e html Offerte e Richieste di Lavoro e/o Collaborazione 3
P [HTML] Problema con menu orizzontale a tendina per sito web HTML e CSS 17
P [Javascript] Voce del menu evidenziata in base alla pagina attiva Javascript 48
V [WordPress] Come modificare link in tasto menu css WordPress 21
S [Javascript] [CSS] Spazio Bianco tra Slider e Menu foto Javascript 6

Discussioni simili