Problema Form Annidati

Buonasera a tutti

sono nuovo del forum e nella programmazione php. Mi serve un vostro aiuto.

Vi spiego cosa sto creando. Da un schermata, selezionato l'atleta che ci interessa, mi fa vedere tutte le competizioni a cui ha partecipato e per quella competizione le gare svolte. Fin qui tutto ok. Peccato che ho usato i form annidati e quando, nell'ultimo form invio i dati ad una nuova pagina non succede nulla.

Vi posto il codice così per farvi un'idea.

<html>
    
    <title> Programma nuoto </title>
    
    <body>
         <h3> Welcome to Swim's Software</h3>
        
         <h2> Seleziona L'atleta </h2>
        
  <form method="GET" action="<?PHP $_SERVER['PHP_SELF'] ?>">
  <select name="atleta">
      <option value=""> -- Seleziona -- </option>
  <?
  error_reporting(E_ALL ^ E_NOTICE);
  $connessione=mysql_connect("localhost", "root", "");
  $selezione_db=mysql_select_db("piscina", $connessione);
  $query=mysql_query("select * from anagrafica_atleta");
  while ($row=mysql_fetch_array($query))
  {
      if($_GET['atleta'] == $row['nome']." ".$row['cognome']) { $selected="selected=\"selected\""; ?>     
   <option selected="<? $selected ?>"> <? echo $row['nome']." ".$row['cognome'] ?> </option>
   <?} else  { ?>
   <option > <? echo $row['nome']." ".$row['cognome'] ?> </option>
 <?}
}  
?>
</select>
<input type="submit"  value="Cerca" name="Cerca">
<br>
<br>

<!-- cerco le manifestazioni a cui ha partecipato l'atleta -->
<?
  $connessione=mysql_connect("localhost", "root", "");
  $selezione_db=mysql_select_db("piscina", $connessione);
  if($_GET['Cerca'])  
   {
       $atleta=strtoupper(str_replace(' ', '',$_GET['atleta']));
       
       $query_atleta=("select id_atleta
                   from anagrafica_atleta
                   where UPPER(concat(nome,cognome)) = '$atleta'" );
 
   $exec = mysql_query($query_atleta) or die(mysql_error());  
  if(!$exec) {echo 'errore '.mysql_error() ;exit();}
  $id_atleta=mysql_fetch_row($exec);
  $id_atleta=$id_atleta[0];
 /*
  echo 'atleta '.$id_atleta;
 
 
  $query_riepilogo_atleta=("select id_competizione
                                          from riepilogo
                                          where id_atleta= $id_atleta ");
 
   $exec = mysql_query($query_riepilogo_atleta) or die(mysql_error());  
  if(!$exec) {echo 'errore '.mysql_error() ;exit();}
  $num=mysql_num_rows($exec);
  $i=0;
  $competizione='';
  while ($row =mysql_fetch_row($exec))
  {
            echo ' Competizione '.$row[0]."<br>";
         $competizione= $competizione."'".$row[0]."'".",";
            echo ' Competizione IN '.$competizione."<br>";
  }
   $competizione = substr_replace($competizione ,"",-1);
 
*/
}
?>

<form method="GET" action="<?PHP $_SERVER['PHP_SELF'] ?>">
  <select name="manifestazione" >
      <option value=""> -- Seleziona -- </option>
  <?
  error_reporting(E_ALL ^ E_NOTICE);
  $connessione=mysql_connect("localhost", "root", "");
  $selezione_db=mysql_select_db("piscina", $connessione);
 
  //$conta_competizione=count($competizione);
  //echo 'numero competizioni '.$conta_competizione;
 
  echo 'QUI STAMPO LA QUERY<br>';
  $query=("select distinct c.nome_competizione, c.id_competizione
                        from riepilogo r, competizione c
                        where r.id_atleta = '$id_atleta'
                        and r.id_competizione = c.id_competizione");
   
   
   $exec = mysql_query($query) or die(mysql_error());
   while ($row = mysql_fetch_row($exec))
  {
      if($_GET['manifestazione'] == $row[0]) { $selected="selected=\"selected\"";
          $id_competizione=$row[1];?>     
   <option selected="<? $selected ?>"> <? echo $row[0] ?> </option>
   <?} else  { ?>
   <option > <? echo $row[0] ?> </option>
 <?}
}  
?>
      
</select>
<input type="submit" Value="Cerca" name="Cerca">

<!-- cerco le gare a cui ha partecipato l'atleta  nella manifestazione selezionata-->

<?
if($_GET['Cerca'])
{
     $id_manifestazione=$_GET['manifestazione'];
     echo 'nome manifestazione '.$id_manifestazione.'<br>'.'id competizione '.$id_competizione.'<br>';
     echo 'ID Atleta '.$id_atleta;
?>
  <form method="GET" action="Aggiorna.php">
  <select name="gare" >
      <option value=""> -- Seleziona -- </option>
  <?
  // Ricerca delle gare dell'atleta
    
      
  $connessione=mysql_connect("localhost", "root", "");
  $selezione_db=mysql_select_db("piscina", $connessione);
  $query=("select g.id_gare, g.distanza, g.stile
                        from riepilogo r, competizione c, gare g
                        where
                        r.id_competizione = c.id_competizione
                        and r.id_gare = g.id_gare
                        and  r.id_atleta = '$id_atleta'
                        and r.id_competizione='$id_competizione'");
                        echo $query;
                        
    $exec = mysql_query($query) or die(mysql_error());
   while ($row = mysql_fetch_row($exec))
  {
      if($_GET['gare'] == $row[0]) { $selected="selected=\"selected\"";
          $id_gare=$row[0];?>     
   <option selected="<? $selected ?>"> <? echo $row[1]." ".$row[2] ?> </option>
   <?} else  { ?>
   <option > <? echo $row[1]." ".$row[2] ?> </option>
 <?}
}  
?>

</select>
<input type="submit">
</form>

<? } ?>
</form>
</form>

 </body>    
</html>

Si può risolvere questo porblema? Se ci sono strade alternative quali sono?

Grazie in anticipo.

inviato 3 anni fa
emn.pal
X 0 X

A vedere il codice così è difficile esprimersi, mi chiedo: a cosa ti servono due form? non riesci a compattare tutto in un singolo form e ad implementare una logica unificata nel codice PHP? Scusa se entro nel merito "brutalmente" ma la prima cosa che ho notato, per esperienza, è che due form nella stessa pagina a volte provocano problemi, specie se la action coincide come accade qui, mi pare.

Conta che in alternativa puoi anche pensare di forzare la submit, se non va normalmente, mediante un submit() da jQuery.

Per qualsiasi chiarimento risentiamoci, ti rispondo come posso :)

risposto 3 anni fa
sayhem
X 0 X

La logica era che il risultato del primo form veniva passato alla query che genera la lista del secondo form e cosi via... Alla fine ho risolto con una "mandrakata" cioè 3 form separati e alla fine della pagina inserivo tutte le varibili che mi servivano su una tabella di appoggio che svuoto di volta in volta. Non è proprio la soluzione migliore...ma per il momento che mi sto dilettando con php va bene...  poi iniziaerò ad usare anche ajax.

Grazie

risposto 3 anni fa
emn.pal
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda