HeikoH: Variable an andere Datei übergeben

Hallo @,

ich bin immer noch bei einem Kalenderscript (nicht von mir) welches ich bei mir einzubinden versuche... (ist aber schon fast fertig).
Problem:

die Datei travelplan.php wird im Browser aufgerufen. Die Datei load.php lädt dann den Kalender und wird mit Hilfe von Javascript (?) ebenfalls ausgeführt.
In der load.php habe ich auch eine DB Abfrage reingeschrieben - funktioniert.
Was nicht geht sind Abfragen wie $_REQUEST oder $_POST obwohl ich das Formular per POST sende (das ruft allerdings travelplan.php auf) - $_REQUEST habe ich zum Probieren genommen.
Ich weiss zwar nicht wieso das nicht geht - vielleicht könnt Ihr mir einen Tip geben - aber ich wollte dafür dann im travelplan die erforderlichen Werte abfragen und sie gleichzeitig an load.php übergeben.
Wenn ja, mit welcher Funktion oder welchen Aufruf muss ich das machen?

Danke für Eure Hilfe

HeikoH

  1. Was nicht geht sind Abfragen wie $_REQUEST oder $_POST obwohl ich das Formular per POST sende (das ruft allerdings travelplan.php auf) - $_REQUEST habe ich zum Probieren genommen.

    Das Formular sendest du per POST an travelplan.php und versuchst es in load.php mit $_POST['<varname>'] aufzurufen?

    Falls ja:  Das geht so nicht.

    Entweder includierst du load.php dort und hast die gesamten Funktionen auch noch zur Verfügung oder du speicherst sie (falls es nicht zu viele sind) in der SESSION und hast sie dann auch im load.php File zur Verfügung.

    Falls nein: Beschreibe bitte noch einmal was du genau machst und vor hast.

    Mehr kann ich leider auch nicht sagen, da mir das Szenario nicht ganz klar ist und auch nicht was du da mit den Daten machst. Gibt es Klassen oder nur Funktionen?

    1. Ja, sorry - habe beim nochmal lesen auch gemerkt dass es für einen Dritten nicht wirklich verständlich ist. Also, ich rufe die travelplan.php im Browser auf:


      <?php

      if ( !defined( 'SMARTY_DIR' ) ) {

      include_once( 'init.php' );

      } include( 'sessioninc.php' ); // Mod Start $_SESSION['stateprovince'] = $_POST['txtstateprovince']; $t->assign('txtstateprovince', $_POST['txtstateprovince']); $_SESSION['citycode'] = $_POST['txtcity']; $t->assign('txtcity', $_POST['txtcity']); // End Mod

      $_SESSION['from'] = $countrycode = ($_SESSION['from']!= '') ? $_SESSION['from'] : $config['default_country'];

      $lang['states'] = getStates($countrycode,'N');

      if (count($lang['states']) == 1) {  foreach ($lang['states'] as $key => $val) {   $_SESSION['stateprovince'] = $key;  } }

      if ($_SESSION['stateprovince'] != '') {

      $lang['counties'] = getCounties($countrycode, $_SESSION['stateprovince'], 'N');

      if (count($lang['counties']) == 1) {   foreach ($lang['counties'] as $key => $val) {    $_SESSION['countycode'] = $key;   }  }

      if ($_SESSION['countycode'] != '') {

      $lang['cities'] = getCities($countrycode, $_SESSION['stateprovince'], $_SESSION['countycode'], 'N');

      if (count($lang['cities']) == 1) {    foreach($lang['cities'] as $key => $val) {     $_SESSION['citycode'] = $key;    }   }

      if ($_SESSION['citycode'] != '') {

      $lang['zipcodes'] = getZipcodes($countrycode, $_SESSION['stateprovince'], $_SESSION['countycode'], $_SESSION['citycode'], 'N');   }  } }

      // Start Eintragen if (isset($_POST['send'])){  $UserId    = $_SESSION['UserId'];  $selDay_start1  = $_POST['selDay_start1'];  $selMonth_start1 = $_POST['selMonth_start1'];  $selYear_start1  = $_POST['selYear_start1'];  $selDay_end1  = $_POST['selDay_end1'];  $selMonth_end1  = $_POST['selMonth_end1'];  $selYear_end1  = $_POST['selYear_end1'];  $txtfrom   = $_POST['txtfrom'];  $txtstateprovince = $_POST['txtstateprovince'];  $txtcity   = $_POST['txtcity'];  $txtholyday   = $_POST['txtholyday'];

      $eintrag = "INSERT INTO travelplan (UserId, start_day, start_month, start_year, end_day, end_month, end_year, country, county, city, holyday) VALUES ('$UserId','$selDay_start1','$selMonth_start1','$selYear_start1','$selDay_end1','$selMonth_end1','$selYear_end1','$txtfrom','$txtstateprovince','$txtcity','$txtholyday')";  mysql_query($eintrag); } // End Eintragen // Start Löschen if (isset($_POST['delete']) && ($_POST['del_usr'] == $_SESSION['UserId'])){  $del_id = $_POST['del_id'];  mysql_query("DELETE FROM travelplan WHERE id = $del_id"); } // End Löschen // Start Ausgabe $abfrage = "SELECT * FROM travelplan ORDER BY start_year, start_month, start_day"; $result = mysql_query($abfrage); $table_data = array(); while ($row = mysql_fetch_assoc($result)){  array_push($table_data, array(  'id' => $row['id'],  'UserId' => $row['UserId'],  'start_day' => $row['start_day'],  'start_month' => $row['start_month'],  'start_year' => $row['start_year'],  'end_day' => $row['end_day'],  'end_month' => $row['end_month'],  'end_year' => $row['end_year'],  'country' => $row['country'],     'county' => $row['county'],     'city' => $row['city'],  'holyday' => $row['holyday'],));  }   $t->assign('table_data', $table_data); mysql_close();

      // Ende Ausgabe $t->assign ( 'lang', $lang );

      $t->assign('rendered_page', $t->fetch('travelplan.tpl') );

      $t->display ( 'index.tpl' );

      ?>


      ...diese ruft ja dann die travelplan.tpl auf


      {strip} {literal} <script type="text/javascript"> function validateme(){   if (document.frmPlan.txtcity.value == "") {     document.frmPlan.send.disabled=true;     return false;   }   if (document.frmPlan.selYear_end1.value == "") {     alert("Select your traveldate!");     return false;   } } </script> {/literal} <form name="frmPlan" id="frmPlan" method="post" action="travelplan.php" onsubmit="javascript: return validateme();"> <table align="center">   <tr>     <td width="440" class="module_head"><img src="{$image_dir}page_hdr01.jpg" alt=""/>&nbsp;&nbsp;{lang mkey='me_travellist'}</td>   </tr> </table> <table align="center">   <tr>     <td width="220"> <script type="text/javascript" src="javascript/functions.js"></script> <script type="text/javascript" src="javascript/cascade.js"></script> //Start Kalender <script type="text/javascript" src="TDE_RCalendar/public.js"></script> <input name="selDay_start1" type="hidden" id="selDay_start1" /> <input name="selMonth_start1" type="hidden" id="selMonth_start1" /> <input name="selYear_start1" type="hidden" id="selYear_start1" /> <input name="selDay_end1" type="hidden" id="selDay_end1" /> <input name="selMonth_end1" type="hidden" id="selMonth_end1" /> <input name="selYear_end1" type="hidden" id="selYear_end1" onClick="javascript: validateme(this.value);"/> <div>  <div id="containerRCalendar1"></div> </div> <script type="text/javascript">initCalendar('1','ENG',false,false,'Select Start Date','Select End Date','Cancel Selection', 'Successfully');</script> // Ende Kalender </td>     <td width="220" align="center" valign="top" class="profile_detail_inside">       <table cellspacing="0" cellpadding="0" border="0" width="100%">          <tr>         <td class="profile_head">&nbsp;{lang mkey='signup_subtitle_address'}</td>                             </tr>        {if $config.accept_country == '1' or $config.accept_country == 'Y'}        <tr class="oddrow">         <td height="20" valign="bottom">{lang mkey='signup_country'}</td>                             </tr>                             <tr class="evenrow">                            <td>                                 <select class="select" style="width: 175px;" name="txtfrom" id="txtfrom"  onchange="javascript:  cascadeCountry(this.value,'txtstateprovince');" ><option value="">{lang mkey='select_country'}</option>         {html_options options=$lang.countries selected=$smarty.session.from}         </select>         <input type="hidden" name="chgcntry" id="chgcntry" value="" />        </td>        </tr>                             {/if}        {if $config.accept_state == '1' or $config.accept_state == 'Y'}        <tr class="oddrow">         <td height="20" valign="bottom">{lang mkey='signup_state_province'}</td>                             </tr>                             <tr class="evenrow">         <td>         { if $lang.states|@count > 0}         <select class="select" style="width: 175px" name="txtstateprovince" onchange="javascript: this.form.chgcntry.value='1'; cascadeState(this.value,this.form.txtfrom.value,'txtcounty'); this.form.submit()" ><option value="-1">{lang mkey='select_state'}</option>         {html_options options=$lang.states selected=$smarty.session.stateprovince}         </select>         { else }         <input name="txtstateprovince" type="text" size="30" maxlength="100" value="{$smarty.session.stateprovince}" />         { /if}        </td>        </tr>                             {/if}        {if $config.accept_city == '1' or $config.accept_city == 'Y'}        <tr class="oddrow">         <td height="20" valign="bottom">{lang mkey='signup_city'}</td>                            </tr>                             <tr class="evenrow">         <td>         { if $lang.cities|@count > 0}         <select class="select" style="width: 175px" name="txtcity" onchange="javascript:this.form.chgcntry.value='1'; this.form.submit();" >         {html_options options=$lang.cities selected=$smarty.session.citycode}         </select>         { else }         <input name="txtcity" type="text" size="30" value="" readonly/>         { /if}        </td>                </tr>        {/if}                       <tr class="oddrow">                              <td height="20">&nbsp;</td>          </tr>                       <tr class="evenrow">                              <td valign="baseline">         <input name="send" type="submit" class="formbutton" value="{lang mkey='submit'}" />                                 </td>          </tr>       </table>    </td>   </tr> </table> </form><br /> <table width="440" align="center" border="0" cellpadding="0" cellspacing="0">  <tr>      <td width="100%" class="profile_head">&nbsp;&nbsp;{lang mkey='me_travelplan'}</td>     </tr>     <tr>         <td class="profile_detail_inside">          <table width="100%" border="0" cellpadding="0" cellspacing="0">          {section name=row loop=$table_data}              <tr class={cycle values="oddrow, evenrow"}>                <td>&nbsp;{lang mkey='me_from'}:&nbsp;</td>                <td align="right">                <b>{$table_data[row].start_day} / {$table_data[row].start_month} - {$table_data[row].start_year}</b></td>                <td>&nbsp;&nbsp;{lang mkey='me_to'}:&nbsp;</td>                <td align="right"><b>{$table_data[row].end_day} / {$table_data[row].end_month} - {$table_data[row].end_year}</b></td>                <td align="right">{$table_data[row].city}, {$table_data[row].county}, {$table_data[row].country}</td>                <td align="right"><form name="delPlan" action="travelplan.php" method="post">                  <input name="del_id" value="{$table_data[row].id}" type="hidden" />                     <input name="del_usr" value="{$table_data[row].UserId}" type="hidden" />                     <input name="delete" type="submit" class="formbutton" value="{lang mkey='delete'}" />                </form></td>              </tr>          {/section}          </table>       </td>    </tr> </table> {/strip}


      durch den RC_Kalender (Fremdprodunkt) wird die load.php aufgerufen - ich denke, das passiert durch das TDE_RCalendar/public.js (Geht sowas?), denn die ist Bestandteil vom Kalender und wird hier durch nix includiert. Hier noch die load.php


      <?php

      error_reporting(7);   header("Cache-Control: no-store, no-cache, must-revalidate");   header("Pragma: no-cache");

      session_start();

      if (isset($_SESSION['UserId']) && ($_SESSION['UserId'] != ''))  $cal_id = $_SESSION['UserId']; else  $cal_id = '';

      include( '../init.php' );

      $contents = "";

      if($_REQUEST['selYear_end1'] != ''){  $contents = "3/3/2008-3/7/2008";  $contents = $contents.$_REQUEST['selMonth_start1']."/".$_REQUEST['selDay_start1']."/".$_REQUEST['selYear_start1']."-".$_REQUEST['selMonth_end1']."/".$_REQUEST['selDay_end1']."/".$_REQUEST['selYear_end1']."\n\n\n\n"; }

      $result = mysql_query("SELECT * FROM travelplan WHERE UserId = $cal_id"); while ($row = mysql_fetch_assoc($result)){  $contents = $contents.$row['start_month']."/".$row['start_day']."/".$row['start_year']."-".$row['end_month']."/".$row['end_day']."/".$row['end_year']."\n\n\n\n";  }

      $dates = explode("\n\n", $contents); $string = ""; for ($i=0;$i<count($dates)-1;$i++)       $string .= $dates[$i];

      if ($string!="")     $string = substr($string,0,strlen($string)-1); echo $contents;

      mysql_close(); ?>


      die load.php gehört zum Kalender und liesst die Datumangaben aus der DB aus und übergibt sie dem Kalender. Normalerweise wurden die Daten in einer txt Datei gespeichert, doch ich wollte sie in einer DB haben und habe das entsprechend abgeändert. Nun möchte ich auch per $_POST abfragen, welches der User gerade eingibt, da durch die dyn. DropDown Menüs die Eingabe im Kalender vom User weg ist, da sich die Seite neu lädt.

      Jetzt besser verständlich?

      HeikoH

      1. Hi,

        Ja, sorry - habe beim nochmal lesen auch gemerkt dass es für einen Dritten nicht wirklich verständlich ist.

        Dann fehlt jetzt noch die Erkenntnis, dass es das ganze nicht uebersichtlicher macht, wenn du einfach deinen *kompletten* Quellcode hier reinkippst.

        MfG ChrisB

        1. Dann fehlt jetzt noch die Erkenntnis, dass es das ganze nicht uebersichtlicher macht, wenn du einfach deinen *kompletten* Quellcode hier reinkippst.

          und was, sollte ich Deiner Meinung nach, weglassen?
          Oder wie soll ich das Problem besser beschreiben?

          HeikoH

          1. echo $begrüßung;

            Dann fehlt jetzt noch die Erkenntnis, dass es das ganze nicht uebersichtlicher macht, wenn du einfach deinen *kompletten* Quellcode hier reinkippst.
            und was, sollte ich Deiner Meinung nach, weglassen?
            Oder wie soll ich das Problem besser beschreiben?

            Wenn man ein Problem mit oder in einem komplexen System hat, ist es günstig, das Problem zu isolieren. Stelle es mit dem geringstmöglichen Code nach, lass alles nicht notwendige weg. Dann kann auch einer, den du um Hilfe bittest, sich schneller einarbeiten, und muss nicht unnütze Berge kaum kommentierten Codes verstehen müssen.

            echo "$verabschiedung $name";

  2. Hi,

    die Datei travelplan.php wird im Browser aufgerufen.

    Fein, Request #1.

    Die Datei load.php lädt dann den Kalender und wird mit Hilfe von Javascript (?) ebenfalls ausgeführt.

    Hae, wer "laedt" wen?
    Du schickst also ein Formular "an" load.php ab, oder was?
    Was hat JavaScript jetzt damit zu tun?

    Anyway, Request #2.

    In der load.php habe ich auch eine DB Abfrage reingeschrieben - funktioniert.
    Was nicht geht sind Abfragen wie $_REQUEST oder $_POST obwohl ich das Formular per POST sende (das ruft allerdings travelplan.php auf) - $_REQUEST habe ich zum Probieren genommen.

    Request #3.

    Ich weiss zwar nicht wieso das nicht geht

    Weil die Daten, die mit einem Request uebermittelt werden, natuerlich nur fuer diesen Request zur Verfuegung stehen - also im PHP-Umfeld i.a.R. fuer die Laufzeit genau der Scriptinstanz, die durch den Request "aufgerufen" wird.

    aber ich wollte dafür dann im travelplan die erforderlichen Werte abfragen und sie gleichzeitig an load.php übergeben.
    Wenn ja, mit welcher Funktion oder welchen Aufruf muss ich das machen?

    Erst mal muesstest du bitte verstaendlich und nachvollziehbar beschreiben, was du aktuell wirklich machst und wie.
    Und dann auch noch, wie es ablaufen soll - "wer" wann aufgerufen und dabei welche Daten von "wem" bekommen soll.

    MfG ChrisB