Problem mit Dropdownfeld und zugehöriger ID

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

  • Problem mit Dropdownfeld und zugehöriger ID

    hoi,

    ich habe in einem Formular,dass per PHP gesendet wird ein Dropdownfeld:

    PHP-Code:
    <select name="reason"

    <!-- 
    BEGIN reasons --> 
    <
    option name="reason" value="{reasons.REASON_ID}">
    {
    reasons.REASONTEXT}</option
    <!-- 
    END reasons --> 
    </
    select

    jetzt wird das Formular über eine URL nach diesem Schema gesendet:

    PHP-Code:
    reason.php?p=[POST_ID}&r={reasons.REASON_ID
    doch das {reasons.REASON_ID} kommt nicht an (leere ausgabe),obwohl das vorher erfolgreich definiert wurde(hab das getestet)

    ich glaube ich müsste wohl eher $HTTP_POST_VARS['reason'] verwenden aber geht das überhaupt?
    EDIT:
    linebreak sponsored by asp2php. Bitte demnächst selbst dafür sorgen.
    Zuletzt geändert von asp2php; 18.09.2004, 20:14.

  • #2
    Re: Problem mit Dropdownfeld und zugehöriger ID

    doch das {reasons.REASON_ID} kommt nicht an
    das heißt? wird es schon im tpl nicht ersetzt, oder was? quellcode des generierten formulars?
    (leere ausgabe),obwohl das vorher erfolgreich definiert wurde(hab das getestet)
    was?
    ich glaube ich müsste wohl eher $HTTP_POST_VARS['reason'] verwenden aber geht das überhaupt?
    häh? inwiefern sollte das gehen bzw. nicht gehen? mußt du ständig neue thraeds aufmachen?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Moment, du arbeitet mit Template, d.h. die Ersetzung der Platzhalter in {...} geschieht php-seitig, d.h. wiederum, dass der Link oder das Ziel: reason.php?p=[POST_ID}&r={reasons.REASON_ID} dadurch statisch wird und hat mit deiner Select-Liste nichts mehr zu tun. Also überlege es dir nochmals, was du da machst.

      Kommentar


      • #4
        also:

        hier werden die Reasons aus der Datenbank geholt:

        PHP-Code:
        //
        // Get Reasons
        //

        $sql "SELECT *
                    FROM phpbb_report_reason"
        ;
        $result mysql_query($sql);
                
        $reasons = array();

        while ( 
        $row $db->sql_fetchrow($result) )
        {
            
        $reasons['id'] = $row['reason_id'];
            
        $reasons['text'] = $row['reason_text'];

            
        $template->assign_block_vars("reasons", array(
                                        
        'REASON_ID' => $reasons['id'],
                
        'REASONTEXT' => $reasons['text']
            ));
                    

        das das soweit geht,sieht man daran,dass folgendes Dropdownfeld im HTML korrekt gefüllt wird:

        Code:
        <select name="reason"> 
        <!-- BEGIN reasons --> 
        <option name="reason" value="{reasons.REASON_ID}">
        {reasons.REASONTEXT}</option> 
        <!-- END reasons --> 
        </select>
        so das Problem kommt aber dann beim Absenden des Formulares:

        Code:
        <form action="report.php?mode=report&p={POST_ID}&r={RID}" method="post">
        darüber wird das Formular abgesendet,wobei POST_ID und RID folgendermaßen definiert werden:

        $rid = $HTTP_GET_VARS['reason'];
        $postid = $HTTP_GET_VARS['p'];


        PHP-Code:
        $template->assign_vars(array(
            
        'POST_ID' => $postid,
            
        'RID' => $rid
        )); 
        das POST_ID wird auch erfolgreich mitgesendet,nur das RID nicht.

        Kommentar


        • #5
          und
          PHP-Code:
          var_dump($_GET); 
          bestätigt Dir auch dass 'reason' den erwarteten Wert hat?
          Zuletzt geändert von NielsRunge; 19.09.2004, 09:18.
          [Test] MySQL cli Emulator

          Kommentar


          • #6
            du hast nur eine Datei namens report.php? und du willst, dass in action der selectierte Wert als URL-Var. übergeben wird?

            Oder hast du 2 Dateien: eine für das Formular mit der select-Liste und eine andere, die die Werte abfragt?

            schildere mal deinen Vorgang. Und ausserdem, wenn du von gearsten HTML-Code spricht, dann poste bitte auch den richtigen Code, und nicht den vom Template.

            Nochwas, reason ist ein Element der Form, welche IMHO per POST gesendet wurde, daher wäre $HTTP_POST_VARS oder viel besser, aktueller $_POST richtiger.

            Kommentar


            • #7
              wenn ich das nach dem Abschicken anlaufen lasse ist es klar,dass reason keinen wert hat:

              Code:
              array(3)
              {
              ["mode"]=> string(6) "report"
              ["p"]=> string(2) "45"
              ["r"]=> string(0) ""
              }
              das hatte ich ja auch schon gesehen,als ich mir die generierte SQL-Abfrage hatte ausgeben lassen. Die Frage ist nun.wie reason(bzw. r) einen Wert erhalten kann

              der gesamte PHP-COde lautet dann:

              PHP-Code:
                  case 'prereport':
                  
                  
              //
                  // Page Header
                  //
                  
              include($phpbb_root_path 'includes/page_header.'.$phpEx);
                  
              $postid $HTTP_GET_VARS['p'];
                  
                  
              //
                  // Main Code
                  //
                      //
                      // Get Reasons
                      //

                      
              $sql "SELECT *
                          FROM phpbb_report_reason"
              ;
                      
              $result mysql_query($sql);
                      
                      
              $reasons = array();

                      while ( 
              $row $db->sql_fetchrow($result) )
                      {
                          
              $reasons['id'] = $row['reason_id'];
                          
              $reasons['text'] = $row['reason_text'];
                      
                          
              $template->assign_block_vars("reasons", array(
                          
              'REASONTEXT' => $reasons['text'],
                          
              'REASON_ID' => $reasons['id']
                          ));
                          
                      }
                      
                      
              $rid $HTTP_POST_VARS['reason'];
                      
                      
                      
              $template->assign_vars(array(
                      
              'POST_ID' => $postid,
                      
              'RID' => $rid
                      
              ));


                      
              //
                      // Parse Template
                      //    
                      
                      
              $template->set_filenames(array( 
                          
              'prereport' => 'prereport_body.tpl'
                      
              ));
                      
              $template->pparse('prereport');
                  
              //
                  // Page TAIL
                  //
                  
              include($phpbb_root_path 'includes/page_tail.'.$phpEx);

                  break; 
              Zuletzt geändert von Johny; 19.09.2004, 09:32.

              Kommentar


              • #8
                wenn ich das nach dem Abschicken anlaufen lasse ist es klar,dass reason keinen wert hat:
                ja aber darum geht es doch auch nicht, oder? Vorm abschicken muß das Formular erstellt werden und da mußt Du schauen ob die Variable gesetzt ist...
                [Test] MySQL cli Emulator

                Kommentar


                • #9
                  hoi,

                  und wo liegt da der Fehler?
                  er wird ja die post_id auch übernommen,
                  aber warum die reason_id nicht?

                  sorry hab grad bahnhof...

                  Kommentar


                  • #10
                    Wie gesagt, vor dem abschicken mußt Du schauen ob die Variable überhaupt gesetzt ist, irgendwo muß sie ja herkommen
                    [Test] MySQL cli Emulator

                    Kommentar


                    • #11
                      also noch ein isset einbauen?

                      Kommentar


                      • #12
                        dachte eher daran einfach mal den Wert GET/POST wie auch immer auszugeben. Einfach ein "echo" teilweise kann man so schon den Fehler entdecken
                        [Test] MySQL cli Emulator

                        Kommentar


                        • #13
                          dann kommt:

                          array(1)
                          {
                          ["reason"] => string(4) "TEST"
                          }

                          das string(4) versteh ich nicht,reason ist der Listenname

                          Kommentar


                          • #14
                            das string(4) versteh ich nicht
                            eine variable von typ string der länge 4
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              dann kommt:
                              aha, also dann, soso.
                              War das jetzt GET oder POST?
                              Vor oder nachdem abschicken?
                              [Test] MySQL cli Emulator

                              Kommentar

                              Lädt...
                              X