tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
30500
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    offset Tutorials.de Gastzugang
    Hallo Tutorialaner,
    um mein Problem mal kurz zu umschreiben (ich bin sicher ihr könnt mir helfen ):
    Ich habe eine Seite (aka index.php) . Diese enthält Links, welche den Inhalt per "index.php?site=irgendwas" und "include("$irgendwas")" ändern (stark vereinfacht).
    Jetzt habe ich auch einen Admin-Bereich, welcher ebenfalls eingebettet ist. Dort kann man Beiträge verfassen, welche dann per method="post" versand werden. Hier kommt jetzt mein Problem.
    Ich möchte nämlich nach dem Eintragen wieder zur Admin Seite kommen. Ich habe es erst mit <form action="$PHP_SELF" ...> probiert. Da wird aber die admin.php nicht in die index.php includet sondern alleine angeziegt (was ja logisch ist).
    Dann habe ich action="index.php" ausprobiert und das Eintragen in die Datenbank der index.php überlassen. Dort wird dann aber wieder die erste Seite includet aber nicht die admin.php.

    Nochmal kurz: Ich will nichts anderes, außer nach dem Abschicken des Formulars wieder auf meine index.php mit includeter admin.php kommen:

    Das ganze nochmal als Bild:
    (Siehe Anhang)
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Funktioniert <form action="index.php?site=admin" method="post"> genrell ni-image2.gif  
     

  2. #2
    Frigorn Frigorn ist offline Mitglied Silber
    Registriert seit
    Jan 2003
    Beiträge
    89
    Warum soll denn das mit <form action=datei.php?var=value ...> nicht gehen? Normal sollte das keine Probleme geben...

    Aber.

    Wo muss den dein Formular hin, damit die entsprechenden Eintragungen etc gemacht werden? Das sind ja zwei Paar Stiefel, oder nicht? Du musst das Formular ja an das Script schicken, dass die Eingaben verarbeitet, oder macht das deine admin.php?

    Wenn ja, kein Problem - wenn nein, leite am Ende des entsprechenden Scriptes auf deine Admin Seite um. Wenn dein Script, das die Beiträge in die DB schreibt keine Ausgaben macht, kannst du am Ende einfach die header Funktion benutzen, um den Browser an die richtige Stelle zu schicken, z.B.
    PHP-Code:
    // hier dein ganzer Code
    header('location: index.php?site=admin.php'## hier geht's zurück in den Admin Bereich 
     

  3. #3
    offset Tutorials.de Gastzugang
    Danke dir erst einmal.

    Am liebsten wäre es mir, wenn gleich die admin.php die Eintragungen in die Datenbank vornehmen könnte. Das klappt aber leider nicht. Ich hab schon alle möglichen Foren und PHP-Script-Seiten abgegrast.

    Ich weiß einfach nicht, was ich in den <form action> schreiben soll. Wenn ich es an die admin.php, also an $PHP_SELF schicken will, wird es ja nicht mehr in der index.php includet, sondern extern angezigt.

    Und ich weiß nicht, wie ich das ändern kann.

    Falls du noch Lust hättest, mir zu helfen, aber selber nicht so recht weiter wissen solltest, würde ich dir per PM die Adresse zum Script schicken, dass du es selbst testen kannst.

    Danke im Voraus.

    (Sitze schon seit 2 Tagen und hab keine Ideen mehr) *heul*


    Um es noch konreter auszudrücken: Es liegt daran, dass die Seite per Browser oder Link mit index.php?site=admin aufgerufen wird. Wenn ich die admin.php _hart_ include, d.h. einfach nur include("admin.php") anstatt:
    PHP-Code:
        <?php
         $root 
    "http://www.meine-seite.de/design/";
         
    $site $_GET["site"];
         if(!
    $site) include("home.php");
         else include(
    "$root$site.php");
        
    ?>
    schreibe, funktioniert es wunderbar und die admin.php bleibt auch includet.
    Hab aber auch keine Ahnung, wie ich das ändern könnte.
    Geändert von offset (09.08.03 um 20:13 Uhr)
     

  4. #4
    Avatar von Andreas Dunstheimer
    Andreas Dunstheimer Andreas Dunstheimer ist offline Mitglied Platin
    Registriert seit
    May 2003
    Ort
    Weiterstadt, Germany
    Beiträge
    506
    das Problem ist im Prinzip ganz einfach:

    alles was hinter der URL mit ? an Variablen angegeben wird ist automatisch mit der Methode "GET", Dein FORM ist aber mit der Methode "POST" und die beiden können meines Wissens nicht gleichzeitig.

    Lösung: setze in die entsprechenden Forms einfach ein HIDDEN-Feld:
    Code :
    1
    
    <INPUT TYPE="hidden" NAME="site" VALUE="admin">

    Damit wird dann auch der Dateiname mit POST übergeben.


    Dunsti
     

  5. #5
    Avatar von SynDrome
    SynDrome SynDrome ist offline Mitglied Gold
    Registriert seit
    May 2002
    Beiträge
    165
    Original geschrieben von Dunsti
    Dein FORM ist aber mit der Methode "POST" und die beiden können meines Wissens nicht gleichzeitig.
    Dunsti
    Doch, das geht tatsächlich. Wenn das Formular per POST verschickt wird, dann kannst du als action auch Parameter an die Datei anhängen. Diese finden sich dann in $_GET und die Werte aus dem Formular in $_POST. Andersherum geht es allerdings nicht (also dass das Formular per GET versendet wird und man trotzdem noch Parameter an die action anhängt). Okay, aber das nur nebenbei

    Also wie Dunsti schon sagte - füge einfach ein hidden field mit entsprechendem wert ein oder mach es alternativ halt so:
    PHP-Code:
    print('<form method="POST" action="index.php?site=' $_GET['site'] . '>'
     
    und wer hält, was er verspricht, wenn er nicht glaubt, was er sagt?

  6. #6
    offset Tutorials.de Gastzugang
    Hi,
    sry, war im Urlaub...
    Danke erst einmal an alle!
    Hab jetzt mal alles ausprobiert, klappt immer noch nicht.

    Es stimmt zwar, dass wenn ich <action="index.php?page=admin"> nehme, dann auch wieder die admin.php in die index.php includet wird, aber es werden die eigegebenen Daten nicht in die Datenbank geschrieben (keine Ahnung warum, vielleicht sind die Variablen ja leer. Immerhin werden sie ja von der admin.php zu index.php geschickt und dann wieder zu admin.php).

    Um das ganze nochmal global zu betrachten, sieht es folgender maßen aus:
    Eintrag ins Formular:
    PHP-Code:
    <form action="index.php?page=admin" method="post" name="entry"
    Dann wird das Formular an die index.php geschickt, welche die admin.php includet:
    PHP-Code:
         $page $_GET["page"];
         if(!
    $page) include("home.php");
         else include(
    "$page.php"); 
    Danach fängt die admin.php das POST ab:
    PHP-Code:
     if ($_POST["entry_submit"])
     {
      
    $datetime date("Y-d-m H:i:s");
      
    mysql_query("INSERT INTO [...] usw.");
     } 
    Warum wird dort jetzt nichts eingetraqen? Sind die Variablen wirklich leer? Was kann ich dagegen tun? Welche alternativen kennt ihr?
    Irgendwie klapt alles nur bis zur Hälfte...

    Danke im Voraus!

    Edit: Im Endeffekt ist es ja nichts anderes, als wie dieses Forum. (Schreiben neuer Beiträge)
    Geändert von offset (13.08.03 um 12:57 Uhr)
     

  7. #7
    Avatar von SynDrome
    SynDrome SynDrome ist offline Mitglied Gold
    Registriert seit
    May 2002
    Beiträge
    165
    Möglicherweise ist bei dir register_globals off und daher kannst du auf die per POST übermittelten Daten nicht nach dem muster $feldname zugreifen, sondern musst $_POST['feldname'] oder eben $_REQUEST['feldname'] in deinem Query verwenden.
     
    und wer hält, was er verspricht, wenn er nicht glaubt, was er sagt?

  8. #8
    offset Tutorials.de Gastzugang
    @SynDrome: Nein, habe gerade nochmal nachgeschaut, mein Hoster hat es auf on gestellt. Ich werde es trotzdem mal probieren. Danke.

    Da fällt mri noch was ein: daran aknn es nicht liegen, sonst würde er ja wenigstens die datetime eintragen:
    PHP-Code:
     if ($_POST["entry_submit"])
     {
      
    $datetime date("Y-d-m H:i:s");
      
    mysql_query("INSERT INTO [...] usw.");
     } 
    D.h., er bekommt das entry_submit erst gar net.
    Geändert von offset (13.08.03 um 13:03 Uhr)
     

  9. #9
    offset Tutorials.de Gastzugang
    Argh! Ich hab den Fehler endlich nach einer Woche Suche gefunden...
    Es lag daran, dass ich den Pfad hart eingegeben habe (per include("$pfad$datei$endung")).
    Nunja, danke trotzdem an alle!
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 19.04.10, 10:12
  2. [CGI] Can't locate object method "new" via package "CGI::Simple"
    Von Papenburger im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 13.05.08, 10:26
  3. "anonyme Methode" kann nicht in den Delegattyp "System.Action<int>"konvertiert werden
    Von LL0rd im Forum .NET Application und Service Design
    Antworten: 2
    Letzter Beitrag: 30.01.08, 12:58
  4. Antworten: 1
    Letzter Beitrag: 28.08.07, 09:38
  5. method="post" zeigt Variablen
    Von steinmetz im Forum PHP
    Antworten: 4
    Letzter Beitrag: 13.06.04, 03:02