• User

    Menu a tendina in modulo

    Salve,

    ho preparato questo menu e inserito nella index di un modulo specifico dove c'è la query al db per l'estrazione dei dati da visualizzare:

    echo"<form name="abc" id="abc"action="prova.html?campo1=".$campo1."" method="post">";
    echo"<select id="campo1" name="campo1" onchange="cambiaAbc()">";
    echo"<option selected="selected">- SELEZIONA - </option>";
    echo"<option value="AAA">AAA </option>";
    echo"<option value="BBB">BBB </option>";
    echo"<option value="CCC">CCC </option>";
    echo"<option value="DDD">DDD </option>";
    echo"</select>";
    echo" <input id="Button1" name="Button1" type="submit" value="Aggiorna query">";
    echo"</form>";

    Il form funziona bene, l'unica cosa è che dopo aver selezionato un'opzione ho notato che l'indirizzo nel browser è del tipo
    miodominio.it/prova.html?campo1=
    invece di:
    miodominio.it/prova.html?campo1=AAA (o BBB, CCC ... a seonda della selezione fatta nel menu a tendina)
    Come andrebbe scritto il codice in modo da non avere un url diciamo... troncata?

    Grazie, sono in stallo
    Nik06


  • User Attivo

    Semplice, hai sbagliato l'intestazione del FORM.

    Metti questo:
    <form name="abc" id="abc" action="prova.html" method="get">

    Il risultaltato sarà:
    .../prova.html?campo1=AAA&Button1=Aggiorna+query

    Ciao :ciauz:


  • User

    Ho apportato le modifiche che mi hai consigliato ma scrivendo metodo=get non funziona, lo fa solo con post.

    C'è per caso qualche altra cosa da specificare semmai nel modulo per avere

    .../prova.html?campo1=AAA&Button1=Aggiorna+query

    Grazie

    Nik06


  • User Attivo

    Quello che vuoi far tu è passare un dato in modalità GET (...?dato=...) ad una pagina web.
    Il metodo POST non prevede l'aggiunta di informazioni in coda all'indirizzo della pagina.
    Se non funziona vuol dire che c'è un problema nella pagina a cui deve essere inviato il dato.
    Se mai posta un pezzo di codice della pagina di destinazione

    Ciao :ciauz:


  • User

    Ciao, scusa il ritardo

    In effetti con il metodo post funziona ma non aggiunge (...?dato=...). La pagina a cui deve essere inviato il dato e cioè prova.html è sostanzialmente composta da query al db per l'estrazione di determinati risultati.

    Ti invio comunque in allegato il file.

    Spero proprio in una soluzione, ci sto lavorando da diverso tempo.

    Grazie

    Nik06


  • User Attivo

    Se quella che hai postato è "prova.html"

    [php]
    $oggieieri = "SELECT DISTINCT campo1, timeStamps, campo2 FROM miatabella WHERE campo1 = '$campo1' ORDER BY timeStamps DESC LIMIT 2";
    $d_oggieieri = $db->sql_query($oggieieri);
    $row = $db->sql_fetchrow($d_oggieieri);
    $dato_oggi = $row['campo2'];
    $row = $db->sql_fetchrow($d_oggieieri);
    $dato_ieri = $row['campo2'];

    $percentuale = (($dato_oggi - $dato_ieri) * 100)/$dato_ieri;

    $percentuale = number_format($percentuale, 2, '.', '');

    if ($percentuale>0.0) {
    $perc="<span class="percp"> +" . $percentuale . "</span> <img src="images/frecciasu.gif">";
    }
    else if ($percentuale<0.0) {
    $perc="<span class="percn"> " . $percentuale . "</span> <img src="/images/frecciagiu.gif">";
    }
    else {
    $perc="<span class="percneu"> 0.00</span>";
    }

    $result = $db->sql_query("SELECT DISTINCT campo1, DATE_FORMAT(timeStamps,'%d-%m-%Y') as date, campo2, campo3, campo4, campo5, campo6 From miatabella Where campo1 = '$campo1' ORDER BY timeStamps DESC LIMIT 1");
    $numrows = $db->sql_numrows($result);
    if ($numrows > 0) {
    echo "<table border="1" cellpadding="1" cellspacing="0" bgcolor="#ffffff" width="560" align="">";

        while ($row = $db->sql_fetchrow($result)) { 
    
    
            $timeStamps = $row['date'];
            $campo1 = $row['campo1'];
            $campo2 = $row['campo2']; 
            $campo3 = $row['campo3']; 
            $campo4 = $row['campo4']; 
            $campo5 = $row['campo5']; 
            $campo6 = $row['campo6']; 
    

    if (isset($campo1))

               echo "<td width=\"80\">Simbolo:<br><span class=\"liste\">$campo1</span></td>
    

    <td width="80">Data:<br>$timeStamps</td>
    <td width="80">Chiusura:<br>$campo2</td>
    <td width="80">Var. %<br>$perc</td>
    <td width="80">Massimo:<br>$campo3</td>
    <td width="80">Minimo:<br>$campo4</td>
    <td width="80">Volumi:<br>$volData</td>

    </tr>";

        } 
         
        echo "</table>";
    

    }

    echo "<br>";

    if (isset($campo1))

    echo "<IMG SRC='chart/php/mychart.php?campo1=".$campo1."'>";
    [/php]Proprio all'inizio c'è una query SQL ($oggieieri = "SELECT...) che richiede la variabile $campo1, che dovrebbe essere il valore scelto nel menù a tendina.
    Questo $campo1 non viene inizializzato (almeno non me ne sono accorto :D), quindi alla query arriva un valore nullo.

    Prova ad aggiungere questo all'inizio del codice:
    [INDENT]$campo1 = $_GET["campo1"];
    [/INDENT]
    Ciao :ciauz:


  • User

    Ciao,

    la query SQL ($oggieieri = "SELECT...) viene fatta per calcolare la percentuale tra il primo ed il penultimo record, non riguarda la selezione.

    Avevo comunque già provato ad aggiungere la variabile $campo1 alla query SQL che mi consente di richiamare il prod dal menu a tendina ma non funziona.

    Sinceramente non so come fare

    Grazie

    Nik06


  • User Attivo

    Hai provato a fare la modifica consigliata

    $campo1 = $_GET["campo1"];

    prima di

    $oggieieri = "SELECT...


  • User

    Sì ho provato a mettere la modifica anche prima delle altre query ma non funziona. Nello specifico ripeto:

    $oggieieri= ... è una query che mi consente di fare un calcolo tra 2 records ...


  • User Attivo

    Scusa, ma se la pagina prova.html contiene codice php, dovresti rinominarla prova.php


  • User

    Ho il rewrite,

    comunque la pagina reale in php è:

    http://www.miodominio.it/modules.php?name=prova