Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2019
    Messaggi
    2

    Creazione menù a tendina dinamico collegato al database

    Ciao sono luigi, scusate il disturbo.
    Vi scrivo perchè sul forum non ho trovato soluzioni dirette per il mio caso e non sono riuscito ad addattare nessuna di quelle trovate.

    Ho necessità di visualizzare in un menù a tendina una lista di nomi di dipendenti (presenti nel db) e di sceglierne uno e visualizzare ogni info riguardante ogni singolo dipendente.
    Ho una tabella in un database con più colonne, organizato così: https://ibb.co/gtFbG2M

    Ho scritto due pagine. una php con il menù e la possibilità di scegliere e un altra con lo script php richiamato dalla homepage per far visualizzare tutte le info in una tabella.

    Il codice della home è questo :
    codice:
    <html>
      <head> 
      <script language="Javascript">
    var xmlhttp;
    
    function mostraInfo(str)
    {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
    {
    alert ("Browser does not support HTTP Request");
    return;
    }
    var url="script.php";
    url=url+"?q="+str;
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    }
    
    function stateChanged()
    {
    if (xmlhttp.readyState==4)
    {
    document.getElementById("info").innerHTML=xmlhttp.responseText;
    }
    }
    
    function GetXmlHttpObject()
    {
    if (window.XMLHttpRequest)
    {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    return new XMLHttpRequest();
    }
    if (window.ActiveXObject)
    {
    // code for IE6, IE5
    return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
    }
    </script>
        <?php
        $database = "test";    
        $con = mysql_connect("####","####","####")or die ('Errore connessione');
        mysql_select_db($database, $con);
    ?>
    </head>
    <body>
    <form id="form1" name="form1" method="post" action="onChange="mostraInfo(this.value)">
    <table width="500px" border="0" cellpadding="5">
    <tr>
    <td>Dipendente</td>
    <td>
    <select> 
    <?php    
    $query="SELECT DISTINCT dipendente FROM TabellaOrari ORDER BY dipendente ASC";
    $result =mysql_query($query);
    while ($row = mysql_fetch_assoc($result)){ 
    echo "<option value='".$row['dipendente']."'>".$row['dipendente']."</option>";
    } 
    ?>
    </select>
    </td>
    </tr>
    </tab    le>
    </form>
    </body>
    </html>
    mentre il codice dello script è il seguente :
    codice:
    <?php
    $q=$_GET["q"];
    $database = "test";    
    $con = mysql_connect("####","####","####")or die ('Errore connessione');
    mysql_select_db($database, $con);
    $result = mysql_query("SELECT * FROM TabellaOrari WHERE id = ".$q."");
    if (!$result) {
        echo 'Could not run query: ' . mysql_error();
        exit;
    }
    echo "<table border='1'>
    <tr>
    <th>Dipendente</th>
    <th>Commessa</th>
    <th>Data</th>
    <th>Ore Ordinarie</th>
    <th>Ore Straordinarie</th>
    <th>ID Funzione</th>
    <th>Gruppo1</th>
    <th>Gruppo2</th>
    <th>Gruppo3</th>
    </tr>";
    
    while($row = mysql_fetch_array($result))
    {
    echo "<tr>";
    echo "<td>" . $row['dipendente'] . "</td>";
    echo "<td>" . $row['commessa'] . "</td>";
    echo "<td>" . $row['data'] . "</td>";
    echo "<td>" . $row['ore ordinarie'] . "</td>";
    echo "<td>" . $row['ore straordinarie'] . "</td>";
    echo "<td>" . $row['id_funzione'] . "</td>";
    echo "<td>" . $row['gruppo1'] . "</td>";
    echo "<td>" . $row['gruppo2'] . "</td>";
    echo "<td>" . $row['gruppo3'] . "</td>";
    echo "</tr>";
    }
    echo "</table>";
    
    mysql_close($con);
    ?>
    Ho necessità di autoaggiornare la pagina quindi senza farla cambiare.
    Il problema è al momento che non visualizzo il nome dei dipendenti e non ho la possibilità di scegliere il dipendente e quindi, dopo averlo scelto, di mandare il paramentro alla funzione.
    codice:
    function  mostraInfo(str)
    {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
    {
    alert ("Browser does not support HTTP Request");
    return;
    }
    var url="script.php";
    url=url+"?q="+str;
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    }
    presente nella home per farlo svolgere allo script.

    In attesa di una Vostra risposta, vi ringrazio anticipatamente.

    --
    Luigi

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    codice:
    <form id="form1" name="form1" method="post" action="onChange="mostraInfo(this.value)">
    Occhio che c'è un problema con gli apici degli attributi.
    1. Per prima cosa verifica il sorgente della pagina e che ci siano effettivamente i dipendenti nella select.
    2. No ha senso mettere onchange nella form...no mi pare che possa far partire l'evento. dovresti richiamare mostraInfo() sul l'evento onchange della select

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2019
    Messaggi
    2
    Ciao buongiorno ho corretto gli apici così :
    codice:
    <form id="form1" name="form1" method="post" action="onChange="mostraInfo(this.value)"">
    .

    per il resto non ho capito benissimo cosa dovrei fare

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Così è ancora sbagliato...basta che vedi il sorgente pagina.
    Cmq ti dicevo di mettere quel onchange sulla select, non su form
    <select onchange="mostraInfo()">

    Edit:
    onchange sul tag form funziona anche. Ovviamente lancia l'evento su ogni modifica di un elemento della form. Visto che ne hai solo uno, andrebbe anche bene. Tuttavia form non ha un campo value, quindi fare
    codice:
    <form onchange="mostraInfo(this.value)">

    Non ha senso.
    Dovresti fare
    codice:
    <form onchange="mostraInfo(this['dipendenti'].value)">
    ..
    <select name="dipendenti">
      ...
    </select>
    
    Spostando, invece, l'onchange sulla select (e potresti togliere form)
    codice:
    <select onchange="mostraInfo(this.value)">
    ...
    </select>
    
    Ultima modifica di boots; 25-03-2019 a 12:28

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2019
    Messaggi
    2
    [/CODE]
    </head>
    <body>
    <select onchange="mostraInfo(this.value)">
    <table width="500px" border="0" cellpadding="5">
    <tr>
    <td>Dipendente</td>
    <td>
    <?php
    $query="SELECT DISTINCT dipendente FROM TabellaOrari ORDER BY dipendente ASC";
    $result =mysql_query($query);
    while ($row = mysql_fetch_assoc($result)){
    echo "<option value='".$row['dipendente']."'>".$row['dipendente']."</option>";
    }
    ?>
    </select>
    </body>
    </html>
    [CODE]
    Il codice è il seguente come da tuo suggerimento ma comunque ho la visualizzazione della pagina bianca e neanche il menù a tendina viene visualizzato

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Il sorgente della pagina? hai abilitato la visualizzazione degli errori di php ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201
    Ciao, mi intrometto per una domanda... Se dalla pagina generata dinamicamente dal select volessi modificare un record e quindi inviare via get o post un id ad una seconda pagina, come potrei fare?

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non credo c'entri nulla con il topic
    Cmq, nel tuo ciclo, basta che ti fai un link/form con l'id
    Codice PHP:
    <?php while ($row mysql_fetch_assoc($result)): ?>
    ...
    <a href="edit.php?id=<?php echo $row['id'?>">edit</a>

    <!-- Oppure con il form -->
    <form action="edit.php" method="post">
    <input type="hidden" value="<?php echo $row['id'?>" name="id" >
    <input type="submit" value="Edit">
    </form>
    <?php endwhile ?>
    Ultima modifica di boots; 01-04-2019 a 10:50

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201
    Era una prova che ho già fatto... ma quando invio il for la pagina non cambia... ti faccio vedere il codice:
    codice:
    <?php $data=date("Y/m/d");
    include '../include/db_conn_open.php';
    $query_fornitore = "SELECT fornitore FROM `oggetto` WHERE eliminato =0 group by fornitore";
    $rs_fornitore = $mysqli->query($query_fornitore);
    ?>
    
    
    <html>
    <head>
    
    
    <script>
    function showUser(str) {
        if (str == "") {
            document.getElementById("txtHint").innerHTML = "";
            return;
        } else { 
            if (window.XMLHttpRequest) {
                // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            } else {
                // code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("txtHint").innerHTML = this.responseText;
                }
            };
            xmlhttp.open("GET","search_fornitore.php?q="+str,true);
            xmlhttp.send();
        }
    }
    </script>
    
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
    </head>
    <body>
    
    
     <br /><br />
               <nav class="navbar navbar-default">
      <div class="container-fluid">
        <div class="navbar-header">
          
        </div>
        <ul class="nav navbar-nav">
        <li ><a href="../amministrativo/index.php">DASHBOARD</a></li>
        </ul>     
    </nav> 
    
    
    <table class="table table-striped" border="1" id="tabella">
    <tbody>
    <tr class="product">
    <td>
    
    
    <div class="form-group">
      <label for="sel1">Seleziona un Fornitore:</label>
      <select class="form-control" id="users" name="users" onchange="showUser(this.value)">
    
    
    <option value="">-</option>
    <?php
    while($riga = $rs_fornitore->fetch_assoc()){
    
    
    ?>
      
      <option value="<?php echo $riga['fornitore'] ?>"><?php printf($riga['fornitore']) ?></option>
    <?php } ?> 
      </select>
    
    
    </tr>
    </tbody>
    </table>
    </div>
    <br>
    
    
    <div id="txtHint">
    <b>&nbsp;&nbsp;&nbsp;Elenco Prodotti:</b></div>
    </body>
    </html>
    Il select e la generazione della pagina funziona prendendo i dati da questa pagina:
    codice:
    <!DOCTYPE html>
    <html>
    <head>
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>  
               
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />  
     <script src="../js/jquery.dataTables.min.js"></script>  
     <script src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script>            
     <link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.min.css" />  
          
    </head>
    <body>
    
    
    <?php
    $q = $_GET['q'];
    
    
    
    
    $sql="select oggetto.id_merce as merce, fornitore, articolo, magazzino.id_merce, oggetto.prezzo_o,  descrizione, un_misura, fornitore, sum(quantita_m) as tot
    from oggetto
    inner join carico on oggetto.id_merce=carico.id_merce
    inner join magazzino on carico.id_car=magazzino.id_car
    
    
    where oggetto.eliminato = 0
    and
    carico.eliminato=0
    and
    quantita_m > '0'
    and
    fornitore = '$q'
    
    
    
    
    group by magazzino.id_merce";
    $rs = $mysqli->query($sql);
     
    
    
    echo " 
    
    
    <div class=\"container\">  
     
    <div class=\"table-responsive\"> 
    <table id=\"oggetto\" class=\"table table-striped table-bordered\"> 
     <thead> 
    <tr>
    <th>Selezione</th>
    <th>Articolo</th>
    <th>Descrizione</th>
    <th>Un. Misura</th>
    <th>Fornitore</th>
    <th>Prezzo</th>
    <th>Giacenza</th>
    <th>Quantita'</th>
    
    
    </tr>
    </thead> 
    
    
    <form name='modulo' action='ordine_inserito.php' method='post'>
    ";
    
    
    $iterazioni_form=0;
    while($riga = $rs->fetch_assoc()) {
        echo "<tr>";
    	
    	echo "<td><div class=\"checkbox\">
     		 <label><input type='checkbox' id='checkbox' name='checkbox'></label>
    	     </div></td>"; 
    	echo"<input type='hidden' id='id' name='id' value='".$riga['merce']."'/>"; 
        echo "<td> " .$riga['articolo']. "</td>";
    	echo "<td>" .$riga['descrizione']. "</td>";
        echo "<td>" .$riga['un_misura']. "</td>";
        echo "<td>" .$riga['fornitore']. "</td>";
        echo "<td>" .$riga['prezzo_o']. "</td>";
    	echo "<td>" .$riga['tot']. " ".$riga['un_misura']."</td>";
        echo "<td> <input type='text' id='ordine' name='ordine'  size='7' /> </td>"; 
      
        echo "</tr>";
    	$iterazioni_form++;
    }
    
    
    echo "</table> 
    
    
    <input type='hidden' id='iterazioni_form_aggiuntivi' name='iterazioni_form_aggiuntivi' value='".$iterazioni_form."'>
    <button type='submit' class='btn btn-success'>INVIA ORDINE</button>
    </form>
    ";
    
    
    
    
    ?>
    
    
    </body>
    </html>
    Il problema è che non riesco ad inviare dati via form... Cosa sbaglio?

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Puoi spiegare meglio? Non funziona proprio l'invio o non hai i dati esatti?
    Se non ho capito male, il secondo file viene "incluso" nel primo tramite ajax? in questo caso togli tutto la parte <html><head><body>
    e lascia solo il codice relativo al form

Tag per questa discussione

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.