BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Webdesign (http://www.black-board.net/board.php?boardid=19)
--- senden button mehre funktionen (http://www.black-board.net/thread.php?threadid=16017)


Geschrieben von assasine am 16.02.2004 um 17:59:

  senden button mehre funktionen

also wenn ich jetzt zu beispiel nen anonymen mail service in der Seite hab und dann will das wenn jemand abschicken will auf den button senden klick und dann automatisch auf ne andere Seite wechselt! aber trotzdem die mail abschickt!



Geschrieben von Romanticus am 18.02.2004 um 20:09:

 

erstell eine php-funktion die die Formulardaten erst abschickt und danach mithilfe von header("Location: beispiel.php"); den Benutzer zur gewünschten seite "teleportiert" smile (es gibt aber ein paar regeln und besonderheiten bei der anwendung von header(); )



Geschrieben von inde am 19.02.2004 um 08:38:

 

afaik wird header('Location: http://host/irgendwas.php'); nur ausgeführt wenn vorher noch nichts ausgegeben wurde (also muss header oben in der Datei stehen)

Was PHP, MySQL und Datenbanken angeht, kann ich außerdem http://ffm.junetz.de/members/reeg/DSP/ emfehlen!



Geschrieben von Romanticus am 19.02.2004 um 12:33:

 

Zitat:
Original von inde
afaik wird header('Location: http://host/irgendwas.php'); nur ausgeführt wenn vorher noch nichts ausgegeben wurde (also muss header oben in der Datei stehen)


das stimmt schon, aber wenn mann das formular auf sich selbst verweist
php:
1:
echo "<form action='$SELF' method='POST'>";


und ganz am anfang die senden/umleiten funktion ausführt (bedingung: formulardaten vorhanden), dann funktioniert das einwandfrei.

außerdem gibt es auch eine möglichkeit einen header (und cookies)auch später zu schicken, also nachdem schon daten "geschickt" wurden. Aber dafür braucht man zugang zur php.ini und muss die option output_buffering=on schalten.

man kann die output_buffering option auch wärend der laufzeit ändern (kenn den genauen befehl nicht mehr), was aber zu 90% vom provider nicht unterstützt wird (gesperrte funktionen).



Geschrieben von inde am 19.02.2004 um 19:31:

 

naja, wenn man mit require und include arbeitet dürfte das etwas schwierig sein:

index.php:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<html>
<head>
</head>
<body>
Hallo Leute
<?php
require ("form.php");
?>
Und Tschüss
</body>
</html>


form.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:

<?php
// Irgendwelche Anweisungen
//...

if ($DatenSent) {
header("Location: $url");
}

echo "<form action=\"http://$HTTP_HOST$PHP_SELF\" method=\"post\"";
// usw
?>


Normalerweilse sollte jetzt der header nicht mehr funzen, oder?

btw@roman...: Besteht der Unterschied zwischen $PHP_SELF und $SELF darin, dass $PHP_SELF der Datei entspricht, die die "most" übergeordnete ist (in meinem Fall also index.php), und dass $SELF der Datei entspricht, in der dieses $$SELF steht (also form.php)???



Geschrieben von Romanticus am 19.02.2004 um 20:42:

 

1. die php-anweisungen sollen VOR den html-tags stehen, also ganz am ANFANG
2. da das in deinem fall nicht möglich ist, da das formular dann außerhalb des html-bereichs stehen würde, rate ich dir ganz am anfang eine funktionen-datei zu includen (z.B. functions.php) die die formulardaten verarbeitet und den user, wenn nötig, umleitet.

3. den unterschied zwischen $PHP_SELF und $SELF kenne ich nicht... Eigentlich war ich der meinung, dass beide variablen analog sind, nur das $SELF erst in späteren PHP versionen dazugekommen ist. Falls es jemand besser weiß, klärt mich bitte auf.



Geschrieben von inde am 19.02.2004 um 21:25:

 

1. Logisch!
2. Gute Idee, wird ich machen - wird aber ne Hammer - Datei geben...
3. Ich seh mal in verschiedenen Dokus nach großes Grinsen
4. THX!

*EDIT*

Es hat sich noch eine Frage zu der functions.php aufgetan:
Wenn ich das Formular an $SELF versende, weiß meine $SELF und somit auch die functions.php nicht welches Formular angesendet und ausgewertet werden soll.
Folglich müsste ich noch ein zusätliche Variable (z.B. die ID oder der Name der Seite) mit GET oder POST mit versenden.
Mit der könnte ich dann eine if() - Anweisung fütter:
php:
1:
2:
3:
4:
5:
6:
7:
<?php
$p $HTTP_GET_VARS['p'];

if ($submit) {
//... und jetzt das Problem
}

Wie kann ich nun mithilfe der Variablen $p eine Funktion "$p()" aufrufen?

Bsp.:
php:
1:
2:
3:
4:
5:
<?php
function kontak() {
// Verschiedene Abfragen
}
?>


kontakt() weill ich nun mit $p aufrufen? Wie geht das?



Geschrieben von Romanticus am 19.02.2004 um 23:16:

 

1. if-anweisungen sind in diesem fall nicht sehr bequem. eleganter gehts mit einer case-anweisung.

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:

<?php
switch($_POST[id])
  {
     case "01":
       //senden der daten aus dem formular mit der id=01
          break;
      case "02":
       //eine andere action
          break;
   }


2. eine funktion mit dem namen $p kannst du folgendermaßen aufrufen:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:

<?php
function xxx()
{
echo "hallo";
}
$p="xxx";
$p();   //aufruf der funktion
?>


oder auch so:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function xxx()
{
echo "hallo";
}
$p="xxx";

if(function_exists($p))
{
call_user_func($p,"parameter1","parameter2","usw"); //aufruf der function
}



Geschrieben von inde am 20.02.2004 um 15:55:

 

switch und case peil ich nicht...

siehe: hier



Geschrieben von LX am 20.02.2004 um 16:11:

Achtung

Wie wär's dann mal mit ein bisschen informieren? Ist ja net so, als gäbe es keine umfangreiche PHP-Doku im Netz Augenzwinkern



Geschrieben von inde am 20.02.2004 um 16:16:

 

Danke für den Tipp... hab ihn aber schon längst befolgt... ne frage zu case:

kann ich anstatt zwischen zwei case: "dingern" eines auslassen? also so:
php:
1:
2:
3:
4:
5:
6:
7:
8:
<?php
switch ($i) {
   case 2:
    // Anweisung
   case 4:
    // Anweisung
}
?>


Und darf ich anstatt der Zahlen hinter case auch andere Dinge notieren? z.B.:
php:
1:
2:
3:
4:
5:
6:
7:
8:
<?php
switch ($i) {
   case "home":
    // Anweisungen
   case "impressum":
    // Anweisung
}
?>



Geschrieben von LX am 20.02.2004 um 16:20:

Achtung

Wieso zweifle ich daran, dass du dir die verlinkte Seite wirklich angeschaut hast? Augenzwinkern

Wie dort ausführlich erwähnt wird, ist SWITCH ... CASE ... nur eine andere Schreibweise für geschachtelte IF-Abfragen.

1. Kannst du in geschachtelten IF-Abfragen irgendwelche Fälle auslassen?
- Klar, warum nicht?

2. Kannst du mit IF-Abfragen auch Strings vergleichen?
- Klar, warum nicht?



Geschrieben von inde am 20.02.2004 um 16:22:

 

Der Link nicht, aber ne andere PHP Dok, bei der nie was ausgelassen wurde und immer nur mit ansteigenden Zahlen gearbeitet wurde. Aber danke, jez weiß ichs...


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH