Thorsten: PHP / JS / XAJAX

Hallo,

ich hoffe ihr könnt mir in meiner verzweiflung helfen.

Ich habe einfaches Formular was ich mittels AJAX/XAJAX erweitern möchte sobald jemand die in einer Selectbox den Wert Einzugsermächtigung wählt.

In meiner Testdatei sieht das alles wunderbar aus und funktioniert auch so.

Testdatei:
<?php
error_reporting(E_ALL);
header('Content-type: text/html; charset=utf-8');
 include("KLassen/xajax/xajax_core/xajax.inc.php");
 $xajax = new xajax();
 $xajax->registerFunction("onSelect");
 function onSelect($sSelect, $sDestination){
  $objResponse = new xajaxResponse();
  if($sSelect == 3){
   $formular = file_get_contents('Templates/bankdaten.php');
   $objResponse->assign($sDestination, 'innerHTML', $formular);
  }
  else {
   $objResponse->assign($sDestination, 'innerHTML', $formular = '');
  }

return $objResponse;
 }
 //$xajax->setRequestURI("http://localhost/ivently/test.php");
 $xajax->processRequest();
 $xajax->printJavascript('Klassen/xajax');
   include('Config/config.php');
   require_once('Klassen/db_class.php');
   $db = new db($schema);
   $zahlungsart = $db->getmatrix('SELECT zahlungsart, zahlungsart_id FROM zahlungsart');

echo "<select name='zahlungsart' id='input_select' onchange="xajax_onSelect(xajax.$('input_select').value, 'select_output'); return false;" >";

foreach ($zahlungsart AS $data)
     {
      if (isset($fehler))
      {
       if ($_POST["zahlungsart"] == $data["zahlungsart_id"])
       {
        $check = "selected='selected'";
       }
       else
       {
        $check ="";
       }
      }
      echo "<option ";
      if (isset($check))
      {
       echo $check;
      }
      echo " value="".$data["zahlungsart_id"]."">".$data["zahlungsart"]."</option>";
     }
    echo "</select>";
    ?>
<div id='select_output' ></div>

Wenn ich diese jetzt in mein projekt mit einbauen möchte geht es leider nicht.

Der Controller sieht so aus: veranstalter.php
<?php
if ($_GET['a'] == 'show')
{
 //Xajax Objekt anlegen und Funktionen registrieren.
 include("KLassen/xajax/xajax_core/xajax.inc.php");
 $xajax = new xajax();
 $xajax->registerFunction("onSelect");
 function onSelect($sSelect, $sDestination)
 {
     $objResponse = new xajaxResponse();

$objResponse->assign($sDestination, 'innerHTML', 'You selected: ' . $sSelect);

return $objResponse;
 }
 //$xajax->setRequestURI("http://localhost/ivently/Templates/veranstalter_anmeldung.php");
 $xajax->processRequest();
 //$xajax->printJavascript('Klassen/xajax');

//Ausgabe starten
 $out = new op();
 $out->xajax = $xajax;
 $out->reg_output('divcontent.html');
 $out->reg_output('veranstalter_anmeldung.php');
 $out->reg_output('divende.html');
 $out->output();
}
?>
In der Klasse op() werden alle Datein includet die ausgegeben werden sollen.
Die Selectbox in der Datei veranstalter_anmeldung.php schaut so aus:
Stark verkürzt.
<?php
   $db = new db($this->schema);
   $zahlungsart = $db->getmatrix('SELECT zahlungsart, zahlungsart_id FROM zahlungsart');
   echo "<select name='zahlungsart' id='input_select' onchange="xajax_onSelect(xajax.$('input_select').value, 'select_output'); return false;" >";

foreach ($zahlungsart AS $data)
    {
     if (isset($fehler))
     {
      if ($_POST["zahlungsart"] == $data["zahlungsart_id"])
      {
       $check = "selected='selected'";
      }
      else
      {
       $check ="";
      }
     }
     echo "<option ";
     if (isset($check))
     {
      echo $check;
     }
     echo " value='".$data["zahlungsart"]."'>".$data["zahlungsart"]."</option>";
    }
   echo "</select>";
   ?>
<div id='select_output'></div>

value und 'select_output' soll an die funktion onSelect übergeben werden.
Da entscheide ich dann was angezeigt wird und gebe dieses dann wieder zurück.

Es wird aber nur select_output übergeben value nicht.

