• User Attivo

    Mi date una mano?

    Salve a tutti ho la seguente select, che dovrebbe visualizzare dei dati contenuti all'interno di un database

    [html]
    <select name="select">
    <option>Salani</option>
    <option>Mondadori</option>
    <option>Einaudi</option>
    </select>
    [/html]

    e quando scelgo una delle voci in elenco, all'interno della stessa pagina, deve attivare una checkbox con i dati relativi alla mia scelta (sempre presenti nel database e collegati da un id)

    [html]
    La pietra folosofale
    <input type="checkbox" name="checkbox" value="checkbox" />
    </label>
    <br />
    La camera dei segreti
    <label>
    <input type="checkbox" name="checkbox2" value="checkbox" />
    </label>
    <br />
    Il prigioniero di Azkaban
    <label>
    <input type="checkbox" name="checkbox3" value="checkbox" />
    [/html]

    Non so che comando utilizzare per attivare la checkbox solo dopo avere effettuato una scelta nella select. Sapreste indicarmi come fare?


  • Consiglio Direttivo

    Ciao freebreathe. 🙂

    Immagino che ti basti verificare se l'id specifico è collegato al scleta fatta e quindi checkare la box dando in output un checked

    [HTML]<input type="checkbox" name="checkbox" value="checkbox" checked />[/HTML]

    Facci sapere se risolvi. 😉


  • User Attivo

    Credo di essermi espressa male. a me serve un comando che, una volta scelta una voce nel menù select, ricarichi la pagina (o una parte di pagina) e mi vada a visualizzare, all'interno di una checkbox) tutte le voci collegate ad essa.
    Per intenderci, avete presente quei siti in cui scegli la provincia e poi compare la select con tutti i comuni della provincia? Ecco, mi serve una cosa simile.


  • Consiglio Direttivo

    Ah!

    Beh allora ti recuperi l'id dalla select Editore ricaricando la pagina e quindi fai una SELECT dei dati legati a quell'id_editore:
    [html]<select name="editore">
    <option value="1">Salani</option>
    <option value="2">Mondadori</option>
    <option value="3">Einaudi</option>
    </select>[/html]```
    SELECT * FROM libri WHERE id_editore='$editore'

    [php]while ($row=mysql_fetch_array($query))
    {
       echo "<input type=\"checkbox\" name=\"libro\" value=\"".$id_libro."\" />";
    }[/php]Sono sulla buona strada adesso? :)

  • User Attivo

    Si, ma tutto questo deve avvenire all'interno della stessa pagina:

    • visualizzo la select;
    • scelgo una voce;
    • la pagina si ricarica e mi visualizza la checkbox con le voci estrapolate dal mio database.
      Ripeto, tutto deve avvenire al'interno della stessa pagina

  • Consiglio Direttivo

    Nessun problema. Metterai nei form un campo hidden name=action value= 1 o 2 a seconda dello step e quindi eseguire quanto ti interessa facendo un switch dell'action scelta. 😉


  • User Attivo

    Ti ringrazio, però non hocapito esattamente che devo fare :gtsad:
    Potresti farmi qualche esempio pratico?


  • Consiglio Direttivo

    Eccomi. 🙂

    Allora portando l'esempio considerando che le tue due tabelle siano così:

    Tabella editori:
    id
    editore (Nome dell'editore)

    Tabella libri:
    id
    titolo (titolo del libro)
    id_editore (id dell'editore associato)

    Penso che alla fine ti venga fuori questo:
    [PHP]<?php
    require_once ("config.php"); //includo il file di connessione al Db

    $action=false;
    $action=$_POST['action'];

    if ($action!= "" || $action!=false)
    {
    switch ($action)
    {
    case 1: // dopo aver selezionato l'editore
    $id_editore=false;
    $id_editore=$_POST['editore'];
    $sql="SELECT * FROM libri WHERE id_editore='$id_editore'";
    $query=@mysql_query($sql) or die (mysql_error());
    break;

        case 2: //questo è da utilizzare per lo step successivo alla selezione dei libri
        
        break;    
    }
    

    }

    //estraiamo la lista degli editori per popolare la select
    $sql_editore="SELECT * FROM editori";
    $query_editore=@mysql_query($sql_editore) or die (mysql_error());

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
    <head>
    <link rel="stylesheet" href="style.css" type="text/css" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Quì il titolo</title>
    </head>
    <body>

    <form name="editor" method="post" action="libri.php">
    <select name="editore" onchange="document.editor.submit()">
    <?
    /**
    * Creiamo dinamicamente la select degli editori e se abbiamo selezionato
    * un editore in precedenza lo lasciamo selezionato
    /
    while ($row_editore=mysql_fetch_array($query_editore))
    {?>
    <option value="<? echo $row_editore['id']; ?>"<? if ($row_editore['id']==$id_editore) {echo "selected";}?>><? echo $row_editore['editore']; ?></option>
    <?}?>
    </select>
    <input type="hidden" name="action" value="1" />
    <input type="submit" value="Seleziona" />
    </form>
    <?
    if ($action!= "" || $action!=false)
    {
    ?>
    <form name="book" method="post" action="libri.php">
    <?
    /
    *

    • Creiamo dinamicamente le checkbox dei libri
      */
      while ($row=mysql_fetch_array($query))
      {
      echo $row['titolo']."<label><input type="checkbox" name="libri" value="".$row['id']."" /></label><br />";
      }
      ?>
      <input type="hidden" name="action" value="2" />
      <input type="submit" value="Seleziona" />
      </form>
      <?}?>
      </body>
      </html>[/PHP]

    Fatto un po' alla svelta e non testato ma credo non ci siano enormi buchi. 😉

    E' già pronto per lo step successivo alla selezione delle checkbox.
    Vedi se ti sta bene adattandolo a quel che hai tu e facci sapere se risolvi. 😉