Problème avec explode

Par Yan Bourgeois, il y a 9 ans


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

cid5420, il y a 9 ans

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é ;)

Yan Bourgeois, il y a 9 ans

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

flaith, il y a 9 ans

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

cid5420, il y a 9 ans

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 :/

Yan Bourgeois, il y a 9 ans

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

Yan Bourgeois, il y a 9 ans

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.

flaith, il y a 9 ans

Super, merci :)