Avatar billede hoejgaard Juniormester
15. maj 2007 - 19:30 Der er 36 kommentarer og
1 løsning

gemme variable ved submit

Hej.
Jeg har 2 form på en side, hvor den ene er et søge felt :

<FORM ACTION="soeg.php" METHOD="POST" enctype="multipart/form-data">
<table width="100%">
  <tr>
    <td class="td10" width="10%" align="left">Søg:<br><br></td>
    <td><input TYPE="text" NAME="soeg." SIZE="20" MAXLENGTH="100" value="">&nbsp;<INPUT NAME="soegform" TYPE="submit" VALUE="Søg"></td>
  </tr>
</table> 
</FORM> 

Den anden form ser sådan ud:
<FORM ACTION="ind.php" METHOD="POST" enctype="multipart/form-data">
<table width="100%">
  <tr>
    <td class="td10" width="10%" align="left">Ind:<br><br></td>
    <td align="left"><input type="text" SIZE="70" MAXLENGTH="150" name="overskrift" value="<?php echo "$row[overskrift]"; ?>"><br><br></td>
  </tr>
</table> 
</FORM>

Det virker sådan, at når man submitter det, som man har indtastet i søgefeltet, så kommer man via et andet script tilbage til denne side med de to forme. Jeg vil så gerne ha, at en evt indtastet værdi i den anden form (indtastet før submit af søgefeltet)stadig står der..
Er det muligt, og hvordan ???
Avatar billede roenving Novice
16. maj 2007 - 11:43 #1
Hrm, prøv f.eks. at lægge værdien  i et skjult felt i den første form, og så indsætte det i stedet for opslaget, hvis det findes:

<form action="soeg.php" method="post" enctype="multipart/form-data" onsubmit="this.overskrift.value=document.forms[1].overskrift.value;">
<input type="hidden" name="overskrift" value="">
...

-- og i den anden form ca. (php er ikke mit område !-)

<td align="left"><input type="text" size="70" maxlength="150" name="overskrift" value="<?php i(isset($_POST["overskrift"]){echo $_POST["overskrift"];}else{echo "$row[overskrift]";} ?>"><br><br></td>
Avatar billede roenving Novice
16. maj 2007 - 11:43 #2
if selvfølgelig ...
Avatar billede hoejgaard Juniormester
16. maj 2007 - 20:51 #3
det vil jeg da prøve ..
Avatar billede hoejgaard Juniormester
21. maj 2007 - 01:16 #4
Ok det virker fint.

Jeg har så også en checkbox i den anden form, og skal ligeledes gemme værdien af denne (om den er checked eller ikke) og have det med ved submit af den første form som før..
Det kan jeg jo ikke lave som ved text feltet, da en checbox jo har en value, men er nødt til at vide om den er checked eller ikke.. Hvordan får jeg det med ??
Avatar billede hoejgaard Juniormester
21. maj 2007 - 01:18 #5
checkboxen ser sådan ud :
<td class="td10"><? echo "<input type=\"checkbox\" name=\"ka\" value=\"".ka."\""; if(!empty($row['ka'])) {echo "checked=\"checked\"";} echo ">";?> A - <img src="a.gif"><br><br></td>
Avatar billede roenving Novice
21. maj 2007 - 01:47 #6
Tjah, det kan du vel alligevel:

var ka=document.forms[1].ka;if(ka.checked)this.ka.value=ka.value;

-- og så skal du absolut flytte koden ud i en funktion, derfor er det kun koden ...

-- så bliver det:

<form action="soeg.php" method="post" enctype="multipart/form-data" onsubmit="updateForm(this);">
<input type="hidden" name="overskrift" value="">
<input type="hidden" name="ka" value="">
...

<script type="text/javascript">
function updateForm(f){
  f.overskrift.value = document.forms[1].overskrift.value;
  var ka = document.forms[1].ka;
  if(ka.checked)
    f.ka.value=ka.value;
}
</script>

-- og så tester du bare på samme måde, som i tekstboksen:

