PHP JQuery - formular in get_content-bereich

koffi

Lt. Junior Grade
Registriert
Jan. 2007
Beiträge
493
hallo!

ich bastle gerade an einer seite, in welcher der inhalt durch klicken auf get_content in der navigation geladen wird:

Code:
<script>
                     function get_content(id, value1, value2) {
                    $.get('content.php?param='+value1+'&type='+value2, function(data) {
                                  $('#'+id).fadeIn('slow');               
                                  $('#'+id).html(data);                                                                                   
                                                                  })
                                   }
            </script>

bei einem klick auf "gruppen" in der navigation wird dann im "main frame" der inhalt geladen:

Code:
<span style="cursor:pointer" onclick="get_content('frame_main_content', 'groups', 'menu')">groups</br></span>

in diesem "groups" bereich (geladen von der content.php), habe ich ein formular eingefügt, mit welchem man eine gruppe erstellen soll: Code habe ich von hier >>QUELLE<<

Code:
<?php
                //create new group
                require_once($_SERVER['DOCUMENT_ROOT'].'/beta/jquery/jformer.php'); 
     
    // Create the form
   $group = new JFormer('registerGroup', array(
       // 'submitButtonText' => 'Create Teams',
       // 'style' => 'width: 650px;',
       // 'title' => '<p>Team Registration Form Demo</p>',
       // 'description' => '<p>Create up to three teams of three members Each.</p><p>This demo shows off the ability for jFormer to have instantiable sections and components.</p>'
    )); 

    // Create the form section
    $section = new JFormSection($group->id.'Section', array(
        //'title' => '<p>Team Information</p>',
        //'instanceOptions' => array(
        //        'max' => 3,
        //        'addButtonText' => 'Add Team',
        //        'removeButtonText' => 'Remove Team',
        //    )
    ));

    // Add components to the section
    $section->addJFormComponentArray(array(
        new JFormComponentSingleLineText('groupName', 'Group Name:', array(
            'width' => 'long',
            'validationOptions' => array('required'),
        )),
        new JFormComponentName('member', 'Group Member:', array(
            'validationOptions' => array('required'),
            'instanceOptions' => array(
                'max' => 0,
                'addButtonText' => 'Add Member',
                'removeButtonText' => 'Remove Member',
            ),
            'middleInitialHidden' => true
        )),
        new JFormComponentTextArea('description', 'Group Description:', array(
            'width' => 'longest',
            'height' => 'medium',
            'height' => 'short',
            'validationOptions' => array('required'),
        )),
    ));
    // Add the section to the page
    $group->addJFormSection($section);

// Set the function for a successful form submission
function onSubmit($formValues) {
    
    if(is_array($formValues->registerGroupSection)){
        $message['successPageHtml'] = '<p>You have successfully registered your Group!</p><p>Groups Overview</p>';
    foreach($formValues->registerGroupSection as $instance){
        $message['successPageHtml'] .= '<h4><b>'.$instance->groupName.'</b></h4>';
        $message['successPageHtml'] .= '<p><i>'.$instance->description.'</i></p>';
        $message['successPageHtml'] .= '<p><b>Members:</b></p>';
        if(is_array($instance->member)){
            foreach($instance->member as $member){
                $message['successPageHtml'] .= '<p>'.$member->firstName.' '.$member->lastName.'</p>';
            }
        } else {
            $message['successPageHtml'] .= '<p>'.$instance->member->firstName.' '.$instance->member->lastName.'</p>';
        }
        $message['successPageHtml'] .= '<hr>';
    }
    } else {
        $message['successPageHtml'] = '<p>You have successfully registered your Group!</p><p>Groups Overview</p>';
        $formValues = $formValues->registerGroupSection;
        $message['successPageHtml'] .= '<h4><b>'.$formValues->groupName.'</b></h4>';
        $message['successPageHtml'] .= '<p><i>'.$formValues->description.'</i></p>';
        $message['successPageHtml'] .= '<p><b>Members:</b></p>';
        if(is_array($formValues->member)){
            foreach($formValues->member as $member){
                $message['successPageHtml'] .= '<p>'.$member->firstName.' '.$member->lastName.'</p>';
            }
        } else {
            $message['successPageHtml'] .= '<p>'.$formValues->member->firstName.' '.$formValues->member->lastName.'</p>';
        }
    }
    

    //$message['failureHtml'] = '<p style="margin-bottom: .5em;">Thanks for Contacting Us</p><p>Your message has been successfully sent.</p>'.json_encode($formValues);

    return $message;
}

