2013-06-17 2 views
0

J'ai un formulaire de recherche comme celui-ci dans un fichier form.php. Cela fonctionne très bien, le problème auquel je suis confronté est que j'utilise la classe/méthodes (fonctions). Par exemple j'ai cette méthode qui appelle le logo et la barre de manu.actualiser la page sans rediriger

 //$this->output is just a method that echos, that's all it does 

     function header() 
     { 
      $this->output('<DIV CLASS="header">'); 
      $this->logo(); 
      include('form.php'); 
      $this->links(); 
      $this->header_clear(); 
      $this->output('</DIV>'); 
     }   

Comme ci-dessus, la forme montre parfaitement, mais lorsque je choisis une catégorie qu'il me faut pour form.php, et il ruine tout. (Form.php est juste une forme)

Je sais que le problème est ici

 onChange="javascript:this.form.action='form.php'; 
     this.form.submit() 

Sans javascript je ne pouvais pas obtenir les valeurs de la catégorie, la page n'est pas rafraîchissante, donc $ _POST [ « cat » ] est vide.

Quelle est la meilleure façon de rafraîchir la page sans me prendre à un autre?

Je sais probablement tout cela confus, juste garder avec moi.

 <form enctype="multipart/form-data" name="form" id="form" action="form.php"  
     method="get"> 
    <SELECT name="cat" onChange="javascript:this.form.action='form.php'; 
     this.form.submit()"> 
    <option value="" >Categories</option> 

    <?php 

    $z = "0" ; 

    //Select categories form database 

    $category =db_select_categories($z); 
    if(is_array($category)) 
    { 
    foreach($category as $rowc) 
    { 
    $id_cat = htmlentities($rowc['id_cat'], ENT_QUOTES); 
    $cat_name = htmlentities($rowc['cat_name'], ENT_QUOTES, 'utf-8'); 
    $cat_name = stripslashes($cat_name); 
    echo "<option style=\"background-color:#FFCC99\" disabled>".$cat_name." 
      </option>"; 

    $categories = db_select_categories($id_cat); 
    if(is_array($categories)) 
    { 
    foreach($categories as $row) 
     { 
    $id = htmlentities($row['id_cat'], ENT_QUOTES); 
    $name = htmlentities($row['cat_name'], ENT_QUOTES, 'utf-8'); 
    $name = stripslashes($name);   
    if ($cat == $id) 
    { 
    echo "<option value='".$id."'selected> ".$name."</option>"; 
    } 
    else 
    { 
    echo "<option value=".$id."> ".$name."</option>"; 
    } 
    } 
    } 
    } 
    } 
    echo "</SELECT>"; 

    ?> 


    <div> 
    <?php 
    if(!empty($cat))  
    { 
    //Outputs a populated select option depending on category 
    display_search_options($cat); 
    } 
    ?> 
    </div> 
+1

S'il vous plaît fixer votre tabbing. –

+0

Vous devrez utiliser AJAX afin de soumettre un formulaire asynchrone. Puis gérer la réponse de cet appel. C'est le seul moyen de ne pas actualiser la page entière. – evasilchenko

+0

On m'a suggéré d'utiliser AJAX, mais je n'ai jamais touché AJAX auparavant. Des liens vous pouvez me diriger vers? –

Répondre

0

Si vous ne voulez pas aller à la forme, il suffit de faire aller ailleurs ...

onChange="javascript:this.form.action='index.php'; 
     this.form.submit() 
+0

J'ai pensé à cela, mais j'ai encore quelques fichiers qui ont le même en-tête. Donc, ça ne marchera pas –

+0

Utilise une variable pour savoir où tu es ... Peut-être $ _SERVER ['REQUEST_URI'] – Salketer

Questions connexes