# Formular nicht senden bei Aktualisierung



## vamp79 (24. Oktober 2004)

Hallo zusammen,

ich habe ein script mit dem der User Daten in die Datenbank laden kann...

Eine Überprüfung der einzelnen Felder hab ich schon hinbekommen, allerdings schickt sich das Formular immernoch leer ab wenn man die Seite öffnet oder auf aktualisieren klickt.

Also sobald man 5 mal auf aktualisieren klickt hat man 5 leere Einträge in der Datenbank   

kann man das irgendwie verhindern?

so sieht der code meines formulars aus:


```
<script type="text/javascript">
<!--
function chkFormular()
{
 if(document.Formular.name.value == "")  {
   alert("Bitte einen Zutatennamen eingeben!");
   document.Formular.name.focus();
   return false;
  }
 if(document.Formular.protein.value == "") {
   alert("Bitte den Proteinwert eingeben!");
   document.Formular.protein.focus();
   return false;
  }
 if(document.Formular.fett.value == "") {
   alert("Bitte den Fettwert eingeben!");
   document.Formular.fett.focus();
   return false;
  }
 if(document.Formular.kohl.value == "") {
   alert("Bitte den Kohlenhydrathewert eingeben!");
   document.Formular.kohl.focus();
   return false;
  }
 if(document.Formular.rohf.value == "") {
   alert("Bitte den Rohfaserwert eingeben!");
   document.Formular.rohf.focus();
   return false;
  }
 if(document.Formular.preis.value == "") {
   alert("Bitte einen Durchschnittspreis eingeben!");
   document.Formular.preis.focus();
   return false;
  } 
  if(document.Formular.max_menge.value == "") {
   alert("Bitte die Maximale Menge eingeben!");
   document.Formular.max_menge.focus();
   return false;
  }
}
//-->
</script>


<form name="Formular" action="mixrechner.php?do=test" method="POST" OnSubmit="return chkFormular()">

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
	<td class="tcat">Zutaten Upload</td>
</tr>
<tr>
  <td class="alt2">
     <table width="23%"  border="1" align="center">
       <tr>
	 	 <td height="35"><div align="left">&nbsp;Zutat:</div></td>
          <td><div align="center"><input type="Text" name="name" size="25"></div></td>
       </tr>
       <tr>
         <td height="35"><div align="left">&nbsp;Protein:</div></td>
          <td><div align="center"><input type="Text" name="protein" size="25"></div></td>
       </tr>
       <tr>
         <td height="35"><div align="left">&nbsp;Fett:</div></td>
        <td><div align="center"><input type="Text" name="fett" size="25"></div></td>
      </tr>
      <tr>
        <td height="35"><div align="left">&nbsp;Kohlenhydrathe:</div></td>
        <td><div align="center"><input type="Text" name="kohl" size="25"></div></td>
      </tr>
      <tr>
        <td height="35"><div align="left">&nbsp;Rohfaser:</div></td>
        <td><div align="center"><input type="Text" name="rohf" size="25"></div></td>
      </tr>
	  <tr>
        <td height="35"><div align="left">&nbsp;Preis:</div></td>
        <td>          
            <div align="center"><input type="Text" name="preis" size="25"></div></td>
      </tr>
	  <tr>
        <td height="35"><div align="left">&nbsp;Max. Menge:</div></td>
        <td>          
            <div align="center"><input type="Text" name="max_menge" size="25"></div></td>
      </tr>
    </table>
      <div align="center">
	    <input type="Submit" name="submit" value="Formular senden">
        <input name="Submit2" type="reset" value="L&ouml;schen">
      </div></td>
</tr>
</table>
</form>
```

Wäre nett wenn mir jemand helfen könnte

Vielen Dank schon mal und viele Grüße

Markus


----------



## Tobias Menzel (24. Oktober 2004)

Hi,

verweist Du mit action auf die selbe Seite (die Seite, in der das Formular steht)? Dann gib im PHP-Script nach dem Update (wenn Daten gesendet wurden) das Formular einfach nicht mehr aus (Erfordert allerdings von Anfang an die Ausgabe des Formulars mit PHP).

Gruß

.


----------



## vamp79 (24. Oktober 2004)

Hallo Datic

sorry, hätte ich noch mit dabeischreiben müssen.....

ich bearbeite gerade ne eigene seite fürd vb3 und da habe ich ne php datei und ein template. das was du oben gesehen hast, also das formular ist das template...

hier hab ich dir nochmal die php angehängt, oder besser der teil der für das Formular zuständig ist


```
if ($_REQUEST['do'] == 'test')
{

$DB_site->query("INSERT INTO " . TABLE_PREFIX . "zzz_mix_zutaten_user 
(username, protein, fett, kohl, rohf, preis, max_menge) 
			
VALUES 

('" . addslashes(htmlspecialchars_uni($_POST['name'])) . "', '" . addslashes(htmlspecialchars_uni($_POST['protein'])) . "', '" . addslashes(htmlspecialchars_uni($_POST['fett'])) . "', '" . addslashes(htmlspecialchars_uni($_POST['kohl'])) . "', '" . addslashes(htmlspecialchars_uni($_POST['rohf'])) . "', '" . addslashes(htmlspecialchars_uni($_POST['preis'])) . "', '" . addslashes(htmlspecialchars_uni($_POST['max_menge'])) . "')
		
		");
	



	// draw cp nav bar
				construct_usercp_nav('usergroups');
				$navbits[''] = 'Private Zutaten Uploaden';
				$templatename = 'mixrechner_zutaten_upload';

}
```

kannst du mir vielleicht jetzt weiterhelfen, leider habe ich nicht soo viel ahnung von PHP

Vielen Dank schon mal

Viele Grüße

Markus


----------



## Tobias Menzel (24. Oktober 2004)

Hi,

interessanter wäre der Teil, in dem das Formular ausgegeben wird... allerdings kommt mir grade die Idee, dass ich Blödsinn geredet habe: Wenn die Daten (von wo auch immer) an Dein Script gesendet werden und Du aktualisierst die Seite, werden die Informationen ggf. in jedem Fall noch einmal gesendet. Abhilfe schaffen täte also eine Überprüfung, ob Daten von diesem Referer, in dieser Session etc. schon gesendet (und eingefügt) wurden. Dazu wendest Du Dich aber besser ans PHP-Forum (ich bin auch nicht besonders fit in PHP, zumindest nicht aus dem Kopf, und die Referenz durchforsten will ich jetzt auch nicht). 

Gruß

P.S.: vielleicht dient Dir "reloadsperre" hier als Suchbegriff


----------



## vamp79 (24. Oktober 2004)

Hallo

schade, ich dacht es gibt einen art code, den man ins formular einbauen kann, der dieses abschicken verhindert (evtl. ein javascript)...

aber wie funktioniert es den wenn jemand keine php seite hat und ein formular zum beispiel an eine emailadresse abschickt, dort funktioniert es ja auch, sonst würde ich bei 10 mal aktualisieren ja auch 10 emails verschicken.

hmmmm... schon seltsam, aber scheint doch etwas schwieriger zu werden....

trotzdem vielen dank für deine hilfe

Viele Grüße

Markus


----------



## HUBBLE (25. Oktober 2004)

Ich weiß jetzt nicht, ob das funktioniert, aber ich verschicke meine Formulare nie mit ängehängter Variable. Versuch es doch mal so:


```
<form name="Formular" action="mixrechner.php" method="POST" OnSubmit="return chkFormular()"><INPUT TYPE="hidden" NAME="do" VALUE="test">
```


----------

