2
votes

Comment ajouter un paramètre à l'URL selon l'option de filtre que l'utilisateur choisit en PHP

Je crée une fonction de filtrage avancée où les utilisateurs peuvent filtrer les résultats des publications en fonction de la catégorie sélectionnée.

Et je veux que mon URL ressemble à ceci: https: // localhost / unairevent / event / list_event / category [] = 2 & category [] = 40

(la chaîne de catégorie dans l'URL est extraite de l'option de filtre que l'utilisateur choisit en utilisant la sélection multiple)

ajouter des chaînes à l'URL en fonction des options de filtre choisies par l'utilisateur?


J'ai essayé d'utiliser une méthode comme celle-ci:

<section class="box text-center">
        <?php 
        $sort = $this->input->post('sort');
        $category = $this->input->post("get_kategori_acara_css[]");
        $interest = $this->input->post("get_interest_acara_css[]");
        ?>

   <?php echo form_open("acara/list_acara/".$category);?>
    <div class="form-inline">
      <p>Advanced Sort & Filter</p>
        <div class="form-group">
          <select class="form-control" name="sort">
            <option selected="selected" disabled="disabled" value="">Sort By </option>
            <option value="acara.id_acara">Newest</option>
            <option value="hits_acara.hits">Trending</option>
            <option value="tanggal_mulai_acara">Upcoming</option>
          </select>
        </div>
        <div class="form-group">
            <?php echo form_dropdown('', $get_checkbox_kategori, '', $get_kategori_acara_css); ?>
        </div>
        <div class="form-group">
            <?php echo form_dropdown('', $get_checkbox_interest, '', $get_interest_acara_css); ?>
        </div>
            <button type="submit" class="btn btn-primary">Submit</button>
    </div>
    <?php echo form_close();?>
  </section>

Mais une erreur affichée comme celle-ci:

Message: conversion de tableau en chaîne


Afficher l'image d'erreur

Afficher l'image d'erreur

L'image du filtre avancé

L'image du filtre avancé


3 commentaires

/ category [] = 2 & category [] = 40 n'est probablement pas ce que vous voulez. Voulez-vous dire qu'il devrait s'agir d'une chaîne de requête? ? category [] = 2 & category [] = 40 (le ? dans l'URL est important car il indique que ce qui suit est la chaîne de requête).


Découvrez http_build_query () . Cette fonction peut convertir des tableaux en chaînes de requête.


Utilisez-vous Controller dans Codeigniter?


3 Réponses :


0
votes

Le nom de la liste déroulante du concert et de la conférence en tant que tableau peut contenir plusieurs valeurs sélectionnées.

<select multiple name="concert[]" >

L'impression du tableau du concert à la fin de PHP affichera toutes les valeurs sélectionnées.


0 commentaires

0
votes

Cela vous permet d'utiliser le paramètre GET au lieu d'utiliser des segments d'URL. Le test initial doit être effectué via des URL et une fois le test terminé, essayez d'envoyer le paramètre du côté client comme JavaScript

Exemple:

http: // localhost / unairevent? category = 1,2,3,4

En utilisant Codeigniter, vous pouvez obtenir comme ceci:

$ this-> input-> get ('category'); / * Cela renverra la valeur - 1,2,3,4 * /

Vous pouvez maintenant diviser ceci par une virgule et pousser vers array.

$ category_array = exploser (",", $ this-> input-> get ('category'));

Afin de conserver la session de sélection d'entrée, vous pouvez utiliser cette méthode


7 commentaires

désolé, ce problème est résolu. Mais montré un nouveau problème -_- Afficher une erreur comme ceci => Message: conversion de tableau en chaîne


J'utilise codeigniter. Voici mon code de vue: pastebin.com/rPtQvcdK Voici mon code de contrôleur: pastebin.com/mxkS1LEk Mon message d'erreur: prntscr.com/m4dsfb


get_kategori_acara_css [] = 6, n'utilisez pas [] dans votre URL, utilisez simplement get_kategori_acara_css = 6,5,3


Vous ne pouvez pas passer le tableau dans une chaîne comme celle-ci 'name' => 'get_kategori_acara_css []',


Vous pouvez utiliser la liste déroulante du formulaire personnalisé à la place en utilisant form_dropdown ('shirts', $ options, $ shirts_on_sale);


Votre code a tellement de problèmes et doit être résolu un par un, donc ce commentaire n'est pas l'endroit où vous pouvez vous attendre à votre aide


Posez une question simple et décrivez vos besoins sans taper de code afin que la communauté vous guide pour cela, puis vous pouvez suivre le chemin à la place en corrigeant tant de problèmes dans votre code



0
votes

vous ne pouvez pas obtenir une URL comme celle-ci

​​ https: // localhost / unairevent / event / list_event / category [] = 2 & category [] = 40

au lieu de ceux-ci à votre contrôleur d'événements à la méthode list_event ... vous pouvez avoir ces choses lorsque vous utilisez la méthode get ... que votre URL devrait être https: // localhost / unairevent / event / list_event? category [] = 2 & category [] = 40

et changez-le

<select class="form-control" name="sort[]" multiple>

en .. cela semble être un problème

var_dump($category);
var_dump($interest);

votre variable $ category et $ interest sera un tableau si vous l'avez défini comme tableau auparavant ...

essayez de déboguer votre erreur puis ... ajoutez-les après avoir défini des variables ..

$category = $this->input->post("get_kategori_acara_css");
$interest = $this->input->post("get_interest_acara_css");

s'il vous montre une chaîne ... là vous allez ... tout va bien ... supprimez var_dump et amusez-vous .. sinon .. vérifiez-le ... c'est pourquoi vous l'obtenez sous forme de tableau .. et passez ces éléments sous forme de chaîne ...

à votre vue .. changez ces deux choses ... changez votre triez en sort [] et ça marche ..

$category = $this->input->post("get_kategori_acara_css[]");
$interest = $this->input->post("get_interest_acara_css[]");


0 commentaires