tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von ComFreek
  • 1 Beitrag von ComFreek
ERLEDIGT
NEIN
ANTWORTEN
13
ZUGRIFFE
416
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    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!!
     

  2. #2
    threadi threadi ist offline Mitglied Brokat
    Registriert seit
    Dec 2006
    Ort
    Leipzig
    Beiträge
    478
    Eine Möglichkeit wäre:

    Code :
    1
    2
    3
    4
    5
    
    if( check_entries() )
    {
      document.form.id.value = id;
      document.form.submit();
    }
     

  3. #3
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    Öhm... wo baue ich das ein, wenn ich das Formular mit
    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>
    absende?

    Da brauche ich mehr Aufklärung!
     

  4. #4
    threadi threadi ist offline Mitglied Brokat
    Registriert seit
    Dec 2006
    Ort
    Leipzig
    Beiträge
    478
    Anstelle der 2 Zeilen

    Code :
    1
    2
    
    document.form.id.value = id;
        document.form.submit();

    in der Funktion "send".
     

  5. #5
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    Ok, das habe ich probiert. Leider reagiert das Formular dann nicht mehr - es werden keine Daten mehr übertragen.
     

  6. #6
    threadi threadi ist offline Mitglied Brokat
    Registriert seit
    Dec 2006
    Ort
    Leipzig
    Beiträge
    478
    Dann hast Du irgendwas falsch geschrieben würde ich sagen. Ein Link zur Seite wäre interessant.
     

  7. #7
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.363
    Blog-Einträge
    4
    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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  8. #8
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    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>
     

  9. #9
    threadi threadi ist offline Mitglied Brokat
    Registriert seit
    Dec 2006
    Ort
    Leipzig
    Beiträge
    478
    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.
     

  10. #10
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    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>
     

  11. #11
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.363
    Blog-Einträge
    4
    Der Zugriff auf das Input-Objekt ist immer noch falsch.

    Versuche es mal so:
    Code javascript:
    1
    
    document.abc['name[0]'];
    So greifst du auf die Eigenschaft name[0] des Objekts abc zu.
    Mit .form.name[0] greifst du aber fälschlicherweise auf das erste Zeichen des name-Attributs des Form-Tags zu.
    Kleines Beispiel
    greenslot bedankt sich. 
    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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  12. #12
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    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:

    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>
    Bitte einfach mal testen.
     

  13. #13
    greenslot greenslot ist offline Mitglied Bronze
    Registriert seit
    Dec 2010
    Beiträge
    39
    Kann mir niemand weiter helfen?

    Ich habe die Funktion hin und her verschoben und probiert, aber mit der Funktion gibt es einfach kein "insert".
     

  14. #14
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.363
    Blog-Einträge
    4
    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;
      }
    }
    greenslot bedankt sich. 
    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 erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

Ähnliche Themen

  1. Submit-Button zum Überprüfen und Absenden
    Von lumpatzi_v im Forum PHP
    Antworten: 2
    Letzter Beitrag: 23.01.09, 00:05
  2. Formular Absenden
    Von Loveboat im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 24.06.08, 20:39
  3. Formular kontrolliert absenden
    Von FunkyMonkey im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 21.11.07, 21:43
  4. Iframe Formular absenden
    Von Grufy im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 06.05.07, 01:08
  5. Formular absenden?
    Von Warper im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 03.11.03, 20:49