Problema riapertura pagina

marcoint

Utente Attivo
8 Gen 2014
58
0
0
Salve ragazzi, allora io ho un form da cui invio dato ad una pagina php. Quella pagina estraendo dati dal database crea una tabella e fin qui tutto bene. Ora io su questa tabella ( che per informazione offre dei pacchetti offerta ) ho un campo link che indirizza alla pagina .HTML che mi serve. Adesso vorrei mettere un link torna alla tabella eventi. Ma come faccio? Cioè come faccio a mantenere quei parametri che ho inviato dal form, senza richiamare di nuovo la pagina del form? Se non sono stato chiaro scrivetemelo qui sotto, grazie millee :)
 
Credo lo puoi fare sia con le sessioni che con i le variabili GET(io lof arei cosi), se posti almeno il form e quale dato usi per l'estrazione al database posso provare ad aiutarti
 
Si allora è un form che semplicemente seleziona due date attraverso tre select:
HTML:
<!DOCTYPE html>
<html>
<head><title>form</title>
<script type="text/javascript">
window.onload = function(){
  var formID = 'dateEventi'; // Qui inserisci l'id del tuo form
  var url = 'sassiesecoli.altervista.org' // Qui inserisci l'url della pagina che vuoi caricare

  document.getElementById(formID).onsubmit = function(){

     var iframe = document.createElement('iframe'); // Creo l'iframe
     iframe.setAttribute('src',url);  // Setto il valore dell'url dell'iframe con quello inserito sopra
     document.body.appendChild(iframe); // Inserisco l'iframe alla fine del body. 

     return false;  // Blocca il submit del form per non far aprire la pagina 
  }
}
</script>
</head>
<body>
<form name=dateEventi; method="GET" action="prova.php" target="_self">
<!--A PARTIRE DA-->
DA
<select name="giornoDA">
   <option value="01">01</option>
   <option value="02">02  </option>
   <option value="03">03 </option>
   <option value="04">04  </option>
   <option value="05">05  </option>
   <option value="06">06</option>
   <option value="07">07  </option>
   <option value="08">08 </option>
   <option value="09">09  </option>
   <option value="10">10  </option>
   <option value="11">11</option>
   <option value="12">12  </option>
   <option value="13">13 </option>
   <option value="14">14  </option>
   <option value="15">15  </option>
   <option value="16">16</option>
   <option value="17">17  </option>
   <option value="18">18 </option>
   <option value="19">19  </option>
   <option value="20">20  </option>
   <option value="21">21</option>
   <option value="22">22  </option>
   <option value="23">23 </option>
   <option value="24">24  </option>
   <option value="25">25  </option>
   <option value="26">26</option>
   <option value="27">27  </option>
   <option value="28">28 </option>
   <option value="29">29  </option>
   <option value="30" >30  </option>
   </select>
  
  <select name="meseDA">
   <option value="01">01</option>
   <option value="02">02  </option>
   <option value="03">03 </option>
   <option value="04">04  </option>
   <option value="05">05  </option>
   <option value="06">06</option>
   <option value="07">07  </option>
   <option value="08">08 </option>
   <option value="09">09  </option>
   <option value="10">10  </option>
   <option value="11">11  </option>
   <option value="12">12  </option>
  </select>
   
   <select name="annoDA">
   <option value="2013">2013</option>
   <option value="2014">2014  </option>
   <option value="2015">2015 </option>
  </select>
  <br>
  <!--FINO A-->
  A
  <select name="giornoFINO">
   <option value="01">01</option>
   <option value="02">02  </option>
   <option value="03">03 </option>
   <option value="04">04  </option>
   <option value="05">05  </option>
   <option value="06">06</option>
   <option value="07">07  </option>
   <option value="08">08 </option>
   <option value="09">09  </option>
   <option value="10">10  </option>
   <option value="11">11</option>
   <option value="12">12  </option>
   <option value="13">13 </option>
   <option value="14">14  </option>
   <option value="15">15  </option>
   <option value="16">16</option>
   <option value="17">17  </option>
   <option value="18">18 </option>
   <option value="19">19  </option>
   <option value="20">20  </option>
   <option value="21">21</option>
   <option value="22">22  </option>
   <option value="23">23 </option>
   <option value="24">24  </option>
   <option value="25">25  </option>
   <option value="26">26</option>
   <option value="27">27  </option>
   <option value="28">28 </option>
   <option value="29">29  </option>
   <option value="30" >30  </option>
   </select>
  <select name="meseFINO">
   <option value="01">01</option>
   <option value="02">02  </option>
   <option value="03">03 </option>
   <option value="04">04  </option>
   <option value="05">05  </option>
   <option value="06">06</option>
   <option value="07">07  </option>
   <option value="08">08 </option>
   <option value="09">09  </option>
   <option value="10">10  </option>
   <option value="11">11  </option>
   <option value="12">12  </option>
  </select>
 
    <select name="annoFINO">
   <option value="2013">2013</option>
   <option value="2014">2014  </option>
   <option value="2015">2015 </option>
  </select>