<td class="td10"><? echo "<input type=\"checkbox\" name=\"ka\" value=\"".ka."\""; if(!empty($row['ka'])||isset($_POST["ka"])) {echo "checked=\"checked\"";} echo ">";?> A - <img src="a.gif"><br><br></td>
Avatar billede hoejgaard Juniormester
21. maj 2007 - 13:11 #7
Jamen det ser jo også godt ud..:-)
Så er der bare lige den sidste tekstbox, som jeg ikke ved hvorfor værdien ikke bliver overført..Det er denne her, som også er i den anden form :
<tr>
  <td class="td10" width="20%"><br>Beskrivelse:</td>
  <td WIDTH="80%"><br>
    <script type="text/javascript">
    function checkLength(navn,max)
    {
      if (navn.value.length >= max)
        {navn.value = navn.value.substring(0,max-1);}
    }
    </script>
    <textarea name="tekst" onkeydown="checkLength(this,300)" rows="6" cols="50" 
    style="font-size:12px"><?php echo "$row[tekst]"; ?></textarea>
  </td>
</tr>

Har prøvet med "this.tekst.value=document.forms[1].tekst.value;"  med den bliver ikke lagret .. ?
Avatar billede roenving Novice
21. maj 2007 - 14:08 #8
Hrm, så må jeg se dit dokument !o]
Avatar billede hoejgaard Juniormester
21. maj 2007 - 14:26 #9
mener du indholdet af textarea ??
det er ligemeget hvad det indeholder, det kommer ikke med...
Avatar billede hoejgaard Juniormester
21. maj 2007 - 14:35 #10
er der en grænse for hvormange der må være i onsubmit ?? jeg har en del efterhånden....
Avatar billede roenving Novice
21. maj 2007 - 14:38 #11
Næh, det skulle der ikke være, men overskueligheden forsvinder jo med det samme, derfor brugte jeg også en funktion, så det kunne overskues ...

-- men man skal være ganske opmærksom, hvis man skriver koden i en lang linje og så også bruger betingelser, det giver nogle underligheder en gang imellem !-)

-- og det, der er værd at vise er f.eks. hele den onsubmit, der jo nok bør flyttes til en funktion à la den, jeg viste !o]
Avatar billede hoejgaard Juniormester
21. maj 2007 - 14:47 #12
det ser ud som om den der er en grænse, for når jeg fjerner nogle fra onsubmit, så er det okay med textarea feltet....
Avatar billede hoejgaard Juniormester
21. maj 2007 - 14:58 #13
min onsubmit ser sådan ud :
<FORM ACTION="soeg.php" METHOD="POST" enctype="multipart/form-data" onsubmit="this.annoverskrift.value=document.forms[1].annoverskrift.value; this.annstart.value=document.forms[1].annstart.value; this.annslut.value=document.forms[1].annslut.value; this.linkannonce.value=document.forms[1].linkannonce.value; this.anntekst.value=document.forms[1].anntekst.value; this.loen.value=document.forms[1].loen.value; return chkboxvalidate();">
Avatar billede roenving Novice
21. maj 2007 - 15:00 #14
Bruger du en return afbrydes scriptet ...
Avatar billede roenving Novice
21. maj 2007 - 15:04 #15
Men med den mængde, skal du absolut lægge det ud i en funktion, f.eks.

<form action="soeg.php" method="post" enctype="multipart/form-data" onsubmit="updateForm(this);return chkboxvalidate();">

<script type="text/javascript">
function chkboxvalidate(){

}
function updateForm(f){
  with(document.forms[1]){
    f.annoverskrift.value = annoverskrift.value;
    f.annstart.value = annstart.value;
    f.annslut.value = annslut.value;
    f.linkannonce.value = linkannonce.value;
    f.anntekst.value = anntekst.value;
    f.loen.value = loen.value;
  }
}
</script>
Avatar billede hoejgaard Juniormester
21. maj 2007 - 15:05 #16
hvordan kalder jeg så funktionen ??
Avatar billede hoejgaard Juniormester
22. maj 2007 - 00:11 #17
Nå nu lykkedes det næsten.. nu har jeg kun problemer med en tekst editor..
Den kan jeg åbenbart ikke overføre som de andre ??