Warum ? In Der Testdatei schaut es genau so aus und da funktioniert es wunderbar.

Ich bitte um Hilfe bin hier echt am verzweifeln!

P.s. Kann man hier kein Code formatieren? Würde die lesbarkeit der Skriptteile wesendlich verbessern?

  1. Hi,

    In meiner Testdatei sieht das alles wunderbar aus und funktioniert auch so.

    Aha. Und wo nicht?

    Es wird aber nur select_output übergeben value nicht.

    Warum ? In Der Testdatei schaut es genau so aus und da funktioniert es wunderbar.

    Und von welcher Konstellation reden wir jetzt, was die "nicht-Testseite" angeht?

    Bitte lies die Tipps fuer Fragende - und liefere dann mal eine Problembeschreibung, die diese Bezeichnung auch verdient, in erster Linie, in dem sie ueber "funzt nicht" hinausgeht.
    Welche Debug-Schritte du selbst bisher unternommen hast, waere bspw. auch interessant.

    Ich bitte um Hilfe bin hier echt am verzweifeln!

    http://community.de.selfhtml.org/zitatesammlung/zitat51

    P.s. Kann man hier kein Code formatieren? Würde die lesbarkeit der Skriptteile wesendlich verbessern?

    Man koennte erst mal in die Hilfe schauen, bevor man hier reinplatzt ...
    </hilfe/bedienung.htm#syntax-highlighting>

    MfG ChrisB

    1. Den lästen Link habe ich mir Tatsächlich nicht angeschaut. Mein Fehler.

      Wenn du meine Problembeschreibung nicht verstanden hast, dann wirst du mein Post auch nicht aufmerksam gelesen haben. Zumindest nicht den Code.
      Oder du hast es nicht verstanden. Was ich auf Grund meines nicht formatierten Code auch verstehen kann.

      Ich konnte das Problem aber lösen.

      und zwar habe ich dieses:

        
      echo "<select name='zahlungsart' id='input_select'  
      onclick=\"xajax_onSelect(xajax.$('input_select').value, 'select_output');  
      return false;\" >";  
      
      

      ersetzt durch:

        
      echo "<select name='zahlungsart' id='input_select' onchange=\"xajax_onSelect(this.options[this.selectedIndex].value, 'select_output'); return false;\" >";  
      
      
      1. Hallo Thorsten,

        Wenn du meine Problembeschreibung nicht verstanden hast, dann wirst du mein Post auch nicht aufmerksam gelesen haben. Zumindest nicht den Code.

        ich hab' ihn kurz überflogen, nichts verstanden, was weniger an der Formatierung lag als an den Kommentaren, den fehlenden Kommentaren.

        Oder du hast es nicht verstanden. Was ich auf Grund meines nicht formatierten Code auch verstehen kann.

        Code ohne vernünftige Kommentare ist miserabler Code.
        Code, der in einem Forum präsentiert wird, sollte eher mehr Kommentare aufweisen als Quellcode. Ja, eine nette Form spricht auch für sich und macht Code lesbarer.

        Du weißt im Moment, was Du vorhast. Der potentielle Helfer weiß es nicht. Du machst es dem potentiellen Helfer sehr schwer, wenn er sich Zeile für Zeile überlegen muss, was da passiert, insbesondere bei der Verwendung einer undokumentierten und noch nicht mal verlinkten Klasse, die definitiv nicht zum Standardrepertoire der Programmiersprache gehört.

        Jemand, der Hilfe haben möchte, sollte dem Helfer keine Hindernisse in den Weg stellen, sondern nach Möglichkeit Hindernisse entfernen. Dabei kann es sein, dass man durch das Wegräumen der Hindernisse bereits die Lösung findet, noch bevor man seine Frage abgeschickt hat.

        Freundliche Grüße

        Vinzenz

  2. Lieber Thorsten,

    ich rate hier jetzt mal... vielleicht tut es aber auch nix zur Sache.

    include("KLassen/xajax/xajax_core/xajax.inc.php");

    ^^
    Du benutzt ein Windows-System zum Testen. Unter Windows sind Groß-/Kleinbuchstaben in Dateien kein Problem, da Windows sie nicht unterscheiden kann, aber auf dem Server gibt es dann plötzlich Probleme.

    Das Verzeichnis "KLassen" im Script müsste wahrscheinlich anders lauten, oder?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)