fastholde værdien i POST variable ved flere form-submit

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
PovlK
Begynder
Indlæg:11
Tilmeldt:3. nov 2014, 17:28
Geografisk sted:Odense
Kontakt:
fastholde værdien i POST variable ved flere form-submit

Indlæg af PovlK » 12. maj 2015, 17:24

Har en select form (POST- ingen form action)som henter sine option-values i en database. Det går fint og værdien af post-variablen indsættes i et nyt sql statement.

Resultatet heraf bruges til en efterfølgende option-value som også vises korrekt og et select og submit giver en POST variabel (med andet navn end den første POST variabel).
Også det går godt MEN - nu kan jeg ikke fange værdien af det første select, hverken i POST variablen eller andre steder.
Hvordan kan jeg gøre det??
Mit projekt skal bestå af tre opslag i tabeller i en database (de er indbyrdes afhængige) hvorefter et fjerde opslag baseret på de fundne værdier i de tre foregående opslag skal give det ønskede resultat.

Hvordan gør jeg det, hjælp til at klare tankerne om dette ønskes meget??
Venlig hilsen
Povl

Har redigeret koden til at omhandle ovenstående men kan ikke vedhæfte uanset at jeg forsøger med forskellige extensions, ej hellerat trække ind i tekstboksen. Hvordan gør jeg så det?

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: fastholde værdien i POST variable ved flere form-submit

Indlæg af cristian » 18. maj 2015, 14:06

Sådan som jeg forstår dit indlæg.

Prøv at læse hvordan du laver en session i PHP eller bruger cookies til at gemme dine værdier fra side til side.

jepperask
Geni
Geni
Indlæg:378
Tilmeldt:4. nov 2012, 17:57

Re: fastholde værdien i POST variable ved flere form-submit

Indlæg af jepperask » 23. maj 2015, 14:16

Det er nok lettest hvis vi får din kode at se.. Hvis du trykker på "Code", så indsætter den:

Kode: Vælg alt

- hvor du så i mellem kan indsætte din kode (husk at fjerne personlige oplysninger som passwords osv).

PovlK
Begynder
Indlæg:11
Tilmeldt:3. nov 2014, 17:28
Geografisk sted:Odense
Kontakt:

Re: fastholde værdien i POST variable ved flere form-submit

Indlæg af PovlK » 23. maj 2015, 15:18

Mange tak, er ikke kommet videre. Koden er lidt lang - håber det går. Havde prøvet at vedhæfte som fil men flere extensions men kunne ikke, var ikke opmærksom på muligheden af at markere koden jf. ovenfor. Kan I hjælpe, det vil være virkelig flot.
Jeg skal bruge de variable som nedenfor er indsat i sessions variable , men de hentede værdier 'forsvinder' når jeg igen henter data ud af en form med action PHP server self. Men hvad gør man så?
Venlig hilsen
PovlK

Kode: Vælg alt

<?php
session_start();
?>

<!DOCTYPE html>
 <head>
      <meta charset="utf-8">
      <title></title>
      
     <!-- <link href="sogn-laegd.css" type="text/css"
            rel="stylesheet" />    --> 
 </head> 
 
 <?php
//forbind til databasen

include_once 'connect.php';
                        
   $get_hksaar_sql = "SELECT pokus AS display_aar FROM hkusaar";   
                 
	$get_hksaar_res = mysqli_query($mysqli, $get_hksaar_sql) or die(mysqli_error($mysqli));

	if (mysqli_num_rows($get_hksaar_res) < 1) {
		//no records
		$vis_bogstavaar .= "<p><em> Ingen år fundet!/p>";
        }

// dan en html form til tast af år og indsæt sognenavne i en rulleliste   
        
  $vis_bogstavaar .= " 
		<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\"> 
		<p><label for=\"sel_id\">Vælg årstal/bogstavår</label><br>
		<select display_aar =\"display_aar\" name=\"display_aar\" required=\"required\">
		<option value=\"\">-- tast eller click --</option>";
		
  while ($recs = mysqli_fetch_array($get_hksaar_res)) {
			$id = $recs['display_aar'];
			$display_aar = stripslashes($recs['display_aar']);
			$vis_bogstavaar .= "<option value=\"".$display_aar."\">".$display_aar."</option>";
                        //echo $display_aar;
                }         
              $vis_bogstavaar.= "</select>           
             	<button type=\"submit\" name= \"submit\" value= \"indsæt\">vælg bogstav/år</button>                    
                </form>";               

                
  if (isset($_POST['display_aar']))        
  $Mvar=$_POST['display_aar']; 
  
   if(strlen($Mvar)>4) { $valgt_aar=substr($Mvar,2,4);}
    else {$valgt_aar=$Mvar;} 
           
    $_SESSION[aar]=$valgt_aar;
    
 //-------------------------------------------------------------------------------------------
     
   $get_distrikt_sql=
           "SELECT DISTINCT IF(amt is not NULL, amt, distrikt)as display_name FROM laegdnumre"
           . " WHERE ('".$valgt_aar."' BETWEEN laar AND raar) and distrikt is not null"
           . " UNION "
           . "SELECT DISTINCT distrikt as display_name FROM laegdnumre WHERE '".$valgt_aar."' > laar and raar is NULL"
           . " order by display_name ASC";      
     