// Process any request to the form
$group->processRequest();
?>

bei einem klick auf submit, um die gruppe zu erstellen, passiert jedoch nichts. in vermute, wegen der get_content funktion, die den inhalt ledeglich ein mal läd, das script bzw die ausgabe beim erstellen der gruppe in diesem bereich aber nicht aktualisiert wird. wenn ich das ganze formular zum gruppen erstellen direkt lade, ohne es über get_content zu holen, funktioniert es.

wie kann ich erreichen, dass das erstell-formular auch im get_content funktioniert?

hoffe das überblickt jemand :freak:


EDIT

ich hab die befürchtung dass niemand einen blassen schimmer davon hat, was ich hier quatsche. wenn ihr ahnung von jquery und dem ganzen quatsch habt, fragt mich bitte falls ihr fragen zu meinem problem habt, damit ichs genauer erkären kann. ich brauch hier gerade wirklich hilfe..
 
Zuletzt bearbeitet:
Mach mal bitte dort wo steht:

PHP:
$('#'+id).html(data);

ein

PHP:
alert(data);

und poste das hier, das wir sehen was überhaupt genau reingeladen wird.

So sieht man dann auch das Formular.

Ich denke einfach das die Form-Action nicht passt.
 
Link zum anschauen wäre interessant.
Ansonsten:

Was sagen den die Tools wie Firebug und Web-Developer?
- Fehlerkonsole
- Netzwerkmodul (Header, Antwort)
Error Logfiles (PHP)
Debugmodus der IDE?
 
@chriz0101

es wird das angezeigt, aber keine ahnung was es bedeuten soll
Code:
<script src="jquery/jquery-1.7.min.js"></script>
<script type="text/javascript" src="jquery/jformer.js" ></script>
your groups:</br>xxx</br>testgroup</br><script type="text/javascript">
// this tells jquery to run the function below once the DOM is ready
$(document).ready(function() {
 
// choose text for the show/hide link
var showText="Show the hidden text";
var hideText="Hide the text";
 
// create the toggle link
$("#hide_this").before("<p><a href='#' id='toggle_link'>"+showText+"</a>");
 
// hide the content
$('#hide_this').hide();
 
// capture clicks on the newly created link
$('a#toggle_link').click(function() {
 
// change the link text
if ($('a#toggle_link').text()==showText) {
$('a#toggle_link').text(hideText);
}
else {
$('a#toggle_link').text(showText);
}
 
// toggle the display
$('#hide_this').toggle('slow');
 
// return false so any link destination is not followed
return false;
                });
 
});
</script>

