Formular trennen in PHP und HTML

Alles, was PHP betrifft, kann hier besprochen werden.

Formular trennen in PHP und HTML

Postby airis » 09. December 2004 15:07

Hallo,
ich habe ein Formular welches in PHP ohne Probleme arbeitet.
Nun möchte ich aber in der Formularseite einiges mit Hilfe von Java-Script
überprüfen (welches für sich auch funzt) und dazu das Script in eine PHP-Seite und eine HTML-Seite trennen, was aber nicht so richtig funzt.
Es bleibt nach dem Betätigen des Absende-Buttons kleben und es passiert nichts.
Der Beginn im HTML-Script sieht folgendermaßen aus:
Code: Select all
<form action="modi.php" method="post" name="Form1" onSubmit="return allRight()">

In der modi.php habe ich die modi.html includet.
Ist das richtig, mache ich etwas falsch oder hat jemand ein Muster-Beispiel für mich, wie man PHP und HTML sauber trennt?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby airis » 10. December 2004 08:28

HIlferuf,

ist den niemand zu einer Auskunft bereit.
Ich komme nicht weiter und benötige dringend Hilfe. Habe auch schon einiges zur Trennung von PHP und HTML gelesen, es geht aber immer in die Richtung Templates.
Kann mir jemand helfen und sagen wie ich eine Seite sauber in PHP und HTML trennen kann?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby borschtel1 » 10. December 2004 13:00

wie du schon selber sagst, bleibt da wohl nur ein template-system.

ob du dir nun selber ein kleines schreibst oder eines der fertigen benutzt, ist dir überlassen.

wenn man dir bei deinem problem helfen soll, dann musst du schon mehr informationen posten. aus dem oben angegbenen geht nicht hervor was in deinen scripten passiert und was sie bezwecken.


gruß
ThorstenT
http://www.logospiel.de - Das Spiel mit den Logos
borschtel1
 
Posts: 29
Joined: 27. May 2004 11:29

Postby airis » 11. December 2004 07:11

Hi borschtel1.
das bringt mich nicht wirklich weiter. Es muss doch möglich sein ohne ein Template auszukommen. Hier mal ein Auszug aus meinem Code:
Modi.html:

Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MODI</title>
<SCRIPT LANGUAGE = "JavaScript">
<!--
 if (document.images)
 {
  bild0 = new Image(13,13);
  bild0.src = "stern_aus.gif";
  bild1 = new Image(13,13);
  bild1.src = "stern_an.gif";
 }

 function testFIRSTNAME()
 {
  var bild = document['img03'];
  if(t1.value.length == 0)
  {
  bild.src = bild1.src;
    return false;
  }
  else
  {
   bild.src = bild0.src;
     return true;
   }
 }

 function testLASTNAME()
 {
  var bild = document['img03'];
  if(t2.value.length == 0)
  {
  bild.src = bild1.src;
    return false;
  }
  else
  {
   bild.src = bild0.src;
     return true;
   }
 }

 function allRight()
 {
  var retVal = true;
         if (retVal)
      retVal = testFIRSTNAME();
      if (retVal == false)
      alert("Sie haben Ihren Vornamen noch nicht eingegeben!");

         if (retVal)
      retVal = testLASTNAME();
      if (retVal == false)
      alert("Sie haben Ihren Namen noch nicht eingegeben!");
  return retVal;
 }
 
 function bestaetigung()
 {
  var Vorname=document.Form1.Vorname.value
  var Name=document.Form1.Name.value


      daten="Vorname: " + Vorname + ",\n"
      daten=daten + "Name: " +  Name +".\n"


          neu= open("", "anzeige", "width=640,height=350");
      kette= neu.document;
      kette.open();
      kette.write("<html><head><title> Bestätigung</title><body>");
      kette.write("<p align='center'><font color='red' face='arial' size='2'><b>Hier können Sie Ihre eingegebenen Daten nochmals überprüfen,</b></font>");
      kette.write("<br><font color='red' face='arial' size='2'>wenn alle Daten richtig sein sollten dann drücken Sie auf abschicken</font><p>");
      kette.write("<p align='center'><form action='modi.php' method='post' enctype='text/plain'><textarea name='Datenfeld' rows=10 cols=50>");
      kette.write(daten);
      kette.write("</textarea><br><input type='button' onclick='window.close()' value='Abbrechen'> ");
      kette.write("<INPUT type='submit'  align = 'MIDDLE' value='Abschicken' ></form></head></body></html>");
 }
