PHP mit JavaScript prüfen?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von librarian, 02.09.2005.

  1. librarian

    librarian Thread Starter MacUser Mitglied

    Beiträge:
    36
    Zustimmungen:
    0
    MacUser seit:
    21.08.2005
    Kann ich ein Formular in einem PHP-Skript vor dem Absenden mit JavaScript prüfen? Hab's ausprobiert, wie bei einem HTML-Formular, aber das funktioniert nicht. Auch probiert body onload="jsFunction();" zu nutzen, aber das hat auch nicht geklappt. Vielleicht aber auch bloß falsch angewendet?
     
  2. HAL

    HAL Gast

    Was möchtest Du denn überprüfen, ob Eingaben vorhanden oder plausibel sind?

    Nachtrag: Wenn Du sowieso in PHP codest, kannst Du das auch ohne
    Java-Script machen, z.b. so:

    PHP:
    <?php
    if (empty($zuname)) {echo ("Bitte Zunamen eingaben!"),exit();}
    ?>

    <p>Ihre Daten:<?php echo ("$zuname"?></p>
     
    Zuletzt von einem Moderator bearbeitet: 02.09.2005
  3. librarian

    librarian Thread Starter MacUser Mitglied

    Beiträge:
    36
    Zustimmungen:
    0
    MacUser seit:
    21.08.2005
    Möchte beides prüfen, und da ich die JavaScript Funktion schon für ein HTML-Formular geschrieben habe, dachte ich, daß ich sie auch für das Formular im PHP-Skript benutzen könnte.
     
  4. lindic

    lindic MacUser Mitglied

    Beiträge:
    197
    Zustimmungen:
    5
    MacUser seit:
    20.11.2004
    Die Überprüfung des Formulares mit Javascript in der PHP-Datei geht genauso wie bei der HTML-Datei, da ja PHP nichts anderes als HTML zurückliefert.

    Da ist wahrscheinlich ein Fehler im Script, am besten du zeigst mal die entsprechenden Codeschnipsel.
     
  5. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.044
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    Richtig, Javascript prüft ja beim Client den Inhalt von HTML-Formularelementen. Somit besteht da eigentlich kein Unterschied. Bei der Frage Prüfung in Javascript/PHP gibt es noch einen wichtigen Aspekt:

    (1) Prüfung in Javascript erfolgt komfortabel beim Client ohne Neuaufruf. Angenehm für User, aber sinnlos bei deaktiviertem Javascript

    (2) Prüfung per PHP erfordert einen erneuten Seitenaufruf um validiern zu können, erfordert aber einen zusätzlichen Automatenstatus. Dafür ist es nicht vom Client abschaltbar.

    Die Methode 2 ist sicherer was die Daten betrifft, die Methode 1 ist in kontrollierbaren Umfeldern komfortabler. Wie immer hat man die Wahl der Qual :)
     
  6. librarian

    librarian Thread Starter MacUser Mitglied

    Beiträge:
    36
    Zustimmungen:
    0
    MacUser seit:
    21.08.2005
    Das ist das Skript:
    PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD 
    HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; 
      charset=iso-8859-1">
      <title>Studentendaten</title>
      <LINK REL="stylesheet" HREF="hausarbeit.css" TYPE="text/css">
        <script language="JavaScript">
           function chkbearbeitungsformular()
                    {
                     if(document.bearbeiten_waehlen.vorname.value == ""){
                     alert("Sie haben den Vornamen nicht angegeben!");
                     document.bearbeiten_waehlen.vorname.focus();
                     return false;
                     }
                     var chkZ = -1;
                     for(i=0;i<document.bearbeiten_waehlen.vorname.value.length;++i)
                     if(document.bearbeiten_waehlen.vorname.value.charAt(i) < "0"
                     || document.bearbeiten_waehlen.vorname.value.charAt(i) > "9")
                     chkZ = 1;
                     if(chkZ == -1) {
                     alert("Bitte im Vornamen-Feld keine Zahlen eingeben!");
                     document.bearbeiten_waehlen.vorname.focus();
                     return false;
                     }
                     if(document.bearbeiten_waehlen.name.value == ""){
                     alert("Sie haben den Nachnamen nicht angegeben!");
                     document.bearbeiten_waehlen.name.focus();
                     return false;
                     }
                     var chkZ = -1;
                     for(i=0;i<document.bearbeiten_waehlen.name.value.length;++i)
                     if(document.bearbeiten_waehlen.name.value.charAt(i) < "0"
                     || document.bearbeiten_waehlen.name.value.charAt(i) > "9")
                     chkZ = 1;
                     if(chkZ == -1) {
                     alert("Bitte im Nachnamen-Feld keine Zahlen eingeben!");
                     document.bearbeiten_waehlen.name.focus();
                     return false;
                     }
                     if(document.bearbeiten_waehlen.b_day.value == ""){
                     alert("Sie haben den Geburtstag nicht angegeben!");
                     document.bearbeiten_waehlen.b_day.focus();
                     return false;
                     }
                     var chkZ = 1;
                     for(i=0;i<document.bearbeiten_waehlen.b_day.value.length;++i)
                     if(document.bearbeiten_waehlen.b_day.value.charAt(i) < "0"
                     || document.bearbeiten_waehlen.b_day.value.charAt(i) > "9")
                     chkZ = -1;
                     if(chkZ == -1) {
                     alert("Bitte im Geburtstag-Feld nur Zahlen eingeben!");
                     document.bearbeiten_waehlen.b_day.focus();
                     return false;
                     }
                     if(i<=7 || i>=9){
                     alert("Sie haben den Geburtstag nicht korrekt eingegeben!");
                     document.bearbeiten_waehlen.b_day.focus();
                     return false;
                     }
                     if(document.bearbeiten_waehlen.mat_nr.value == ""){
                     alert("Sie haben die Matrikelnummer nicht angegeben!");
                     document.bearbeiten.mat_nr.focus();
                     return false;
                     }
                     var chkZ = 1;
                     for(i=0;i<document.bearbeiten_waehlen.mat_nr.value.length;++i)
                     if(document.bearbeiten_waehlen.mat_nr.value.charAt(i) < "0"
                     || document.bearbeiten_waehlen.mat_nr.value.charAt(i) > "9")
                     chkZ = -1;
                     if(chkZ == -1) {
                     alert("Bitte im Matrikelnummer-Feld nur Zahlen eingeben!");
                     document.bearbeiten_waehlen.mat_nr.focus();
                     return false;
                     }
           var vorname = document.bearbeiten_waehlen.vorname.value;
           var name = document.bearbeiten_waehlen.name.value;
           var b_day = document.bearbeiten_waehlen.b_day.value;
           var mat_nr = document.bearbeiten_waehlen.mat_nr.value;
    if(!confirm('Sollten diese Angaben Fehler enthalten, klicken Sie bitte auf Abbrechen und korrigieren Sie sie im Formular: " + vorname + " " + name + " / " + b_day + " / " + mat_nr + " / " + adresse + " / " + plz + " " + wohnort + " / " + land + " / " + phon + " / " + email + " / Durch anklicken von OK werden die Daten in der Datenbank ge&auml;ndert.'))return false;
    else return true;
          }
           </script>  
    </head>

    <body>

    <?php
       
    include ('contact.php');


    $query "SELECT lfd_nr, vorname, name, b_day, mat_nr, adresse, plz, wohnort, land, phon, email FROM studidaten WHERE lfd_nr LIKE '".mysql_escape_string($_POST['auswahl'])."'";
     
    $result mysql_query($query$db);
    if(
    $result && mysql_num_rows($result)>0){
       echo 
    '<h2 align="center">Datens&auml;tze gefunden.</h2>';

          
    ?><?
          while($row=mysql_fetch_object($result)){
    echo '<p align="center">Lfd. Nr.: '.$row->lfd_nr.'</p>';
          ?>
          
    <form name="bearbeitungsformular"
          action="bearbeiten.php" method="post"
          onsubmit="return chkbearbeitungsformular()"
          align="center">
    <table align="center" cellpadding="2">
          <tr>
             <td><input type="hidden" name="lfd_nr" value="<?=$row->lfd_nr?>" /></td>
          </tr>
          <tr>
             <td><label><p id="tabelle" >Vorname</p></label></td>                  
             <td><input type="text" name="vorname" value="<?=$row->vorname?>" /></td>
          </tr>
          <tr>
             <td><label><p id="tabelle" >Name</p></label></td>                  
             <td><input type="text" name="name" value="<?=$row->name?>" /></td>
          </tr>
          <tr>
             <td><label><p id="tabelle" >Geburtstag</p></label></td>                  
             <td><input type="text" name="b_day" value="<?=$row->b_day?>" /></td>
          </tr>
          <tr>
             <td><label><p id="tabelle" >Matrikelnr.</p></label></td>                  
             <td><input type="text" name="mat_nr" value="<?=$row->mat_nr?>" /></td>
          </tr>
       </table> 
       <p id="tabelle" align="center">*Geben Sie das Geburtsdatum bitte ohne Punkte, o.a., wie folgt ein: <br>JJJJMMTT (z.B. 1. M&auml;rz 1982: 19820301)<br>**Geben Sie die vollst&auml;ndige Telefonnummer mit Vorwahl bitte ohne Leerstellen<br> oder trennende Zeichen, wie Kommata, Gedanken- oder Schr&auml;gstriche an.</p>

    </form>
          <?
    }
    ;
    }

    else {
       echo "Keine Datens&auml;tze gefunden.".mysql_error();
    }
      
    mysql_close($db);
    ?>
    </body>
    </html>
     
    Zuletzt bearbeitet: 02.09.2005
  7. dms

    dms Gast

    Wird denn kein JS-Fehler ausgegeben? Ansonsten mach mal ein alert am Anfang der Funktion chkbearbeitungsformular(). Dann siehst Du ob sie aufgerufen wird. Das mit dem onsubmit muss eigentlich funktionieren.
     
  8. librarian

    librarian Thread Starter MacUser Mitglied

    Beiträge:
    36
    Zustimmungen:
    0
    MacUser seit:
    21.08.2005
    Nein, es wird kein Fehler ausgegeben. Auf das alert am Anfang der Funktion chkbearbeitungsformular() hin wird aber auch nichts ausgegeben. Sie wird wohl nicht aufgerufen, aber ich habe keine Ahnung warum. Kann mir jemand helfen?
     
  9. dms

    dms Gast

    Ganz sicher? Das ist eigentlich die einzige Möglichkeit warum ein alert nicht ausgegeben wird.
    Öffne die Datei mal im Firefox/Opera und schau Dir den Inhalt der JavaScript-Konsole an.
     
  10. librarian

    librarian Thread Starter MacUser Mitglied

    Beiträge:
    36
    Zustimmungen:
    0
    MacUser seit:
    21.08.2005
    Danke, das hat geholfen.
     
Die Seite wird geladen...
Ähnliche Themen - PHP JavaScript prüfen
  1. KrisAusEU
    Antworten:
    7
    Aufrufe:
    812
    Rupp
    11.01.2012
  2. jan
    Antworten:
    0
    Aufrufe:
    761
  3. t.bakr
    Antworten:
    2
    Aufrufe:
    2.063
    QBFinest
    15.02.2008
  4. gardenexpie
    Antworten:
    8
    Aufrufe:
    3.325
  5. gardenexpie
    Antworten:
    1
    Aufrufe:
    746