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)
--- PHP: Öffnen einer Webseite nach bestimmten Befehl (http://www.black-board.net/thread.php?threadid=17832)


Geschrieben von Mr.Stevens am 30.06.2004 um 09:04:

  PHP: Öffnen einer Webseite nach bestimmten Befehl

Servuuuus.
Vielleicht kannst jemand weiterhelfen. Geht um folgendes.
Schau mal auf http://www.huettenworld.com/sections/news/news.php
Da gibts rechts nen Newsletter, der die Adresse gleich in ne Datenbank schreibt. So weit, so gut. Allerdings möcht ich gern, dass beim Absenden der Anfrage wieder auf die Ausgangsseite (news.php) zurückgesprungen wird. Es müsste hier wohl irgendwo nach $result = mysql_query("INSERT INTO $tblname... ein Befehl eingefügt werden, der eben das veranlasst. Bin leider PHP technisch noch in den Kinderschuhen und hab keine Ahnung.

Hier mal der Quelltext des Newsletterskripts (io.php) ...

php:
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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:

<link rel="STYLESHEET" type="text/css" href="../../../style.css">
<?php
require"config.php";

echo "<html><body>";

mysql_pconnect("$dbserver","$dbuser","$dbpword")
 OR die("MySQL-Server nicht erreichen");
mysql_selectdb("$dbname")
 OR die("Datenbank nicht erreichbar");

     $cnt mysql_numrows(mysql_query("select id from $tblname"));

if($send){
   switch($send){
   
   //******* Datensatz einfügen ********//
      case 'insert':

        if (empty($email)){
             echo "
                <b>Fehler!</b><br>Keine Adresse angegeben<br><a href=javascript:history.back()>Zurück</a></font>";
                 exit;
         }


         $result mysql_query("INSERT INTO $tblname (email, datum) VALUES ('$email', '$datum')");
         exit;

        
   //******* Datensatz löschen ********//     
      case 'del':

        if (empty($email)){
            echo "<b>Fehler!</b><br>Keine Adresse angegeben<br><a href=javascript:history.back()>Zurück</a></font>";
            exit;
        }

       $query "delete from $tblname where email = '$email'";
       $result mysql_db_query($dbname$query);
       exit;

   }
}
?>


<form action="<?php echo $PHP_SELF ?>" method="post">
<center>
<table bgcolor="#000000" border="0" width="100" cellpadding="<?php echo $cellpadding ?>" cellspacing="<?php echo $cellspacing ?>">
<tr><td width="144"><input type="text" size="<?php echo $io_size ?>" maxlength="40" name="email" value="@"></td></tr>
<input type=hidden name=datum value="<?php print (date"d.m.Y" )); ?>">
<tr><td><input type="radio" name="send" value="insert">An-&nbsp;&nbsp;<input type="radio" name="send" value="del">Abmelden<br>
<input type="submit" value="Senden"><?php if($show==1) { echo "Es sind $cnt Empfänger eingetragen</td><tr>"; } else { echo "</td><tr>"; } ?></td>
    </table>
</form>
</center>
</body>
</html>



Geschrieben von LX am 30.06.2004 um 10:13:

Achtung

1. Die Verbindung zur Datenbank würde ich erst nach dem if($send) aufbauen, da sie ja nix bringt, wenn die Variable nicht existiert.

2. Normalerweise vertraut man nicht darauf, dass register_globals in der php.ini auf "on" gesetzt ist. Ansonsten existiert die Variable $send nämlich net. Stattdessen referenziert man mit den entsprechenden globalen Arrays $_POST oder $_GET (je nach dem, wie dein Formular gesendet wird). Die Variable wäre dann unter $_POST['send'] verfügbar.

3. Hier wär's geschickt, den Kram aus der io.php ebenfalls in die news.php einbinden zu lassen. Dann gibst du als form action auch die news.php an. Wenn dann $_POST['send'] existiert, wird der Kram in die Datenbank eingetragen bzw. daraus gelöscht. Der Rest der Seite bleibt davon unberührt. Falls der Schreib- oder Löschvorgang erfolgreich ist, würde ich aber noch eine kleine Abfrage einfügen, die dann statt des Formulars eine kleine Meldung ausgibt.



Geschrieben von Romanticus am 30.06.2004 um 12:13:

 

der befehl, der dich auch die ausgansseite "zur?ckbef?rdert".
php:
1:
header("Location: io.php");



wenn es nicht funktioniert und er ne meldung bringt, von wegen headers allready sent usw., einfach ganz am anfang des scripts ob_start(); einf?gen, und ganz am ende ob_end_flush();... sicherheitshalber sollte man die beiden befehle ganz am anfang bzw. ende der datei schreiben... also den ganzen code umklammern...


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH