Formular an funktion weiterleiten?!

Headymaster

Erfahrenes Mitglied
Hallo!

habe mir dieses Script geschrieben...um im Adminbereich das Impressum auslesen zu können und dann editieren zu können.
Nun ist meine Frage.....wie ich nun in der Funktion dbpruefen das Formular an die Funktion impressumUpdaten() weiterleiten kann....

habt ihr ne Idee?

impressum.php
PHP:
<?php
  // Prüfen ob schon ein Impressum vorhanden ist
  dbpruefen();
  
  // Verbindung zur Datenbank herstellen
  function dbconnect(){
     // benötigte Dateien
     include("sql.php");
	 
     $connect = mysql_connect($dbserver, $dbuser, $dbpw) or die ("Es konnte keine Verbindung mit der DB hergestellt werden");
	 $dbselect = mysql_select_db($dbname, $connect) or die ("DB-Table konnte nicht ausgewählt werden");
	  
  }
  
  // Überprüfen ob Tables gefüllt sind
  function dbpruefen(){
     dbconnect();
	 $sql = "SELECT autor, domains, inhalt FROM impressum";
	 $result = mysql_query($sql);
	 $row = mysql_fetch_array($result);
	 
	 // Variablen bestimmen
	 $autor = $row["autor"];
	 $domains = $row["domains"];
	 $inhalt = $row["inhalt"];
	 
	 // Formular generieren + DB-Einträge einfügen
	 echo "<p align=\"center\"><font size=\"12\"><u><b>Impressum</u></b></font></p>";
	 echo "<form action=\"impressumUpdaten()\" method=\"post\">";
	 echo "<table align=\"center\" style=\"width:600; background-color:#CCCCCC\">";
	 echo "<tr>";
	 echo "<td>Autor:</td><td><input type=\"text\" name=\"autor\" value=\"$autor\"></td>";
	 echo "</tr>";
	 echo "<tr>";
	 echo "<td>Domains:</td><td><input type=\"text\" name=\"domains\" value=\"$domains\"></td>";
	 echo "</tr>";
	 echo "<tr>";
	 echo "<td valign=\"top\">Inhalt:</td><td><textarea name=\"inhalt\" rows=\"60\" cols=\"70\">$inhalt</textarea></td>";
	 echo "</tr>";
	 echo "<tr>";
	 echo "<td></td><td><input type=\"submit\" value=\"Save\"></td>";
	 echo "</table>";
	 echo "</form>";
  }
  
  // Impressum updaten
  function impressumUpdate(){
	 
  }	 	  	
?>

MFG Niels
 
Entweder bin ich zu besoffen oder/und zu dumm, aber ich verstehe deine Frage nicht. Wärst du so freundlich und würdest dein Anliegen (für mich) anders formulieren? Aus deinen bisherigen Worten werde ich nicht schlau, und ohne zu wissen was genau du willst, kann ich auch nicht helfen... :rolleyes:
 
Hey.

Die Vars von deinem Formular werden mittels POST automatisch übergeben, welche du dann nach absenden mit $_POST['VAR'] aufrufen kannst.
Gebe diese einfach als Parameter an deine impressumUpdate() - Funktion weiter.

Noch ein Tipp. Mit z.B.:
PHP:
echo <<<EOT

FORMULAR

EOT;

sparst du dir die ganzen echo-Befehle.
 
Also wenn ich das richtig verstehe ist es so dass wenn man <form action"..."> dort nichts eingibt...also action leerbleibt.....die Post befehle in der Datei bleiben...alo in der impressum.php?

Sprich ich muss in der Funktion einfach nur die Variablen definieren:

PHP:
<?php

function impressumUpdate(){
  
  //Variablen definieren
  $autor = $_POST['autor'];
  $domains = $_POST['domains'];
  $inhalt = $_POST['inhalt'];

und dann mysql befehle......

?>


Oder kann ich auch die Vars gleich der funktion mitgeben?

sprich:

PHP:
<?php
  function impressumUpdate($_POST['autor'],$_POST['domains'],$_POST['inhalt']){

 // und hier dann die weiteren mysql befehle....

?>


MFG Niels
 
Du kannst und solltest die Vars als Parameter deiner Funktion übergeben.

Trotzdem musst du auch eine action mitangeben. Sprich action="impressum.php?do=update"

Und dann sowas wie:
if($do == 'update') { rufe funktion auf }

In deinem Fall ist es aber wie ich finde bissl unütz eine extra Funktion für das Updaten des Impressums zu definieren. Du könntest auch direkt:

if($do == 'update') { mysql befehle ... }

Ach noch etwas:

PHP:
<?php
function impressumUpdate($_POST['autor'],$_POST['domains'],$_POST['inhalt']){

 // und hier dann die weiteren mysql befehle....

}
?>

Das geht so nicht. Du musst die Vars deiner Funktion als Parameter übergeben, wenn du sie aufrufst.

Bei der definition kannst du dann beliebige Parameternamen vergeben, wie z.B.:


PHP:
<?php
function impressumUpdate($autorxy,$domainsxy,$inhalktxy){

 // und hier kannst du nun die parameter $autorxy usw. weiter verwenden

}
?>
 
Zuletzt bearbeitet:
Hey ich habe heute auch so viel verplant....bei der Hitze^^...mach dir nischt drauß...hab dich doch trotzdem lieb :P

MFG Niels
 
So habe es nun so umgesetzt:

/impressum/index.php:
PHP:
<?php
  // Prüfen ob schon ein Impressum vorhanden ist
  dbpruefen();
  
  // Verbindung zur Datenbank herstellen
  function dbconnect(){
     // benötigte Dateien
     include("sql.php");
	 
     $connect = mysql_connect($dbserver, $dbuser, $dbpw) or die ("Es konnte keine Verbindung mit der DB hergestellt werden");
	 $dbselect = mysql_select_db($dbname, $connect) or die ("DB-Table konnte nicht ausgewählt werden");
	  
  }
  
  // Überprüfen ob Tables gefüllt sind
  function dbpruefen(){
     dbconnect();
	 $sql = "SELECT autor, domains, inhalt FROM impressum";
	 $result = mysql_query($sql);
	 $row = mysql_fetch_array($result);
	 
	 // Variablen bestimmen
	 $autor = $row["autor"];
	 $domains = $row["domains"];
	 $inhalt = $row["inhalt"];
	 
	 // Formular generieren + DB-Einträge einfügen
	 echo "<p align=\"center\"><font size=\"12\"><u><b>Impressum</u></b></font></p>";
	 echo "<form action=\"index.php?do=update\" method=\"post\">";
	 echo "<table align=\"center\" style=\"width:600; background-color:#CCCCCC\">";
	 echo "<tr>";
	 echo "<td>Autor:</td><td><input type=\"text\" name=\"autor\" value=\"$autor\"></td>";
	 echo "</tr>";
	 echo "<tr>";
	 echo "<td>Domains:</td><td><input type=\"text\" name=\"domains\" value=\"$domains\"></td>";
	 echo "</tr>";
	 echo "<tr>";
	 echo "<td valign=\"top\">Inhalt:</td><td><textarea name=\"inhalt\" rows=\"60\" cols=\"70\">$inhalt</textarea></td>";
	 echo "</tr>";
	 echo "<tr>";
	 echo "<td></td><td><input type=\"submit\" value=\"Save\"></td>";
	 echo "</table>";
	 echo "</form>";
	 
	  if($do=='update')
	  {
	   // Vars definieren
	   $autor = $_POST['autor'];
       $domains = $_POST['domains'];
       $inhalt = $_POST['inhalt'];
	   
	   // MySql-DB updaten
	   $impressupdate = "UPDATE".
	                    "impressum".
						"SET".
						"(autor = $autor) AND".
						"(domains = $domains) AND".
						"(inhalt = $inhalt)";
	     if ($impressupdate)
		 {
		   header("Location: index.php");
		 }
		 else
		 {
		   echo "Die Einträge konnten nicht editiert werden!";
		 }     
	  }
  }
?>

Das Problem ist nur dass das mit der Weiterleitung an do==update net geht.
anstatt daran weiterzuleiten.....geht das Script einfach ein Verzeichnis hoch und läd in der Hauptseite die index.php...


Ordnerstruktur:

root=Quellverzeichnis

root/index.php <---- Hauptseite für alle sichtbar
root/admin/index.php <---- Adminbereich....als default home.php includet
root/admin/impressum/index.php <---- oben gepostete Datei


MFG Niels
 
Sehe ich das richtig, dass du deine Seiten nur über root/admin/index.php aufrufst? Also sowas wie index.php?view=impressum. Dann fragst du in deiner index.php ab nach dem view und fügst die jeweilige Datei ein?

Falls ja: Dann solltest du den Parameter hinzufügen. Sprich: index.php?view=impressum&do=update.

Weil dann würdest du dich ja in root/admin/index.php befinden. Und du rufst ja mitm Formular die action "index.php?do=update" auf. Diese ex. jedoch nicht in der "nackten" index.php.
 
Zurück