<form id="registerGroup" target="registerGroup-iframe" enctype="multipart/form-data" method="post" class="jFormer" action="/beta/content.php"><div class="jFormerAlertWrapper" style="display: none;"><div class="jFormerAlert"></div></div><div class="jFormWrapperContainer"><div class="jFormPageWrapper"><div class="jFormPageScroller"><div id="registerGroup_page1" class="jFormPage"><div id="registerGroupSection" class="jFormSection"><div id="groupName-wrapper" class="jFormComponent jFormComponentSingleLineText"><label id="groupName-label" for="groupName" class="jFormComponentLabel">Group Name:<span class="jFormComponentLabelRequiredStar"> *</span></label><input type="text" id="groupName" name="groupName" style="width: 18em;" /></div><div id="member-wrapper" class="jFormComponent jFormComponentName"><label id="member-label" for="member" class="jFormComponentLabel">Group Member:<span class="jFormComponentLabelRequiredStar"> *</span></label><div class="firstNameDiv"><input type="text" id="member-firstName" name="member-firstName" class="firstName singleLineText" value="" /><div class="jFormComponentSublabel"><p>First Name</p></div></div><div class="middleInitialDiv" style="display: none;"><input type="text" id="member-middleInitial" name="member-middleInitial" class="middleInitial singleLineText" maxlength="1" value="" style="display: none;" /><div class="jFormComponentSublabel"><p>MI</p></div></div><div class="lastNameDiv"><input type="text" id="member-lastName" name="member-lastName" class="lastName singleLineText" value="" /><div class="jFormComponentSublabel"><p>Last Name</p></div></div></div><div id="description-wrapper" class="jFormComponent jFormComponentTextArea"><label id="description-label" for="description" class="jFormComponentLabel">Group Description:<span class="jFormComponentLabelRequiredStar"> *</span></label><textarea id="description" name="description" class="textArea" style="width: 40em;height: 6em;"></textarea></div></div></div></div></div><ul class="jFormerControl"><li class="previousLi" style="display: none;"><button class="previousButton">Previous</button></li><li class="nextLi"><button class="nextButton">Submit</button></li></ul></div><script type="text/javascript" language="javascript">$(document).ready(function () { registerGroupObject = new JFormer('registerGroup', {"jFormPages":{"registerGroup_page1":{"jFormSections":{"registerGroupSection":{"jFormComponents":{"groupName":{"options":{"validationOptions":["required"]},"type":"JFormComponentSingleLineText"},"member":{"options":{"validationOptions":["required"],"instanceOptions":{"max":0,"addButtonText":"Add Member","removeButtonText":"Remove Member"}},"type":"JFormComponentName"},"description":{"options":{"validationOptions":["required"]},"type":"JFormComponentTextArea"}}}}}}}); });</script><iframe id="registerGroup-iframe" name="registerGroup-iframe" class="jFormerIFrame" frameborder="0" src="/empty.html"></iframe></form>

<div id="hide_this">
test123
</div>

@excalibur

firebug zeigt keinen fehler.

