Formular überprüfen vor dem Absenden ?

greenslot

Mitglied
Hallo zusammen,

ich habe dieses Formular: http://www.tutorials.de/php/381470-formular-daten-eine-datenbank-schreiben-aendern-loeschen.html
Und nun würde ich gerne die Felder entsprechend überprüfen und habe mir dazu einen Code-Schnipsel gesucht und etwas erweitert.

Nach dem Absenden des Formulars wird diese Funktion geladen:
Code:
function send(action,id) {

	if(action==0) {
		if (confirm("Neuen Namen eintragen?"))
			document.form.action.value = "insert";
		else
			return;
		}

	else if(action==1)
		document.form.action.value = "update";

	else if(action==2) {
		if (confirm("Name mit id " + id + " löschen?"))
			document.form.action.value = "delete";
		else
			return;
		}
	
	document.form.id.value = id;
	document.form.submit();
}

Aber wie baue ich die Verzweigungen in die insert und update Aktion ein?

Code:
function check_entries() {
	
	var strErrors='';
	
	if (document.Formular.feld1.value=="")
	strErrors += "Feld 1 ist leer\n";
	
	var input=document.Formular.feld1.value;
	var possible_character="ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöü";
	for (var i=0;i<input.length;i++) {
		if (possible_character.indexOf(input.charAt(i))<0) {
			alert('Feld 1\nZahlen sind nicht möglich!');
			return false;
		}
	}
	
	if (document.Formular.feld2.value=="")
	strErrors += "Feld 2 ist leer\n";
	
	if (document.Formular.feld3.value.length<5)
    strErrors += "Feld 3 ist zu kurz\n";
	
	if (strErrors.length>0) {
    alert("Festgestellte Probleme: \n\n"+strErrors);
    return(false);
  }
	
}

Wäre klasse, wenn mir jemand erklären könnte, wie ich erst überprüfen kann, ob die Felder korrekt ausgefüllt sind und dann die Frage erscheint, ob der Name eingetragen oder geändert werden soll.

Vielen Dank!!
 
Öhm... wo baue ich das ein, wenn ich das Formular mit
HTML:
<a href="javascript:send(0,0);">eintragen</a>

<a href="javascript:send(1,<?php echo $dataset['id']; ?>);">ändern</a> | <a href="javascript:send(2,<?php echo $dataset['id']; ?>);">löschen</a>
absende?

Da brauche ich mehr Aufklärung! :)
 
Hier noch mal der komplette Code.

Die Fehlerkonsole meldet:
Fehler: input is undefined
Quelldatei: http://localhost/test/index2.php
Zeile: 49


Zeile 49 ist: var possible_character="ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöü";

Was haut da mit der Übergabe nicht hin?

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


<script type="text/javascript">

function check() {

	var strErrors='';
	
	if (document.form.name.value=="")
	strErrors += "Feld 1 ist leer\n";
	
	var input=document.form.name.value;
	var possible_character="ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöü";
	for (var i=0;i<input.length;i++) {
		if (possible_character.indexOf(input.charAt(i))<0) {
			alert('Feld 1\nZahlen sind nicht möglich!');
			return false;
		}
	}
	
	if (document.form.phone.value=="")
	strErrors += "Feld 2 ist leer\n";
	
	if (strErrors.length>0) {
    alert("Festgestellte Probleme: \n\n"+strErrors);
    return(false);
  }

}

function send(action,id) {

	if(action==0) {
		if (confirm("Neuen Namen eintragen?"))
			document.form.action.value = "insert";
		else
			return;
	}
	
	else if(action==1)
		document.form.action.value = "update";

	else if(action==2) {
		if (confirm("Name mit id " + id + " löschen?"))
			document.form.action.value = "delete";
		else
			return;
		}
	
	if (check()) {
          document.form.id.value = id;
 	  document.form.submit();
	}
	
}

</script>

</head>
<body>

/* Datenbank-Verbindungsdaten */

<?php
/* Aktionen */
if(isset($_POST["action"])) {

/* Neuer Eintrag */
	if($_POST["action"]=="insert") {
		$select = "INSERT INTO names (name, phone, active) VALUES ('" . $_POST["name"][0] . "', '" . $_POST["phone"][0] . "', 'no')";
		mysql_query($select);
		echo $select;
		header("Location: input.php"); /* Browser umleiten */
	}

/* Eintrag ändern */
	else if($_POST["action"]=="update") {
		$id = $_POST["id"];
		$select = "UPDATE names SET name = '" . $_POST["name"][$id] . "', phone = '" . $_POST["phone"][$id] . "', active = '" . $_POST["active"][$id] . "' WHERE id = '$id'";
		mysql_query($select);
	}
	
/* Eintrag löschen */
	else if($_POST["action"]=="delete")	{
		$select = "DELETE FROM names WHERE id = '" . $_POST["id"] . "'";
		mysql_query($select);
		header("Location: input.php"); /* Browser umleiten */
	}

}
?>

<!-- Formular -->

<form name="form" action="index2.php" method="post">
<input name="action" type="hidden" />
<input name="id" type="hidden" />

