• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Formular mit PHP und Javascript, Abfragebox Ja/Nein

matze-pe

New member
Hallo,
ich finde meinen Fehler nicht, und zwar habe ich beim "Abbrechen" Button eine Abfrage mit Bestätigung Ja/Nein.

Das funktioniert auch, nur seitdem ich das hinzugefügt habe, wird beim drücken des "submit" Button nicht mehr der Name mit übergeben ( name=save oder name=abbruch ), der ist aber wichtig da anhand welcher Button gedrückt wird eine Aktion dahinter steckt.


Seht ihr meinen Fehler?



PHP:
<?php
$barcode = $_POST['barcode'];

echo"
<html>
 <head>
  <title>Stadt Peine - Toner Ausgabe</title>
  <link href='style.css' rel='stylesheet' type='text/css'>
  <script language='Javascript'>
   function Cursorsetzen()
   {
    window.eingabe.barcode.focus();
   }
  </script>
 <head>
 
 <body onLoad='Cursorsetzen()'>
 
 <form method='POST' name='eingabe'>
 
 <table border=0>
  <tr>
   <td colspan='2'><nobr><img src='logo.gif' align='left'><h1>Toner Ausgabe</h1></nobr><br><hr></td>
  </tr>

  <tr>
   <td><b>Barcode einscannen:</b></td>
   <td><input type='text' name='barcode'>   <nobr> <input type='submit' value='hinzufügen'></td>
  </tr></form>";
   
   if($barcode!="")
   {   
	 //Schreiben in TEMP CSV
	 $temp = array($_POST['barcode']);
	 $temp_fp = fopen('temp_daten.csv', 'a');
	 fputcsv($temp_fp, $temp);
	 fclose($temp_fp);   
	
	 // Ausgabe   
     echo "<tr><td colspan='2'><hr><h4>Bereits eingescannte Toner / Patronen:</h4>";
     $datei = fopen("temp_daten.csv", "r");
     $data = fgetcsv($datei, 1000);
     echo "<form method='POST' id='frm' onsubmit='return onSubmit();'><br><ol>";
     while ($data) 
	 {
	  $ausgabe = implode(",", $data);
      echo "<b><li> $ausgabe </li></b><br>";
      $data = fgetcsv($datei, 1000);
	  
	  echo "<input type='hidden' name='barcode_save[]' value='$ausgabe \n'>";
	 }
	 echo "<br><br><input type='submit' name='save' value='Ausgabe abschließen' onclick='senden();'> <input type='submit' name='abbruch' value='Abbrechen' onclick='cancel();'></ol></form></td></tr>";
	 echo "
		<script type='text/javascript'>
		<!--
		var frm = document.getElementById('frm');

		function onSubmit()
		{
			return false;
		}

		function cancel()
		{
			if (confirm('Alle gescannten Artikel werden entfernt!') == true) 
			{
				frm.submit();
			} 
			else 
			{
			}    
		}

		function senden()
		{
		  frm.submit();  
		}

		//-->
		</script>	 
	 ";
	 
	}
	else
	{
	 echo "<tr><td colspan='2'><hr></td></tr>";
	}
	
   if(isset($_POST['save']))
	{
     echo "<div><h4><u>Datei abgespeichert!</u></h4></div><br>";
	 echo"<meta http-equiv='refresh' content='5; url='>";	

	 //Schreiben in Gesamt CSV
		if (file_exists('daten.csv')) 
		{
			file_put_contents('daten.csv', implode("", $_POST['barcode_save']), FILE_APPEND); 
		} 
		else 
		{
			file_put_contents("daten.csv", "Seriennummer\n");
			file_put_contents('daten.csv', implode("", $_POST['barcode_save']), FILE_APPEND); 
		}	 

	 // TEMP CSV löschen
	 unlink('C:\inetpub\wwwroot\import\toner\temp_daten.csv');	 
	}
	
   if(isset($_POST['abbruch']))
	{		 
	 // TEMP CSV löschen
	 unlink('C:\inetpub\wwwroot\import\toner\temp_daten.csv');	 
	}
	
	echo"   
  </tr>
 </table>   
   ";

?>


Viele Grüße
 
Grüße nach Peine (steht im Source-Title),

<input type='submit' name='abbruch' value='Abbrechen' onclick='cancel();'>

Ich verstehe da etwas nicht:

Warum schickst Du bei der cancel()-Funktion ein confirm (auf "true" musst Du nicht explizit prüfen; if(confirm('...')){ ... } reicht!) zwischen, um dann dennoch via submit() zu schicken? Du könntest "cancel" und "senden" mit einer einzigen Flag in einer Funktion zusammenfassen.

Wieso ist das ein submit - kein reset?

Ich frage deshalb, da es sich mir nicht wirklich erschließt - denn Du trennst Verarbeitung (PHP) nicht von Darstellung (HTML). Und das macht es unnötig schlecht zu lesen. :(

Sowas ist "brrrrrr" (aka "bäh"): echo "<b><li> $ausgabe </li></b><br>";

Was passiert eigentlich beim Klick auf "hinzufügen" im Form "eingabe" - wer verarbeitet das? Und wer verarbeitet "senden" korrekt?!

Ich mutmaße, dass Du das an die Datei selbst schickst - und das wäre dann - IMO - ganz schön "dreckig". Vergib lieber je Form das Attribut der verarbeitenden URL - nämlich "action". Dort schreibst Du action="?form=1" bspw. dran und schon weißt Du bei Erhalt, wer es verschickt hat (als äquivalent nimmst Du natürlich noch "?form=2"). In PHP fragst Du für die Verarbeitung auf den $_GET-Parameter. Das ist zwar auch nicht schön, aber so kannst Du Deinen betriebenen Aufwand gering halten.

Dennoch empfehle ich strikte Trennung von PHP und HTML-Darstellung.

Grüße
 
Mal so grundsätzlich: Wenn wir eine JS Frage haben zeigen wir keinen PHP Code sondern den JS Code. Da kommt man ran indem man im Browser rechts klickt -> Quelltext anzeigen. Bitte fürs nächste mal beachten.
 
Zurück
Oben