es ist in diesem sinn ja auch kein fehler vorhanden! das problem ist nur, dass der "OnSubmit" bereich des gruppen-erstell-formulars (also das, was beim drücken des submit buttons passiert" nicht in dem (durch get_content geladenen) bereich angezeigt bzw aktualisiert wird!


den link meiner seite möchte ich hier nicht veröffentlichen, da einfach noch sehr sehr viele sicherheitslücken vorhanden sind..
 
Zuletzt bearbeitet:
Naja deine onsubmit function ist eine PHP funktion, diese muss durch ein Formular-Request (Sei es n GET oder POST, auch über AJAX realisierbar) aufgerufen werden.

Ich kenn mich leider nicht mit Formularen aus die ihre targets auf IFRAMES setzen.
 
ich habe das problem nun entwas eingezäunt.. verstehe dennoch nicht wo genau es liegt.

also, es sieht folgendermaßen aus: ich öffne meine seite:
meineseite.de/beta/content.php?param=groups&type=menu

wenn ich die anzeige des formulars abhängig mache von den parametern in der url, funktioniert die onSubmit funktion nicht!

Code:
    if ($_GET['param'] == 'groups') : {                   
                 //create new group
     
    // Create the form
   $group = new JFormer('registerGroup', array(
    )); 
    // Create the form section
    $section = new JFormSection($group->id.'Section', array(
    ));
    // Add components to the section
    $section->addJFormComponentArray(array(
        new JFormComponentSingleLineText('groupName', 'Group Name:', array(
            'width' => 'long',
            'validationOptions' => array('required'),
        )),
        new JFormComponentName('member', 'Group Member:', array(
            'validationOptions' => array('required'),
            'instanceOptions' => array(
                'max' => 0,
                'addButtonText' => 'Add Member',
                'removeButtonText' => 'Remove Member',
            ),
            'middleInitialHidden' => true
        )),
        new JFormComponentTextArea('description', 'Group Description:', array(
            'width' => 'longest',
            'height' => 'medium',
            'height' => 'short',
            'validationOptions' => array('required'),
        )),
    ));
    // Add the section to the page
    $group->addJFormSection($section);
// Set the function for a successful form submission
function onSubmit($formValues) {
    
    if(is_array($formValues->registerGroupSection)){
        $message['successPageHtml'] = '<p>You have successfully registered your Group!</p><p>Groups Overview</p>';
    foreach($formValues->registerGroupSection as $instance){
        $message['successPageHtml'] .= '<h4><b>'.$instance->groupName.'</b></h4>';
        $message['successPageHtml'] .= '<p><i>'.$instance->description.'</i></p>';
        $message['successPageHtml'] .= '<p><b>Members:</b></p>';
        if(is_array($instance->member)){
            foreach($instance->member as $member){
                $message['successPageHtml'] .= '<p>'.$member->firstName.' '.$member->lastName.'</p>';
            }
        } else {
            $message['successPageHtml'] .= '<p>'.$instance->member->firstName.' '.$instance->member->lastName.'</p>';
        }
        $message['successPageHtml'] .= '<hr>';
    }
    } else {
        $message['successPageHtml'] = '<p>You have successfully registered your Group!</p><p>Groups Overview</p>';
        $formValues = $formValues->registerGroupSection;
        $message['successPageHtml'] .= '<h4><b>'.$formValues->groupName.'</b></h4>';
        $message['successPageHtml'] .= '<p><i>'.$formValues->description.'</i></p>';
        $message['successPageHtml'] .= '<p><b>Members:</b></p>';
        if(is_array($formValues->member)){
            foreach($formValues->member as $member){
                $message['successPageHtml'] .= '<p>'.$member->firstName.' '.$member->lastName.'</p>';
            }
        } else {
            $message['successPageHtml'] .= '<p>'.$formValues->member->firstName.' '.$formValues->member->lastName.'</p>';
        }
    }
                 return $message;
                      }
      // Process any request to the form
     $group->processRequest();  
                                                                        
    }  endif;


wenn ich das formular jedoch unabhängig mache von allen url parametern (sprich: wenn ich " if ($_GET['param'] == 'groups') : " rausnehme) , funktioniert es einwandfrei!
wie lässt sich das erklären??
 
Das lässt sich einfach feststellen. Mach mal statt
Nimm den If mal bitte heraus und mache

PHP:
echo $_GET["param"]; 
exit();

Dann solltest du nur eine Zeile Text sehen, der sagt dir genau was daran nicht stimmt.

Vielleicht liegt es an deinem Menü/AJAX-Request, etc?

WENN dort "groups" drinsteht, dann nimm mal bitte die geschweifte klammer am Ende der If-Zeile raus. Ich glaube das du diese nicht brauchst wenn du den Doppelpunkt und am ende das endif; benutzt.
 
es steht ganz einfach "groups" da, wie erwartet.
ich verstehe nicht wie mir das hätte helfen sollen.. :(

die geschweiften klammern habe ich auch mal weggelassen. kein unterschied.


wenn die if anweisung nicht passen würde, würde das ganze formular ja nicht angezeigt werden. aber es wird angezeigt, funktioniert aber nicht! wenn ich die if anweisung ganz weglasse, wird es auch ungezeigt UND funktioniert!
ich glaube ich habe einen fehler in der matrix gefunden oder so. für mich unerklärlich
 
Zuletzt bearbeitet:
nimm mal den doppelpunkt beim if weg und alles was hinter der allerletzten geschweiften klammer ist (endif;)
 
also du meinst so?

Code:
if ($_GET['param'] == 'groups') {

hier der ganze form-block

};

oder so?

Code:
if ($_GET['param'] == 'groups') :

hier der ganze form-block

endif;

in beiden varianten wird das formular angezeigt, funktioniert aber nicht.
 
Kann es sein, dass der Code beim onSubmit nochmals durchlaufen wird, aber dann der Parameter groups in GET fehlt und so das Formular nicht mehr richtig zusammengebaut wird?

Wenn "groups" in GET vorhanden ist, dann übertrag das mal in $_SESSION und frage das auch in der if-Anweisung ab. Variablen in SESSION bleiben dir ja im Gegensatz zu GET erhalten. (session_start() am Anfang nicht vergessen)
 
tatsache. das war das problem. vielen dank für die hilfe!
 
Zurück
Oben