<tr>
  <td class="td32" width="20%">Annoncetekst:</td>
  <td><script language="JavaScript" type="text/javascript">
      <!--
      //Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
                writeRichText('anntekst', '<?echo "$tekst" ?>', 400, 200, true, 
                false);
      //-->
      </script>
  </td>
</tr>
Avatar billede roenving Novice
22. maj 2007 - 00:18 #18
Tjah, det er et godt spørgsmål, for typisk vil en tekst-editors indhold ligge i flere elementer, bl.a. et textarea, som så måske har et andet navn ...
Avatar billede hoejgaard Juniormester
22. maj 2007 - 00:21 #19
når den bliver submittet ligger den i $_POST[anntekst]
Avatar billede roenving Novice
22. maj 2007 - 00:39 #20
Det er sikkert fordi den netop overføres onsubmit på den anden form, og der aflæses fra en contenteditable iframe e.l. !-)
Avatar billede hoejgaard Juniormester
22. maj 2007 - 00:44 #21
okay kan det ikke lade sig gøre så ??
Avatar billede hoejgaard Juniormester
22. maj 2007 - 00:47 #22
den kaldes således : onsubmit="return submitForm();"

og ser sådan ud:

function submitForm() {
                                //make sure hidden and iframe values are in sync before submitting form
                                  updateRTE('anntekst'); //use this when syncing only 1 rich text editor ("rtel" is name of editor)
                                //updateRTEs(); //uncomment and call this line instead if there are multiple rich text editors inside the form
                                  alert("Submitted value: "+document.myform.rte1.value) //alert submitted value
                                  return true; //Set to false to disable form submission, for easy debugging.
                                                      }
                                //Usage: initRTE(imagesPath, includesPath, cssFile)
                                  initRTE("images/", "", "");
                                //-->
                              </script>
Avatar billede roenving Novice
22. maj 2007 - 00:52 #23
Så prøv:

<form action="soeg.php" method="post" enctype="multipart/form-data" onsubmit="updateForm(this);return chkboxvalidate();">

<script type="text/javascript">
function chkboxvalidate(){

}
function updateForm(f){
  updateRTE('anntekst');
  with(document.forms[1]){
    f.annoverskrift.value = annoverskrift.value;
    f.annstart.value = annstart.value;
    f.annslut.value = annslut.value;
    f.linkannonce.value = linkannonce.value;
    f.anntekst.value = anntekst.value;
    f.loen.value = loen.value;
  }
}
</script>
Avatar billede hoejgaard Juniormester
22. maj 2007 - 01:08 #24
Det ser ud til at virke fint..
Endnu engang tak for din store hjælp !
Fandt ud af, at hvis der er en, som ikke bliver tildelt en værdi som feks : f.annoverskrift.value = annoverskrift.value
så går der ged i det for nogle af de andre også...men det er ok nu..

Læg et svar !
Avatar billede roenving Novice
22. maj 2007 - 01:12 #25
Velbekomme '-)
Avatar billede hoejgaard Juniormester
22. maj 2007 - 01:22 #26
lige et tillægsspørgsmål :
Jeg bruger en $_GET til at overføre værdierne med, men ved ikke om hhv. browser adresse vinduet og $_GET kan klare mange tegn fra feks teksteditor feltet ??
Avatar billede roenving Novice
22. maj 2007 - 01:33 #27
Det er godt nok hurtigt et problem ...

IE kan kun klare (ca. !-) 2083 karakterer i en url, så du kommer meget nemt tæt på den grænse ved omkring 1000 tegn ialt med diverse mellemrum og andre tegn, der skal uri/url-encodes, da de jo så optager enten 3 eller 6 tegn (et mellemrum bliver til %20 med uri-encoding, encoder du selv til et + kan du altså spare to tegn pr. mellemrum !-)

-- og det inkluderer jo også selve action-urlen samt felternes navne, så det kan absolut anbefales at sende den slags form-data med method="post" !o]