<table border="1">
	<tr>
		<td>id</td>
		<td>Name</td>
		<td>Telefonnummer</td>
		<td>Aktiv</td>
		<td><em>Aktion</em></td>
	</tr>
	<tr> <!-- Neuer Eintrag -->
		<td></td>
		<td><input name="name[0]" size="50" /></td>
		<td><input name="phone[0]" size="50" /></td>
		<td>ja <input type="radio" name="" value="" disabled="disabled" /> nein <input type="radio" name="" value="" disabled="disabled" checked="checked" /></td>
		<td><a href="javascript:send(0,0);">eintragen</a></td>
	</tr>
<?php
$select = "SELECT id, name, phone, active FROM names ORDER BY id DESC";
$result = mysql_query($select);
if (!$result) {die('Fehler: ' . mysql_error());}
while ($dataset = mysql_fetch_assoc($result)) {
$id = $dataset["id"];
?>
	<tr> <!-- Einträge anzeigen -->
		<td><?php echo $dataset['id']; ?></td>
		<td><input name="name[<?php echo $id; ?>]" value="<?php echo $dataset['name']; ?>" size="50" /></td>
		<td><input name="phone[<?php echo $id; ?>]" value="<?php echo $dataset['phone']; ?>" size="50" /></td>
		<td>
		ja <input type="radio" name="active[<?php echo $id; ?>]" value="yes" <?php if ($dataset['active'] == 'yes') {echo 'checked="checked"';} ?> />
		nein <input type="radio" name="active[<?php echo $id; ?>]" value="no" <?php if ($dataset['active'] == 'no') {echo 'checked="checked"';} ?> />
		</td>
		<td><a href="javascript:send(1,<?php echo $dataset['id']; ?>);">ändern</a> | <a href="javascript:send(2,<?php echo $dataset['id']; ?>);">löschen</a></td>
	</tr>
<?php
}
?>
</table>

</form>

</body>
</html>
 
Nein, es sollte diese Zeile sein:

Code:
var input=document.form.name.value;

Denn in deinem Formular gibt es kein Formularelement mit dem Namen "name". Nur scheinbar eine Menge Formulare mit dem Namen "name[xy]". Genau kann man das nicht sagen, da Du hier den PHP-Code zeigst statt den erzeugten HTML-Code. Auf jeden Fall musst Du o.g. Zeile anders schreiben, mit Bezug auf das Formularfeld was Du ansprechen willst und was auch existiert.
 
Ich habe das noch mal gekürzt und die Datenbankgeschichte erstmal raus genommen.

Die Formularelemente habe ich entsprechend geändert, es erfolgt aber weiterhin keine Eingabe.

Mit der 0 müssten ja das mit dem Eintrag klappen, oder?

HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<script type="text/javascript">

function check() {

	var strErrors='';
	
	if (document.form.name[0].value=="")
	strErrors += "Feld 1 ist leer\n";
	
	var input=document.form.name[0].value;
	var possible_character="ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöü";
	for (var i=0;i<input.length;i++) {
		if (possible_character.indexOf(input.charAt(i))<0) {
			alert('Feld 1\nZahlen sind nicht möglich!');
			return false;
		}
	}
	
	if (document.form.phone[0].value=="")
		strErrors += "Feld 2 ist leer\n";
	
	if (strErrors.length>0) {
		alert("Festgestellte Probleme: \n\n"+strErrors);
    return(false);
  }

}

function send(action,id) {

	if(action==0) {
		if (confirm("Neuen Namen eintragen?"))
			document.form.action.value = "insert";
		else
			return;
	}
	
	else if(action==1)
		document.form.action.value = "update";

	else if(action==2) {
		if (confirm("Name mit id " + id + " löschen?"))
			document.form.action.value = "delete";
		else
			return;
		}
	
	if ( check() ) {
      document.form.id.value = id;
	  document.form.submit();
	}

	
}

</script>

</head>
<body>

<?php
/* Aktionen */
if(isset($_POST["action"])) {

/* Neuer Eintrag */
	if($_POST["action"]=="insert") {
		echo "insert ******";
	}

/* Eintrag ändern */
	else if($_POST["action"]=="update") {
		echo 'update ******';
	}
	
/* Eintrag löschen */
	else if($_POST["action"]=="delete")	{
		echo 'delete ******';
	}

}
?>

<!-- Formular -->

<form name="form" action="test.php" method="post">
<input name="action" type="hidden" />
<input name="id" type="hidden" />

<table border="1">
	<tr>
		<td>id</td>
		<td>Name</td>
		<td>Telefonnummer</td>
		<td>Aktiv</td>
		<td><em>Aktion</em></td>
	</tr>
	<tr> <!-- Neuer Eintrag -->
		<td></td>
		<td><input name="name[0]" size="50" /></td>
		<td><input name="phone[0]" size="50" /></td>
		<td>ja <input type="radio" name="" value="" disabled="disabled" /> nein <input type="radio" name="" value="" disabled="disabled" checked="checked" /></td>
		<td><a href="javascript:send(0,0);">eintragen</a></td>
	</tr>
</table>

</form>

</body>
</html>
 
Zurück