Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je suis relativement perdu vu l'arrête de tout ce que je fesais donc je recherche des conseils.
En gros, ce que j'esseye de faire, c'est d'utiliser une selectbox comme liens vers une div en ajax.
Un ami ma dit '' Utilises : ($produit, $produit_id) = explode('-', $_POST['selectbox']); "

VOICI LE CODE DE MA SELECT BOX
                                <select name="services" class="selectpicker form-control">
                                    <optgroup label="service1">
                                        <?php serv1_check($mysqli); ?>
                                    </optgroup>
                                    <optgroup label="service2">
                                        <?php serv2_check($mysqli); ?>
                                    </optgroup>
                                    <optgroup label="service3">
                                        <?php serv3_check($mysqli); ?>
                                    </optgroup>
                                </select>

VOICI LE CODE POUR "GÉRER" LE LINK
                            <?php
                                $services = $_POST['services'];
                                list($produit, $produit_id) = explode('-', $_POST['services']);
                            ?>

Ce que je veux

Sauf que je ne me rappel, plus dutout la syntaxe pour avoir un code fonctionnel.
Ce que je cherche à avoir, c'est que ça fonctionne.

Lorsque je clique sur un service en particulier, je voudrais que ça affiche une DIV avec les informations relative au service selectionné
-> https://fkcd.ca/Llx.png

Ce que j'obtiens

J'obtiens rien vu que je ne sais pas comment faire.

7 réponses


Salut, tu peux peut être voir du côté Ajax avec json. C'est pareil que les listes liées !

voilà comment je fais:

partie html (là c'est un select mais ça peut très bien etre une div)

<div class="form-group">
                    <label for="sites" class="col-sm-4 control-label">Site</label>
                    <div class="col-sm-8">
                        <select name="sites" id="sites" class="form-control" required=""  size="1">
                            <option value='' selected>Sélectionner un site...</option>
                            <?php foreach($list as $l):?>
                                <option value="<?php echo $l->IDSite;?>"><?php echo $l->NomSite;?></option>
                            <?php endforeach;?>
                        </select>
                    </div><!-- site -->
                </div><!-- form-group-site -->

                <?php echo form_error('sites', '<div class="text-right text-danger col-sm-12">', '</div>');?>

                <div class="form-group">
                    <label for="sys" id="lib_sys" class="col-sm-4 control-label">Système</label>
                    <div class="col-sm-8 sys">
                        <select name="sys" id="sys" class="form-control" required=""  size="1">
                            <option value='' selected>Sélectionner un système...</option>
                        </select>
                    </div><!-- sys -->
                </div><!-- form-group-sys -->

partie js

var $site = $('#sites');
        var $sys = $('#sys');
        var $lib = $('#lib_sys');
        $sys.hide();
        $lib.hide();
        // à la sélection d'un site dans la liste
        $site.on('change', function() {
            var val = $(this).val(); // on récupère la valeur du site

            if(val != '') {
                $sys.empty(); // on vide la liste des systeme
                $.ajax({
                    url: "<?php echo site_url('ct/system/');?>/", //url vers traitement php 
                    data: 'id_site='+ val, // on envoie $_GET['id_site']
                    dataType: 'json',
                    success: function(json) {
                        $lib.show();
                        $sys.show();
                        $.each(json, function(index, value) {
                            $sys.append('<option value="'+ index +'">'+ value +'</option>');
                        });
                    }
                });
            }
        });

partie php

function system(){
       if(isset($_GET['go']) || isset($_GET['id_site'])){
           $this->load->model('ct_model');
           $json = array();
           $id = htmlentities(intval($_GET['id_site']));
           $data['sys'] =$this->ct_model->listSys($id);
           foreach ($data['sys'] as $s){
               $json[$s->IDSysteme][] = utf8_encode($s->Designation);
           }
           echo json_encode($json);
       }
    }

La partie php est en POO mais le principe est simple.
Dès que tu séléctiones une valeur dans ta liste, on envoie le résultat a la partie php via javascript en get.
Ensuite dans la partie php tu récupère la valeur du get, tu fais une requête qui va bien et tu encode en json

Enfin dès qu'on a un retour json, la fonction append te permet d'affecter ce que tu veux à un élément.

J'essaie d'être clair en esperant t'avoir aidé ;)

Merci de ta réponse :) j'ai trouvé une manière plus simple :)

Cela serait sympa de connaître cette manière simple que vous avez trouvé :)

J'aime quand les sujets sont résolu.......mais toujours pas la solution !
Peut etre un manque de respect envers les personnes qui propose de l'aide !!! Enfin je dis ça, je dit rien :/

Je n'avais même pas recus de messag disant que javais des réponses xD calmos.. Facile de juger sans savoir hein...

Voila :)

                        <?php
                            $uid = (int)$_SESSION['user_id'];
                            list($produit, $produit_id) = explode('-', $_POST['services']);
                            $produit_id = (int)$bob_id;
                            if ($bobo != 'boss' && $bob != 'bobbette' && $bob != 'bobinette') {die('Choose a service available.');}
                            $sql = "SELECT * FROM $bob WHERE u_id = $uid AND id = $bob_id";
                            $result = $mysqli->query($sql);
                                if ($row = $result->fetch_assoc()) {
                                    include "service_$produit.php";
                                } else {
                                    echo "oops !";
                                }
                        ?>

Ensuite pour le selectbox :

                                    <select name="boblist" class="selectpicker form-control" onchange="this.form.submit()">
                                        <option selected="selected">Choose your bob</option>
                                        <optgroup label="bobo">
                                            <?php call a function here ?>
                                        </optgroup>
                                        <optgroup label="bobette">
                                            <?php call a function here ?>
                                        </optgroup>
                                        <optgroup label="bob">
                                            <?php call a function here ?>
                                        </optgroup>
                                    </select>

Bonne fin de journée.

Super, merci :)