$_POST in andere Form übernehmen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • $_POST in andere Form übernehmen

    Nabend

    ich habe ein kleines Problem, und zwar habe ich ein Formular um daten in eine db zu schreiben. Man kann diese daten im selben Formular anzeigen lassen, und auch löschen. Aber mit dem Bearbeiten wills leider nicht hinhauen.. Damit alle Buttons Funktionieren habe ich einige in eine 2 Form gepackt, aber diese können iwie die $_POST variablen aus der 1 Form lesen ...


    1. Form:
    PHP-Code:
    <form action="test.php" method="post">
                    <?php
                    
    if (empty($_GET['action']))
                    {
                    echo 
    '&Uuml;berschrift: <input name="headline" type="text"><br />';
                    }
                        if (!empty(
    $_GET['action']))  
                            
    //wenn GET übergeben wurde 
                            
    {  
                                
    $action $_GET["action"];  
                                echo 
    '&Uuml;berschrift: <input name="headline" type="text" value="'$action'"><br />';
                            }     
                    
    ?>
                    
                    Text: <textarea name="text" class="Einstellen" cols="88" rows="33">
                    <?php
                        
    if (!empty($_GET['action']))  
                            
    //wenn GET übergeben wurde 
                            
    {  
                                
    //mit $_GET entsprechende Daten aus db lesen
                            
    }
                    
    ?>
                    </textarea> <br />
                    
                        <?php if (empty($_GET['action']))  
                    {
                     
    ?><input name="submit" type="submit" value="Erstellen"><?php
                    
    }
                     
    ?>
                     <a href="test.php"><input name="clear" type="submit" value="Clear"></a>
                     
                    </form>
    2. Form:
    PHP-Code:
    <form action="test.php<?php if (!empty($_GET['action']))
                    {echo 
    "?action="; echo $action;} 
                    
    ?>" method="post">
                    
                    <?php if (!empty($_GET['action']))  
                    {
                     
    ?><input name="edit" type="submit" value="Bearbeiten"><?php
                    
    }
                     
    ?>
                        <input name="remove" type="submit" value="Löschen">
                    </form>

    und zum Bearbeiten:

    PHP-Code:
    <?php
                    
    if (isset($_POST['edit']))
                                {
                            
                                     
                                        
    $hl $_POST['headline'];
                                        
    $text $_POST['text'];
                                        
                                        echo 
    $h1;
                                        echo 
    $text;
                                        
                    
                                }
                                
    ?>

    (Damit der code net so lang is hab ich den kram der mir klar ist (aus db auslesen oder in db bearbeiten) weggeglassen denn nichtmal das was da oben jetzt steht funktionier -.- und ich hab kp warum ( vllt einfach zu unsauber ? ))

  • #2
    Hi CptRiot,

    ich hab mal ein wenig was zusammen gebastelt. Ich habe es NICHT getestet. Und ich bin mir ziemlich sicher, dass die PHP-Experten den folgenden Quelltext nicht zu 100% okay finden.
    Aber ich denke für einen kleinen Fingerzeig in die (hoffentlich) richtige Richtung sollte es ausreichen.

    Hier mal der Quelltext: (Verwendung auf eigene Gefahr. )
    PHP-Code:
    <?php
        
    // Art der Aktion ermitteln
        
    $action filter_inputINPUT_POST"action" );

        switch ( 
    $action ) {

            
    // Neuen Eintrag anlegen
            
    case "new_entry":
                
    // Kein POST-Ereignis? Dann endet das hier
                
    if ( strtoupper$_SERVER["REQUEST_METHOD"] ) !== "POST" ) {
                    break;
                }
                
    // Wichtige Variablen ermitteln
                
    $AuthorID filter_inputINPUT_SESSION"user_id"FILTER_VALIDATE_INT );
                
    $Topic    filter_inputINPUT_POST"topic" );
                
    $Message  filter_inputINPUT_POST"message" );

                
    // Sind alle wichtigen Daten vorhanden?
                
    if ( $AuthorID && $Topic && $Message ) {
                    
    // Eintrag hier anlegen
                
    }
                break;

            
    // Bestehenden Eintrag bearbeiten
            
    case "edit_entry":
                
    // Kein POST-Ereignis? Dann endet das hier
                
    if ( strtoupper$_SERVER["REQUEST_METHOD"] ) !== "POST" ) {
                    break;
                }
                
    // Wichtige Variablen ermitteln
                
    $TopicID filter_inputINPUT_POST"topic_id"FILTER_VALIDATE_INT );
                
    $Topic   filter_inputINPUT_POST"topic" );
                
    $Message filter_inputINPUT_POST"message" );

                
    // Sind alle wichtigen Daten vorhanden?
                
    if ( $TopicID && $Topic && $Message ) {
                    
    // Eintrag hier aktualisieren
                
    }
                break;

            
    // Bestehenden Eintrag loeschen
            
    case "delete_entry":
                
    // Kein POST-Ereignis? Dann endet das hier
                
    if ( strtoupper$_SERVER["REQUEST_METHOD"] ) !== "POST" ) {
                    break;
                }
                
    $TopicID     filter_inputINPUT_POST"topic_id"FILTER_VALIDATE_INT );
                
    $RealyDelete filter_inputINPUT_POST"realy_delete"FILTER_VALIDATE_BOOLEAN );

                if ( 
    $TopicID && $RealyDelete ) {
                    
    // Eintrag hier loeschen
                
    }
                break;
        }

        
    // Hier alle Eintraege aus der Datenbank lesen
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <title>TODO supply a title</title>
            <meta charset="UTF-8">
        </head>
        <body>
            <h1>Eintraege-Verwaltung</h1>

            <h2>Neuen Eintrag anlegen</h2>
            <form method="POST">
                <label for="topic">Ueberschrift:</label> <input name="topic" required="required"><br />
                <label for="message">Nachricht:</label> <textarea name="message" required="required"></textarea><br />
                <input type="hidden" value="new_entry" name="action">
                <input type="submit" value="Neuen Eintrag anlegen">
            </form>

            <hr />

            <h2>Vorhandene Eintraege</h2>
    <?php
            
    foreach( $Entries as $CurrentEntry ) {
    ?>
            <form method="POST">
                <label for="topic">Ueberschrift:</label> <input name="topic" required="required" value="<?php echo $CurrentEntry["topic"]; ?>"><br />
                <label for="message">Nachricht:</label> <textarea name="message" required="required"><?php echo $CurrentEntry["message"]; ?></textarea><br />
                <input type="hidden" value="edit_entry" name="action">
                <input type="hidden" value="<?php echo $CurrentEntry["id"]; ?>" name="topic_id">
                <input type="submit" value="Eintrag bearbeiten">
            </form>
            <form method="POST">
                <input type="hidden" value="delete_entry" name="action">
                <input type="hidden" value="<?php echo $CurrentEntry["id"]; ?>" name="topic_id">
                <input type="checkbox" name="realy_delete"> <label for="realy_delete">Wirklich loeschen</label><br />
                <input type="submit" value="Eintrag loeschen">
            </form>
    <?php
            
    }
    ?>
        </body>
    </html>
    Hoffe, das hilft dir ein wenig weiter.

    Gruß
    ~ Chris

    Kommentar


    • #3
      Erstmal Danke!! dass du mir so viel hilfst

      ich weiß nicht ob ichs heute oder morgen noch schaffe mir das genauer anzugucken (vorabi ).

      Aber eine Sache versteh ich so auf den ersten Blick noch nicht,
      PHP-Code:
      <?php
          
      // Art der Aktion ermitteln
          
      $action filter_inputINPUT_POST"action" );
      müsste dass nicht eher
      PHP-Code:
      <?php
          
      // Art der Aktion ermitteln
          
      $action filter_inputINPUT_GET"action" );
      oder so heißen? oder nimmt er in deinem beispiel automatisch den GET-Wert (id aus der URL)


      LG
      Chrischy

      Kommentar


      • #4
        Hallo,

        wenn man den Wert mit GET übergibt, dann hast du völlig recht. Aber wenn du dir den Quelltext ansiehst, stellst du fest, dass ich "action" nicht als URL-Parameter übergebe, sondern durch ein verstecktes input (<input type="hidden" name="action" value="new_entry">).
        Und damit ist "action" ein POST-Wert.

        Gruß
        ~ Chris

        Kommentar


        • #5
          Haha okay sogenau hatt ich noch nicht geguckt
          Kann man ein hidden input auch per klick auf ein href link setzen ? (Habe links eine spalte in der per while schleife die überschriften ausgelesen werden und in einem href link angezeigt der die get variable setzt (inzwischen als id )

          LG
          Chrischy

          Kommentar


          • #6
            Yay!

            Und wieder zeigt sich, dass ich eigentlich ein ziemlicher ... nja ... bin. Denn ich muss gestehen, dass ich gerade nicht so ganz verstanden habe, wie du das meinst.

            hier mal, wie ich das verstanden habe:
            Du verwendest im HTML eine Tabelle und hast dort ne eigene Spalte für verschiedene Buttons. Diese Buttons sollen Werte über ein href an ein anderes PHP-Skript übermittelt werden.

            Ist das so richtig? Wenn ja: Was für Werte willst du denn schicken? Die Aktion? Die ID? Und wenn ja: Warum?
            Ich fürchte, dass du mir hier ein wenig auf die Sprünge helfen musst.

            Gruß
            ~ Chris

            Kommentar


            • #7
              Ich glaub du hast es richtig verstanden

              Ich habe per css mehrere divs und im linken werden aus der datenbank die überschriften ausgelesen und dann daraus ein link gemacht wenn ich gleich zu hause bin pack ich mal den quellcode hier rein den kann ich grad nicht auswendig :P


              -------

              hab also ein <div>, welches ca. 1/5 der seite links abtrennt und dort folgendes einfügt


              PHP-Code:
              <?php 
                                                          $sqlabfrage 
              "SELECT * FROM  news ORDER BY `id` DESC";  
                                                          
              $ergebnis mysql_query($sqlabfrage) or die(mysql_error());  
                                                          
              //Ausgabe einer Liste  
                                                              
              while ($datensatz mysql_fetch_array($ergebnis))  
                                                                  {  
                                                          
                                                                          
              $id $datensatz["id"];
                                                                          
              $headline $datensatz["headline"];
                                                                          
              ?>  
                                                                          <a href="admin.php?action=<?php echo $id?> ">  
                                                                          <?php echo $headline?><br />  
                                                                          </a>
                                                                          
                                                                          
                                                  <?php  
                                                                  
              }  
                                                  
              ?>

              LG
              Chrischy
              Zuletzt geändert von CptRiot; 15.03.2014, 22:44.

              Kommentar


              • #8
                Hallo,

                gut zu wissen, dass ich doch noch nicht völlig ver..naja.. bin. Beim Betrachten deines Quelltextes sprang mich glatt eine Frage an.
                Was soll der Link bewirken?
                Soll er den Eintrag anzeigen? Soll er den Eintrag bearbeiten? Oder soll der Eintrag gelöscht werden? Oder eine Art Mischung aus allem?

                Für was auch immer du dich entscheidest: Ich denke, wenn du die ID mittels GET-Übergeben willst, solltest du vielleicht lieber "id" als Parameter-Name verwenden. "action" klingt - zumindest für mich - eher wie die Art der Aktion, nicht unbedingt das Ziel einer Aktion.

                Gruß
                ~ Chris

                Kommentar


                • #9
                  Es soll ein mix aus allem 3 sein
                  Er soll dann per get die id übergeben anhant derer wird der passende rest dann in ein textarea gelesen welches man dan löschen bzw bearbeiten kann (wenn man die seite ohne variable öffnet dann is alles leer und man kann wat neues erstellen)
                  (( es soll ne art äm ja gaanz grob könnte man vllt blog dazu sagen ))

                  Wie meinst das als parameter übergebwn ?

                  EDIT:
                  haha wer lesen kann ...
                  ja klar das gibt sinn (hatte bisher immer die headline als und nicht die id mitgegeben, daher kommt noch das action :P)


                  LG
                  Chrischy
                  Zuletzt geändert von CptRiot; 15.03.2014, 23:29.

                  Kommentar

                  Lädt...
                  X