// -->
</SCRIPT>
</head>
<body onLoad="this.document.Form1.Vorname.focus();" leftMargin="0" topMargin="0" MARGINWIDTH="0" MARGINHEIGHT="0"><br>
 <pre>
   <form  name="Form1" onSubmit="return allRight()">
    <input type="hidden" name="action" value="insert">
<table border=0 align=center cellspacing=0 cellpadding=0 class=bmborder width="620">

              <tr>
                  <td class=bm2 align=right>&nbsp;</td>
             </tr>
              <tr>
               <td class=bm2><div align="center"><table border="0"  width="620">
           <tr>
               <td class=bm2 align=right>&nbsp;</td>
           </tr>
             <tr>
                 <td class=bm2 align=right><font face="Arial" size="2" color="#000000">
                 <img src="stern_an.gif" alt="" width="13" height="13" border="0" name="img01" id="img01">
                 Vorname:</font>
                 </td>
                 <td class=bm2>
                 <input type="text" name="Vorname" maxlength="50" size="40" class="bm5" onChange="testVorname()">
                 </td>
              </tr>
              <tr>
                  <td class=bm2 align=right><font face="Arial" size="2" color="#000000">
                  <img src="stern_an.gif" alt="" width="13" height="13" border="0" name="img02" id="img02">
                  Name:</font>
                  </td>
                  <td class=bm2>
                  <input type="text" name="Name" maxlength="50" size="40" class="bm5" onChange="testName()">
                  </td>
               </tr>
               
              <tr>
              <td class=bm2 colspan=2 align=center>
              <input type="button"  value="Eintragen" class="bm5"  onClick="bestaetigung()" >
              <input type="reset" value="Zurücksetzen" class="bm5"><br> 
              </td>
         </tr>
    </td>
   </td>
 </tr>
</table>
</table>
</pre>
               
<script type="text/javascript">
<!--
    var t1=document.Form1.Vorname;
    var t2=document.Form1.Name;
//-->
</script>
</body>
</html>
 


modi.php:
Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd class=bm2 HTML 4.0 Transitional//EN">

<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body><br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
<?php
include ("connect.inc.php");


if (isset($action) && ($action == "insert") ) {

$Firstname = $_POST["FIRSTNAME"];
$Lastname= $_POST["LASTNAME"];


$sql = "insert into address (FIRSTNAME, LASTNAME )
        values ('$Firstname', '$Lastname')";
mysql_query($sql) or die("DB-Abfrage <b>$sql</b> ist fehlgeschlagen");
echo '<p>Vielen Dank,Ihre Daten wurden erfasst.</p>';
}
else
{


?>
<?php
}
?>
</body>
</html>


Ich habe auch versucht die Modi.html in PHP zu includieren, bringt mich aber auch nicht weiter.
Vieleicht ist da draussen jemand, der mir einen Tipp geben kann.

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Re: Formular trennen in PHP und HTML

Postby borschtel1 » 13. December 2004 10:27

airis wrote:Nun möchte ich aber in der Formularseite einiges mit Hilfe von Java-Script
überprüfen (welches für sich auch funzt) und dazu das Script in eine PHP-Seite und eine HTML-Seite trennen, was aber nicht so richtig funzt.


Du schreibst, dass du HTML und PHP trennen willst. Warum machst du es dann nicht?
Was hat das HTML in deiner PHP-Datei zu suchen?

Gucke dir mal von der Seite, die du mit diesem Skript generierst, den Quelltext an. Du inkludierst, fügst also in der php-Datei, wo das Forumlar anfängt, anstatt formularspezifische HTML-Tags, ein komplettes HTML-Dokument ein. Das kann ja gar nicht funktionieren.

Wenn Du den den Code trennen willst, was eine gute Idee ist, dann gucke dir Tutorials über Templates an. Dir fehlen einfach die Grundlagen zur Trennenung des Codes. Und das hier zu erläutern, würde zu weit führen.

Code: Select all
das bringt mich nicht wirklich weiter. Es muss doch möglich sein ohne ein Template auszukommen.


Ich habe dir ja nicht gesagt, dass du gleich auf ein System wie Smarty setzen sollst. Sobald du die Daten trennst, hast du ja schon ein gewisses Template. In der Datei, in der der HTML-Output steht, werden nur Variablen eingefügt, die in einer anderen Datei berechnet werden.
Somit gibt dir die HTML-Datei immer das gleiche Design aus, aber die Daten ändern sich darin.

Gruß
ThorstenT

PS: Warum überprüfst du die Eingaben mit Java-Script, wenn Du sowieso PHP benutzen willst? Vermeide die Verwendung von Java-Script, da du so die Leute ausschließt, die Java-Script deaktiviert haben. Außerdem ist die serverseitige Validierung sicherer, weil man auf dem Client den Quellcode verändern kann und dann deine Überprüfung austricksen kann.
http://www.logospiel.de - Das Spiel mit den Logos
borschtel1
 
Posts: 29
Joined: 27. May 2004 11:29

Postby airis » 15. December 2004 01:03

Hallo Thorsten,

habe nun mein Script (ich hoffe sauber) getrennt. Den Javascript möchte ich hauptsächlich aus optischen Kontrollgründen einsetzen (siehe stern_aus.gif und stern_an.gif). Ich habe vieleicht zu kompliziert gedacht, es war halb so wild. Nun habe ich allerdings ein Problem, das zwar eine Database-Tabellenzeile erzeugt wird, sie aber leer ist . Keine Ahnung warum.
Hier nochmals meine Scripts:
modi.html
Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MODI</title>
<SCRIPT LANGUAGE = "JavaScript">
<!--
 if (document.images)
 {
  bild0 = new Image(13,13);
  bild0.src = "stern_aus.gif";
  bild1 = new Image(13,13);
  bild1.src = "stern_an.gif";
 }

 function testFIRSTNAME()
 {
  var bild = document['img01'];
  if(t1.value.length == 0)
  {
  bild.src = bild1.src;
    return false;
  }
  else
  {
   bild.src = bild0.src;
     return true;
   }
 }

 function testLASTNAME()
 {
  var bild = document['img02'];
  if(t2.value.length == 0)
  {
  bild.src = bild1.src;
    return false;
  }
  else
  {
   bild.src = bild0.src;
     return true;
   }
 }

 function allRight()
 {
  var retVal = true;
         if (retVal)
      retVal = testFIRSTNAME();
      if (retVal == false)
      alert("Sie haben Ihren Vornamen noch nicht eingegeben!");

         if (retVal)
      retVal = testLASTNAME();
      if (retVal == false)
      alert("Sie haben Ihren Namen noch nicht eingegeben!");
  return retVal;
 }

 function bestaetigung()
 {
  var FIRSTNAME=document.Form1.FIRSTNAME.value
  var LASTNAME=document.Form1.LASTNAME.value


      daten="Vorname: " + FIRSTNAME + ",\n"
      daten=daten + "Name: " +  LASTNAME +".\n"


          neu= open("", "anzeige");
      kette= neu.document;
      kette.open();
      kette.write("<html><head><title>Bestätigung</title><body>");
      kette.write("<p align='center'><font color='red' face='arial' size='2'><b>Hier können Sie Ihre eingegebenen Daten nochmals überprüfen,</b></font>");
      kette.write("<br><font color='red' face='arial' size='2'>wenn alle Daten richtig sein sollten, dann drücken Sie auf Eintragen</font><p>");
      kette.write("<p align='center'><form action='modi.php' method='post' name='Form1'><input type='hidden' name='action' value='insert'><textarea name='Datenfeld' rows=10 cols=50>");
      kette.write(daten);
      kette.write("</textarea><br><INPUT type='submit' align='MIDDLE' value='Eintragen' name='insert'>");
      kette.write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='button' onclick='window.close()' value='Abbrechen'></form></head></body></html>");
      kette.close()
  }
// -->
</SCRIPT>
</head>
<body onLoad="this.document.Form1.FIRSTNAME.focus();" leftMargin="0" topMargin="0" MARGINWIDTH="0" MARGINHEIGHT="0"><br>
 <pre>
   <form  name="Form1">

<table border=0 align=center cellspacing=0 cellpadding=0 class=bmborder width="620">

              <tr>
                  <td class=bm2 align=right>&nbsp;</td>
             </tr>
              <tr>
               <td class=bm2><div align="center"><table border="0"  width="620">
           <tr>
               <td class=bm2 align=right>&nbsp;</td>
           </tr>
             <tr>
                 <td class=bm2 align=right><font face="Arial" size="2" color="#000000">
                 <img src="stern_an.gif" alt="" width="13" height="13" border="0" name="img01" id="img01">
                 Vorname:</font>
                 </td>
                 <td class=bm2>
                 <input type="text" name="FIRSTNAME" maxlength="50" size="40" class="bm5" onChange="testFIRSTNAME()">
                 </td>
              </tr>
              <tr>
                  <td class=bm2 align=right><font face="Arial" size="2" color="#000000">
                  <img src="stern_an.gif" alt="" width="13" height="13" border="0" name="img02" id="img02">
                  Name:</font>
                  </td>
                  <td class=bm2>
                  <input type="text" name="LASTNAME" maxlength="50" size="40" class="bm5" onChange="testLASTNAME()">
                  </td>
               </tr>

              <tr>
              <td class=bm2 colspan=2 align=center>
              <input type="button"  value="Daten anzeigen" class="bm5"  onClick="if(allRight()) bestaetigung();">
              <input type="reset" value="Zurücksetzen" class="bm5"><br>
              </td>
         </tr>
    </td>
   </td>
 </tr>
</table>
</table>
</pre>

<script type="text/javascript">
<!--
    var t1=document.Form1.FIRSTNAME;
    var t2=document.Form1.LASTNAME;
//-->
</script>
</body>
</html>


und hier der PHP-Code:
modi.php
Code: Select all
<?php
include ("connect.inc.php");

if (isset($action) && ($action == "insert") ) {

$Firstname = $_POST["FIRSTNAME"];
$Lastname= $_POST["LASTNAME"];

$sql = "insert into address (`FIRSTNAME`,`LASTNAME`)
        values ('$Firstname', '$Lastname')";
mysql_query($sql) or die(mysql_error());

//mysql_query($sql) or die("DB-Abfrage <b>$sql</b> ist fehlgeschlagen");
//echo '<p>Vielen Dank,Ihre Daten wurden erfasst.</p>';
}
else
{
?>

<?php
}
?>


Das komische bei dem Formular ist, wenn ich die "function bestaetigung()
" weglasse funtioniert alles bestens und es wird auch in die Database geschrieben.

Hast Du eine Idee was falsch läuft, oder muss ich die Bestätigung besser auf eine 2. Seite verlegen und wie?
Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby borschtel1 » 15. December 2004 12:01

Tut mir leid, bei Java Script Problemen bist du hier falsch.

Ich wundere mich nur, wieso das funktionieren soll, wenn du die Bestätigungs-Funktion rausnimmst. Dann ist doch nirgends mehr ein Aufruf der php-Datei.

Gruß
Thorsten
http://www.logospiel.de - Das Spiel mit den Logos
borschtel1
 
Posts: 29
Joined: 27. May 2004 11:29


Return to PHP

Who is online

Users browsing this forum: No registered users and 47 guests