$get_distrikt_res = mysqli_query($mysqli, $get_distrikt_sql) or die(mysqli_error($mysqli));             
	
	if (mysqli_num_rows($get_distrikt_res) < 1) {
		//echo "nul records/p";
		//echo "<p> Ingen distrikt fundet!/p>";
        }
               
        $antal_fundne_distrikter= mysqli_num_rows($get_distrikt_res);
            
      
     $vis_AmtDist.= " <form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\"> 
		<p><label for=\"display_id\">Find distrikt</label><br>
		<select display_name =\"display_name\" name=\"display_name\" required=\"required\">
		<option value=\"\">-- vælg amt/distrikt/kreds --</option>";
  
	while ($distrecs = mysqli_fetch_array($get_distrikt_res)) {
			$display_id = $distrecs['display_name'];
			$display_name = stripslashes($distrecs['display_name']);
                        $vis_AmtDist.= "<option value=\"".$display_name."\">".$display_name."</option>";
                       // echo $distrecs[amt];
               }
              
             $vis_AmtDist .= "</select>           
           	<button type=\"submit\" name= \"submit\" value= \"indsæt\">vælg</button>                
             </form>";  
                       
           
     if (isset($_POST['display_name'])) 
     $distrikt=$_POST['display_name'];  
   
     $_SESSION[dist]= $distrikt;
             
 //-----bare for at prøve noget andet-------------------------------------------------------------------------------------   
   	 $hent_laegdnr = <<<END_OF_TEXT
	<form method="post" action="$_SERVER[PHP_SELF]">
	<legend>Lægdets nummer:</legend><br/>
	<input type="text" name="laegd" size="10" maxlength="10" required="required" />
	<button type="submit" name="submit" value="send">Indsæt</button>
	</form>
END_OF_TEXT;
 
  if (isset($_POST['laegd'])) 
     $laegdnr=$_POST['laegd'];  
  
  
  $_SESSION[laegd]=$laegdnr;
  
 // Her skal indsættes et sql kald til databasen med variable for år, distrikt og lægd 
 //Her skal HTML delen sættes                
                
    //Opret rulletekstfelter og textfelt
    echo $vis_bogstavaar."<br>";
    echo $vis_AmtDist;
    echo $hent_laegdnr;
  
    //test - har alle session variable værdier  
    if($laegdnr){
        echo $_SESSION[aar]."<br>";
        echo $_SESSION[dist]."<br>";
        echo $_SESSION[laegd]."<br>";
    }
   
    
  ?> 

Brugeravatar
Daniel
Admin
Admin
Indlæg:625
Tilmeldt:14. jun 2011, 09:27
Geografisk sted:Danmark, Fyn, Nørre Aaby
Kontakt:

Re: fastholde værdien i POST variable ved flere form-submit

Indlæg af Daniel » 23. maj 2015, 18:25

Hej PovlK,

Har prøvet lige hurtigt at få det kigget igennem, og må indrømme at din kode er meget "rodet", så det kan være svært at finde helt rundt i det. :-)
Men for først lige at tage fat i dit problem med sessions, så kan jeg se at når du arbejder med sessions, så glemmer du at sætte ' omkring din session navn.
Eksempel: $_SESSION['navn'] hvor du har $_SESSION[navn]

For så at rydde din kode lidt op, så er det ikke ret tit en god ide at sætte for meget HTML kode ind i PHP koden, det bliver tit alt for uoverskueligt.
I stedet så er det bedre at sætte PHP ind i HTML koden. :-)

Eksempel:

Kode: Vælg alt

<?php
while(...) {
?>
	<option value="<?php echo $display_aar; ?>"><?php echo $display_aar; ?></option>
<?php
}
?>
Håber dette kan hjælpe dig videre med dit problem :-)

PovlK
Begynder
Indlæg:11
Tilmeldt:3. nov 2014, 17:28
Geografisk sted:Odense
Kontakt:

Re: fastholde værdien i POST variable ved flere form-submit

Indlæg af PovlK » 27. maj 2015, 11:49

Tak for svaret. Det kunne ikke bringe mig videre i det spor jeg arbejdede i. Sagen er vel i korthed som jeg har erfaret mig til, at jeg ikke kan submitte input fra forms flere gange i samme browsersession(action - $_SERVER['PHP_SELF'] ) uden at miste resultatet af foregående submit, selv ikke hvis jeg lægger resultatet ind i relevante superglobals som fx. $_SESSION.
Prøver andre veje i stedet for.
Venlig hilsen

Besvar