<input type=submit value=Invia>
</form>
</body>
</html>

Lascia stare la parte javascript che è un tentativo fallito miseramente di far aprire la prova.php nel div main della mia pagina. Comunque ora dalla mia prova.php dove faccio la query e stampo una tabella, come ho già detto, dopo essere andato su un'altra pagina .html vorrei avere un tasto torna indietro, che ritorni alla tabella stampata precedentemente e quindi con le date scelte.
 
Innanzitutto, la pagina in cui hai il form è una pagina .php, ho capito bene ? Se il tuo form è in una pagina .html allora devi convertirla a .php.
Come inizio ti suggerirei di semplificarti la vita grazie ai contatori, così da generare in automatico quei noiosi menù a tendina ;)

Secondariamente, occorre installare un controllo preventivo su ogni tag option.
Questo controllo servirà a "ricordare" la scelta col tastino per tornare indietro e sostanzialmente lo farà perché invieremo una copia di questi dati indietro alla pagina cliccando sul tastino, quindi dobbiamo assicurarci di selezionare quelli giusti nelle varie tendine.

Quando, durante il ciclo, un dato tornato indietro viene riconosciuto in una tendina, gli verrà associato l'attributo selected, il quale gli permetterà di risultare come scelta preselezionata.


Il risultato del codice riguardante il form dovrebbe essere questo:

PHP:
<!DOCTYPE html>
<html>
<head><title>form</title>
<script type="text/javascript">
window.onload = function(){
  var formID = 'dateEventi'; // Qui inserisci l'id del tuo form
  var url = 'sassiesecoli.altervista.org' // Qui inserisci l'url della pagina che vuoi caricare

  document.getElementById(formID).onsubmit = function(){

     var iframe = document.createElement('iframe'); // Creo l'iframe
     iframe.setAttribute('src',url);  // Setto il valore dell'url dell'iframe con quello inserito sopra
     document.body.appendChild(iframe); // Inserisco l'iframe alla fine del body. 

     return false;  // Blocca il submit del form per non far aprire la pagina 
  }
}
</script>
</head>
<body>
<!-- occhio anche al name qui -->
<form name="dateEventi" method="GET" action="prova.php" target="_self">
<!--A PARTIRE DA-->
DA
<select name="giornoDA">
<?php for ($i = 1; $i <= 31; ++$i): 
            $giorno = str_pad($i, 2, '0');
?>
   <option value="<?php echo $giorno; ?>"<?php echo !empty($_GET['giornoDA'])&&$giorno==$_GET['giornoDA']? ' selected':''; ?>><?php echo $giorno; ?></option>
<?php endfor; ?>
   </select>
  
  <select name="meseDA">
<?php for ($i = 1; $i <= 12; ++$i): 
            $mese = str_pad($i, 2, '0');
