Problem mit Dropdownfeld und zugehöriger ID

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.
    Last edited by asp2php; 18-09-2004, 21: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

    Comment


    • #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.

      Comment


      • #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.

        Comment


        • #5
          und
          PHP Code:
          var_dump($_GET); 
          bestätigt Dir auch dass 'reason' den erwarteten Wert hat?
          Last edited by NielsRunge; 19-09-2004, 10:18.
          [Test] MySQL cli Emulator

          Comment


          • #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.

            Comment


            • #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; 
              Last edited by Johny; 19-09-2004, 10:32.

              Comment


              • #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

                Comment


                • #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...

                  Comment


                  • #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

                    Comment


                    • #11
                      also noch ein isset einbauen?

                      Comment


                      • #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

                        Comment


                        • #13
                          dann kommt:

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

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

                          Comment


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

                            Comment


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

                              Comment

                              Working...
                              X