Problema con un menù a tendina

peppepegasus

Utente Attivo
20 Ott 2006
108
0
0
Ciao,

ho un problema con un form un po..particolare..fatto da me.
Il form si compone da: un primo menu a tendina (ossia quello che va sotto il nome di option), un secondo menu a tendina e 6 caselle di testo per immettere 2 date nel formato giornog/mesem/annoaaa. Potrei fornire il link di dove si trova il sito ma preferisco tenerlo privato. Non so se si può fornire in un mp. Le voci dei 2 menu a tendina sono prelevate dinamicamente da un Db. Idem per il secondo menu. La variabile che viene fuori dal primo menù è indicata con $_REQUEST[tipo_misura]. Non riesco a capire come viene attribuito il nome tipo_misura. Anche per il secondo option non riesco a capire come dare il nome perchè quando poi mi deve prelevare la variabile scelta..non la trova, è vuota!!
Posto il codice delle 2 pagine:
Prima pagina: verifica_dati.php

PHP:
<?php

<div class ="titolo_form">Verifica della presenza dati</div><br/>
<div class ="titolo_form">Dati</div><br/>
<div id="selettore">
    <select name="tipo_misura" class="testo_normal" onChange="java-script:location='verifica_dati.php?tipo_misura='+this.value">
        <option  value="" <? if ($_REQUEST[tipo_misura]=="") echo "selected='selected' "?> >Seleziona dati...</option>
        <? $query_tipo_misura="SELECT * FROM  tabelle_verifica WHERE visibile='si' order by tipo;";
        $result_tipo_misura=mysql_query($query_tipo_misura) or die ("impossibile eseguire: $query_tipo_misura");
        while ($row_tipo_misura=mysql_fetch_array($result_tipo_misura)) {?>
                <option value="<?=$row_tipo_misura[nome_percorso]?>" <? if ($_REQUEST[tipo_misura]==$row_tipo_misura[nome_percorso]) echo "selected"?>><?=$row_tipo_misura["tipo"]?></option>
        <? } ?>
    </select>   
</div>            

<? include ("cerca_dati.php"); ?>

Seconda pagina: cerca_dati.php

PHP:
<?
$id_tab="";
$nome_tab="";
$data_controllo="";

switch ($_REQUEST[tipo_misura]) {
    case "cr10":   
        $id_tab=1;
        $nome_tab="cr10";
        break;  
.....
}
<?
if ($_REQUEST[tipo_misura]<>"") {
?>

<div class ="titolo_form">Grandezza</div><br/>

<div id="selettore"> <br />
       <select name="grandezza"  class="testo_normal" onChange="java-script:location='verifica_dati.php?grandezza='+this.value+'&tipo_misura='+'<?=$_REQUEST[tipo_misura]?>">
        <option value="" <? if ($_REQUEST[grandezza]=="") echo "selected='selected' "?> > </option>        
        <? $query_grand="SELECT * FROM tabelle_campi WHERE id_tabella=$id_tab ORDER by descrizione_IT;";
        $result_grand=mysql_query($query_grand) or die ("impossibile eseguire: $query_grand");
        while ($row_grand=mysql_fetch_array($result_grand)) {?>
            <option value="<?=$row_grand[descrizione_IT] ?>" <? if ($row_grand[id_tabella]==$id_tab) echo "selected"?>><?=$row_grand["nome_campo"]?></option>        
        <? } ?>
    </select>   
<? } ?>
</div>    
                                                    
    

<br/>
<div class="form">
    <form name="form_val" method="post" >
        <div class ="titolo_form">Inserisci la data di inizio ricerca nel formato: gg/mm/aaaa </div><br/>
            <div class ="form" align=center >
            <input type="text" name="gg_inizio" size="1px" maxlength="2" value=""> /
            <input type="text" name="mm_inizio" size="1px" maxlength="2" value=""> /
            <input type="text" name="aa_inizio" size="2,2px" maxlength="4" value="">
        </div>                                
        <br/>

        <div class ="titolo_form">Inserisci la data di fine ricerca nel formato: gg/mm/aaaa </div><br/>
            <div class ="form" align=center >
            <input type="text" name="gg_fine" size="1px" maxlength="2" value=""> /
            <input type="text" name="mm_fine" size="1px" maxlength="2" value=""> /
            <input type="text" name="aa_fine" size="2,2px" maxlength="4" value="">
        </div>    <br/><br/>
        <div class="input"><input class="testo_normal" name="cerca" type="submit" value="Invia" /> </div>
    </form>
</div>    
<br/><br/><br/>

<?

//if (isset($_POST['invio'])) {
    $gg_start = $_POST['gg_inizio'];
    $mm_start = $_POST['mm_inizio'];
    $aa_start = $_POST['aa_inizio'];
    
    $gg_stop = $_POST['gg_fine'];
    $mm_stop = $_POST['mm_fine'];
    $aa_stop = $_POST['aa_fine'];
    
//  Validazione della data di inizio
   
    if (isset($gg_start)) {
        if (($gg_start>=1) and ($gg_start<=31)) {
            echo"";
        } else {
            echo "Controlla il giorno di inizio!! <br> ";
        }
.....
$variabile=$_REQUEST[grandezza]; // questa è vuota!!

I problemi che allora ho:
Nella seconda option mi compare (a menu non aperto) l'ultima voce, invece vorrei che mi apparisse vuoto e aprendo il menu vedere tutte le voci.
Quando immetto i dati delle 2 date e cliccando sul pulsante invia..mi si cancella il contenuto della caselle di testo..perchè?
E, in fine, come richiamo la variabile selezionata dalla seconda option?
Ok..la cosa è un po complicata ma spero che qualcuno mi dia una dritta.
grazie.
ciao.
 
Ciao,

lo so è un po complicata la cosa..quello che mi serve sapere è la variabile che prende dal secondo option..come si chiama?? cioè io seleziono la prima option, la variabile di questa si chiama $_REQUEST[tipo_misura], poi passo alla seconda..come si chiama la variabile di questa option? Ho provato con $_REQUEST[grandezza] ma non prende nulla.
E' più chiaro ora?
ciao.
 
ciao
una cosa
quando scrivi le variabili tipo array (superglobali o no) devi mettere gli apici
$_REQUEST['tipo_misura']


poi meno importante usa <?php e non <?
 
Il problema sta nel fatto che nella seconda pagina prima di aprire la lista di selezione grandezza non hai aperto nessun form, o almeno così credo, perché altre cose al momento non mi vengono in mente.

Un primo consiglio: utilizza le variabili superglobali $_GET e $_POST al posto di $_REQUEST, che è deprecato. Ad esempio, $_REQUEST['grandezza'] diventa $_POST['grandezza']. Per farti capire quanto è inutilizzato ti dico solamente che in locale a me un vecchio software PHP non funzionava perché usava le variabili $_REQUEST, e le ho dovute cambiare tutte a mano!

Secondo consiglio: come ha già detto borgoitalia usa gli apici quando devi specificare l'elemento di un array.
 
ciao
a parte che il tutto è un poco inca....to

prova intanto a scrivere la prima parte così

HTML:
<div class ="titolo_form">Verifica della presenza dati<br/>
Dati</div><br/>
<div id="selettore">
    <select name="tipo_misura" class="testo_normal" onChange="java-script:location='verifica_dati.php?tipo_misura='+this.value">
        <option  value="" <?php if ($_GET[tipo_misura]=="") echo "selected='selected' "?> >Seleziona dati...</option>
        <?php $query_tipo_misura="SELECT * FROM  tabelle_verifica WHERE visibile='si' order by tipo;";
        $result_tipo_misura=mysql_query($query_tipo_misura) or die ("impossibile eseguire: $query_tipo_misura");
        while ($row_tipo_misura=mysql_fetch_array($result_tipo_misura)) {?>
                <option value="<?php echo $row_tipo_misura['nome_percorso']?>" <?php if ($_GET['tipo_misura']==$row_tipo_misura['nome_percorso']) echo "selected"?>><?php echo $row_tipo_misura['tipo']?></option>
        <?php } ?>
    </select>   
</div>            

<?php include_once "cerca_dati.php"; ?>
 
ciao,

grazie per le risposte...purtroppo il 'java-script' non va, non mi esce nulla del secondo option e delll'altro form per le date scritto così, mentre senza trattino mi va ma ho sempre il problema che non mi prende la variabile del secondo option!
:hammer:
 

Discussioni simili