?>
   <option value="<?php echo $mese; ?>"<?php echo !empty($_GET['meseDA'])&&$mese==$_GET['meseDA']? ' selected':''; ?>><?php echo $mese; ?></option>
<?php endfor; ?>
  </select>
   
   <select name="annoDA">
<?php for ($i = date('Y', strtotime('2013-01-01')); $i <= date('Y'); ++$i): ?>
   <option value="<?php echo $i; ?>"<?php echo !empty($_GET['annoDA'])&&$i==$_GET['annoDA']? ' selected':''; ?>><?php echo $i; ?></option>
<?php endfor; ?>
  </select>
  <br>
  <!--FINO A-->
  A
  <select name="giornoFINO">
<?php for ($i = 1; $i <= 31; ++$i): 
            $giorno = str_pad($i, 2, '0');
?>
   <option value="<?php echo $giorno; ?>"<?php echo !empty($_GET['giornoFINO'])&&$giorno==$_GET['giornoFINO']? ' selected':''; ?>><?php echo $giorno; ?></option>
<?php endfor; ?>
   </select>
  <select name="meseFINO">
<?php for ($i = 1; $i <= 12; ++$i): 
            $mese = str_pad($i, 2, '0');
?>
   <option value="<?php echo $mese; ?>"<?php echo !empty($_GET['meseFINO'])&&$mese==$_GET['meseFINO']? ' selected':''; ?>><?php echo $mese; ?></option>
<?php endfor; ?>
  </select>
 
    <select name="annoFINO">
<?php for ($i = date('Y', strtotime('2013-01-01')); $i <= date('Y'); ++$i): ?>
   <option value="<?php echo $i; ?>"<?php echo !empty($_GET['annoFINO'])&&$i==$_GET['annoFINO']? ' selected':''; ?>><?php echo $i; ?></option>
<?php endfor; ?>
  </select>
<input type=submit value=Invia>
</form>
</body>
</html>


In prova.php invece dovresti poter realizzare il tastino per tornare indietro in questo modo:
PHP:
<a href="nomedellapaginaform.php?<?php echo $_SERVER['QUERY_STRING']; ?>">Torna Indietro</a>

$_SERVER['QUERY_STRING'] non fa altro che raccogliere tutti i parametri presente nell'url e raggupparli già pronti per comporre una qualsiasi richiesta http, quindi in buona sostanza sta prendendo i dati del form che hai appena inviato e li ha preparati per comunicarli alla pagina precedente grazie a quel link.


Fammi sapere se qualcosa non ti è chiaro o se non riesci ;)
 
Perfetto e questo è da prova.php a form.php. Adesso quello che mi serviva è tornare indietro da pagina.html. Mi spiego. Io ho form.php a cui è collegato prova.php che genera una tabella ( attraverso la query ) con dei link. Quei link sono link che collegano a pagine .html. Ora da è da quelle pagine .html che vorrei un tastino torna indietro che ritornasse alla tabella .php. Si può fare?
 
Provando il tuo codice c'è qualcosa che non va. Nella selezione mi sceglie i giorni come 10-20-30-40... e non come 01 02 03 04. Mi sà che c'è qualcosa che non va.
 
Provando il tuo codice c'è qualcosa che non va. Nella selezione mi sceglie i giorni come 10-20-30-40... e non come 01 02 03 04. Mi sà che c'è qualcosa che non va.

Nella funzione str_pad ho dimenticato un quarto parametro, che deve assumere il valore STR_PAD_LEFT, così:
PHP:
$giorno = str_pad($i, 2, '0', STR_PAD_LEFT);

Aggiornali tutti così.


Quanto al tasto nella pagina .html il concetto è lo stesso, devi trasformarla in php, includere il codice del tastino e spedirgli i dati in get.
 
ok così funziona il form. Dopo provo il torna indietro, avrei prima bisogno della chiamata ajax per aprirlo.
 

Discussioni simili