-- og tak for point ;~}
Avatar billede hoejgaard Juniormester
29. maj 2007 - 23:09 #28
roenving
jeg har lige en multiple select box hvor jeg også skal have overført værdierne..

<? $mArr=array();
  if(isset($_GET['sprog'])) {
  foreach($_GET['sprog'] as $value) {
  $mArr[$value]=" selected"; } }
  $mSelect='
  <select name="sprog[]" multiple>
  <option value="Achinesisk"'.$mArr[Achinesisk].'>Achinesisk</option>
  <option value="Afrikaans"'.$mArr[Afrikaans].'>Afrikaans</option>
  <option value="Albansk"'.$mArr[Albansk].'>Albansk</option>
  <option value="Amharisk"'.$mArr[Amharisk].'>Amharisk</option>
  </select>'; ?>
<html><body>
<FORM ACTION="soeg.php" METHOD="POST" enctype="multipart/form-data" onsubmit="updateForm(this); return chkboxvalidate();">

                            <script type="text/javascript">
                            function chkboxvalidate()
                            {
                            }
                            function updateForm(f)
                            {
                              updateRTEs();
                              with(document.forms[2])             
                              { f.sprog[].value = sprog[].value;
                              }
                            }
                          </script>
                          <input type="hidden" name="sprog[]" value="">
</form>

<form>
<?php echo $mSelect; ?>
</form>
</body>
</html>

er dette rigtigt : f.sprog[].value = sprog[].value;
Avatar billede roenving Novice
29. maj 2007 - 23:19 #29
-- du skal nok give den et andet navn, og med den slags tegn skal du nok bruge form.elements !-)

<script type="text/javascript">
  function chkboxvalidate(){}
  function updateForm(f){
    updateRTEs();
    f.sprogVal.value = document.forms[1].elements["sprog[]"].value;
  }
</script>
<input type="hidden" name="sprogVal" value="">

-- jeg går ud fra at det er de to eneste formularer på siden, den første er forms[0], den anden forms[1] !o]
Avatar billede hoejgaard Juniormester
29. maj 2007 - 23:31 #30
nej der er faktisk en før dem også..:-)
Avatar billede hoejgaard Juniormester
29. maj 2007 - 23:41 #31
når jeg skriver $_POST[sprogVal] ud, så kommer kun det ene valg af flere ud..
Ved ikke lige hvor det kikser...??
Avatar billede roenving Novice
29. maj 2007 - 23:59 #32
Henter du value fra en selectboks, vil kun een af flere multiple værdier være der ...

-- den tænkte jeg slet ikke på, så jeg overså, at det var en multiple-select ...

-- så bliver det noget i denne stil:

<script type="text/javascript">
  function chkboxvalidate(){}
  function updateForm(f){
    updateRTEs();
    var sel = document.forms[2].elements["sprog[]"], spr = [];
    for(i=0,im=sel.length;im>i;i++){
      if(sel.options[i].selected)
        spr[spr.length] = sel.options[i].value;
    }
    f.sprogVal.value = spr.join(";");
  }
</script>
<input type="hidden" name="sprogVal" value="">

-- så må du så også explode værdien, når du får den ind til dit php-script (hidden inputs er principielt kun til flad tekst, derfor join-tingen !-)
Avatar billede hoejgaard Juniormester
30. maj 2007 - 22:07 #33
skulle dette ikke skrive den ud ??: echo "$_POST['sprogVal']";

Der bliver nelig ikke skrevet noget ud....
Avatar billede hoejgaard Juniormester
30. maj 2007 - 22:10 #34
nå okay det gør der alligevel..
Avatar billede hoejgaard Juniormester
30. maj 2007 - 22:23 #35
er der noget galt her ??
$_GET['sprog'] = explode(" ", $_GET['sprog']); echo "$_GET[sprog]"; exit;

den skriver bare 'array'....
Avatar billede hoejgaard Juniormester
30. maj 2007 - 22:38 #36
ser ud til det virker nu...
Avatar billede roenving Novice
31. maj 2007 - 13:24 #37
¡Muy bueno!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester