Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di yarea
    Registrato dal
    Apr 2004
    Messaggi
    62

    menu a tendina dinamico

    Ciao a tutti,
    volevo sapere se qualcuno è in grado di dirmi come si fanno dei menu a tendina dinamici.
    In sostanza io ho due tabelle Sql.
    in un menu a tendina escono le categorie, e vorrei che il secondo menu a tendina cambiasse quando seleziono la categoria, e andasse a prendere i giusti dati dalla seconda tabella... le sottocategorie, però tutto nella stessa pagina!!!
    Grazie!
    Help!
    Dany

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    205
    secondo me devi postare in scripting.. php non c'entra niente.. è com javascript che devi gestire la visualizzazione/non visualizzazione dei select (menù a tendina)
    .

  3. #3
    Utente di HTML.it L'avatar di yarea
    Registrato dal
    Apr 2004
    Messaggi
    62

    ok

    Ok, infatti script in Javascript ne ho trovati, per cui dici che con il php non si riesce?
    Ti ringrazio per la risposta, sono ancora alle prime armi con la creazione di db!
    ciao e buona domenica
    Dany

  4. #4

    Re: ok

    Originariamente inviato da yarea
    Ok, infatti script in Javascript ne ho trovati, per cui dici che con il php non si riesce?
    Ti ringrazio per la risposta, sono ancora alle prime armi con la creazione di db!
    ciao e buona domenica
    Ma se tu vuoi prelevare il menu' gerarchico dal database, non e' così facile
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  5. #5
    Utente di HTML.it L'avatar di yarea
    Registrato dal
    Apr 2004
    Messaggi
    62

    Infatti...

    E' questo infatti il mio problema, perchè riesco a gestire i dati di sql con php senza (troppi) problemi, però se devo inserirli in un jscript non so davvero come fare, anche perchè in tutti gli esempi che ho trovato gli array del secondo menu sono valorizzati a mano, mentre io avrei bisogno di estrarli dal db, senza contare il fatto che chiaramente deve visualizzare il dato, ma alla selezione dare un valore di id relativo (sempre presente nella tabella, la chiave insomma).
    Avreste qualche idea per caso?
    Grazie!
    ciao!
    Dany

  6. #6
    beh, la cosa la puoi fare così (come faccio sempre io): nel primo menù prendi tutte le categorie presenti nel db, e nel secondo tramite un'altra query prendi solo le sottocategorie appartenenti alla categoria selezionata; per fare questo io uso due tabelle, una per la categorie (id_categoria, tipo_categoria) e una per le gruppo(id_gruppo, tipo_gruppo, id_categoria), e per realizzarlo è un misto di php, sql e js.

    Menù per le categorie:
    codice:
    <select name="categoria" onChange="inviaCambiamenti()">
    <?
     query="SELECT * FROM categoria order by 'tipo_categoria'";
     $result = mysql_query($query);
     echo "<option value=\"\">Seleziona</option>";
     while($row = mysql_fetch_assoc($result))
     {
      if(!empty($categoria))
      {
       if ($row[id_categoria]<>$categoria)
       {
        echo '<option value="'.$row[id_categoria].'" >'.$row[tipo_categoria].'</option>';
       }
       else					
       {
        echo '<option value="'.$row[id_categoria].'" SELECTED>'.$row[tipo_categoria].'</option>';			
       }
      }
      else 
      {
       echo '<option value="'.$row[id_categoria].'">'.$row[tipo_categoria].'</option>';
      }
    }
    ?>
    </select>
    Menù per le sottocategorie:
    codice:
    <select name="gruppo">
    <?
      $query="SELECT * FROM gruppo WHERE id_categoria='$categoria' order by 'tipo_gruppo'";
      $result = mysql_query($query);
      echo "<option value=\"\">Seleziona</option>";
      while($row = mysql_fetch_assoc($result))
      {
       if(!empty($gruppo))
       {
        if ($row[id_gruppo]<>$gruppo)
        {
    	echo '<option value="'.$row[id_gruppo].'" >'.$row[tipo_gruppo].'</option>';
        }
        else					
        {
         echo '<option value="'.$row[id_gruppo].'" SELECTED>'.$row[tipo_gruppo].'</option>';
        }
       }
       else 
       {
        echo '<option value="'.$row[id_gruppo].'">'.$row[tipo_gruppo].'</option>';
       }
    }
    ?>
    </select>
    n.b. il codice vale per la struttura delle tabelle che ho usato io, se la tua è diversa ricordati di modificare leggermente il codice.

    la funzione che vedi (onChange="inviaCambiamenti()") è una funzione js che ricarica la pagina inviando il valore della categoria selezionata, in modo da poter fare la seconda query; la devi mettere nell'head dell'html:

    codice:
    <script language="javascript">
    
    function inviaCambiamenti(){
      document.form1.action = "<?php echo $PHP_SELF; ?>";
      document.form1.submit();
    }
    
    </script>
    form1 è il nome della form in cui hai messo i menù, se è diverso cambialo pure nella funzione.

    Spero di esermi spiegato bene e di esserti stato d'aiuto!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    Utente di HTML.it L'avatar di yarea
    Registrato dal
    Apr 2004
    Messaggi
    62
    Grazie mille!!!
    Provo subito a vedere se riesco a farlo funzionare!
    Nel caso non ci riuscissi vi disturbo di nuovo!

    GRAZIE!
    ciao
    :gren:
    Dany

  8. #8
    di nulla!!
    Ok, disturba pure
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  9. #9
    Utente di HTML.it L'avatar di yarea
    Registrato dal
    Apr 2004
    Messaggi
    62
    Ciao di nuovo,
    ho scritto e modificato tutto il codice per benino (?), mi da due prolemi:
    quando ricarica la pagina mi rimette la prima selezione sul menu, anche se sulla barra del browser in effetti passa il codice della voce selezionata...
    Due: nel secondo menu non passa il valore del primo, per cui il menu risulta vuoto.
    Devo aver fatto qualche errore di sintassi perchè non riesco a capire perchè non funge...

    Ho modificato così (la struttura delle mie tabelle è praticamente uguale a quella che mi avevi descritto delle tue...)

    <html>
    <head>
    <script language="javascript">

    function inviaCambiamenti(){
    document.form1.action = "<?php echo $PHP_SELF; ?>";
    document.form1.submit();
    }

    </script>

    </head>

    <body bgcolor="#CCCCCC" text=000000>
    <font face=verdana,tahoma,arial size=-1>
    <h1>Catalogo di Test</h1>




    <h3>GESTIONE ARTICOLI</h3>



    <form name="form1">
    <select name="categoria" onChange="inviaCambiamenti()">
    <?
    $query="SELECT * FROM categorie";
    $result = mysql_query($query);
    echo "<option value=\"\">Seleziona</option>";
    while($row = mysql_fetch_assoc($result))
    {
    if(!empty($categoria))
    {
    if ($row[id_cat]<>$categoria)
    {
    echo '<option value="'.$row[id_cat].'" >'.$row[nome_cat].'</option>';
    }
    else
    {
    echo '<option value="'.$row[id_cat].'" SELECTED>'.$row[nome_cat].'</option>';
    }
    }
    else
    {
    echo '<option value="'.$row[id_cat].'">'.$row[nome_cat].'</option>';
    }
    }
    ?>
    </select>

    <select name="articoli">
    <?
    $query="SELECT * FROM articoli WHERE id_cat='" .$categoria. "'";
    $result = mysql_query($query);
    echo "<option value=\"\">Seleziona</option>";
    while($row = mysql_fetch_assoc($result))
    {
    if(!empty($articoli))
    {
    if ($row[id_art]<>$articoli)
    {
    echo '<option value="'.$row[id_art].'" >'.$row[nome_art].'</option>';
    }
    else
    {
    echo '<option value="'.$row[id_art].'" SELECTED>'.$row[nome_art].'</option>';
    }
    }
    else
    {
    echo '<option value="'.$row[id_art].'" >'.$row[nome_art].'</option>';
    }
    }
    ?>

    </select>
    </form>


    </body>
    </html>

    Poi non ti rompo più le scatole!!!
    (Forse...)
    Ciao!

    Dany

  10. #10
    non ho guardato il codice, scusa...ora non ho tempo, devo andare a casa

    comunque per ora prova a scrivere la query al di fuori del menu a tendina e quando la esegui metti il riporto dell'errore, così te lo segnala se c'è:
    codice:
    $result = mysql_query($query)or die("Errore: ".mysql_error());
    oppure prova a stampare la query (devi metterla comunque al di fuori del menu) ed eseguila direttamente da phpMyAdmin o qualsiasi altra interfaccia utilizzi.

    Domani provo a darci un'occhiata...

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.