2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
416
416
EMPFEHLEN
-
Hallo zusammen,
ich habe dieses Formular: http://www.tutorials.de/php/381470-f...-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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
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!!
-
Eine Möglichkeit wäre:
Code :1 2 3 4 5
if( check_entries() ) { document.form.id.value = id; document.form.submit(); }
-
Öhm... wo baue ich das ein, wenn ich das Formular mit
absende?HTML-Code:<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>
Da brauche ich mehr Aufklärung!
-
Anstelle der 2 Zeilen
Code :1 2
document.form.id.value = id; document.form.submit();
in der Funktion "send".
-
Ok, das habe ich probiert. Leider reagiert das Formular dann nicht mehr - es werden keine Daten mehr übertragen.
-
Dann hast Du irgendwas falsch geschrieben würde ich sagen. Ein Link zur Seite wäre interessant.
-
19.10.11 19:45 #7
Erscheinen denn irgendwelche Fehler in der JavaScript-Konsole?
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
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-Code:<!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 :1
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-Code:<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>
-
20.10.11 15:41 #11
Der Zugriff auf das Input-Objekt ist immer noch falsch.
Versuche es mal so:
So greifst du auf die Eigenschaft name[0] des Objekts abc zu.Code javascript:1
document.abc['name[0]'];
Mit .form.name[0] greifst du aber fälschlicherweise auf das erste Zeichen des name-Attributs des Form-Tags zu.
Kleines Beispielmfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Ok, danke! Das funktioniert soweit.
Jetzt springt er aber nicht mehr zu den Aktionen.
Insert wird nicht mehr ausgelöst bzw. angezeigt.
Hier der korrgierte Code:
Bitte einfach mal testen.HTML-Code:<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>
-
Kann mir niemand weiter helfen?

Ich habe die Funktion hin und her verschoben und probiert, aber mit der Funktion gibt es einfach kein "insert".
-
22.10.11 18:01 #14
Ich habe gerade noch einen Fehler gefunden: Du gibst in der Funktion check() niemals true zurück, sodass in send() der IF-Block nie ausgeführt wird.
Du musst einfach noch ein return true am Ende der check()-Funktion anhängen!
Übrigens musst du in deiner check()-Funktion nicht alle erlaubten Zeichen durchgehen, du kannst einfach auf den Charcode prüfen:
Code javascript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
var cc = 0; // curent char code for (var i=0;i<input.length;i++) { cc = input.charCodeAt(i); if ( (cc>=97 && cc<=122) || (cc>=65 && cc<=90) ) { } else { alert('Feld 1\nZahlen sind nicht möglich!'); return false; } }
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
Ähnliche Themen
-
Submit-Button zum Überprüfen und Absenden
Von lumpatzi_v im Forum PHPAntworten: 2Letzter Beitrag: 23.01.09, 00:05 -
Formular Absenden
Von Loveboat im Forum HTML & XHTMLAntworten: 3Letzter Beitrag: 24.06.08, 20:39 -
Formular kontrolliert absenden
Von FunkyMonkey im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 21.11.07, 21:43 -
Iframe Formular absenden
Von Grufy im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 06.05.07, 01:08 -
Formular absenden?
Von Warper im Forum Javascript & AjaxAntworten: 5Letzter Beitrag: 03.11.03, 20:49





Zitieren

Login





