[RESOLU] Selection multiple + explode + stockage SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Selection multiple + explode + stockage SQL

Re: Selection multiple + explode + stockage SQL

par Dunrow » 04 août 2014, 17:30

Ah mais oui ! Je l'avais fais mais je l'avais retiré !

Merci beaucoup à vous deux ! Tout fonctionne :)

Bonne journée à vous ! :)

Re: Selection multiple + explode + stockage SQL

par Ryle » 04 août 2014, 16:28

Pour pouvoir passer plusieurs valeurs sous un même nom/champ à php, il faut que le nom de ton select soit suivi de crochets :
<select name="select_multiple[]">

Le résultat reçu par php est alors un tableau que tu peux parcourir. Pour chaque valeur tu pourras ainsi exécuter l'explode et le traitement
foreach ($_POST['select_multiple'] as $selectMultiple) {
   $results = explode('+', $selectMultiple);
   ...
}

Re: Selection multiple + explode + stockage SQL

par Dunrow » 04 août 2014, 16:13

C'est ça ! Mais du coup il va prendre que le 1er perso et le 1er métier la non? :o

(Enfin la en l’occurrence il me récup juste le dernier, logiquement je devrais avoir 4 persos là ^^')
array (size=2)
  0 => string '8' (length=1)
  1 => string '1' (length=1)

array (size=2)
  0 => string '' (length=0)
  1 => string '' (length=0)

Re: Selection multiple + explode + stockage SQL

par xTG » 04 août 2014, 13:16

Si je comprends bien tu souhaites récupérer deux array ?
$results = explode('+', $_POST['select_multiple']);
$perso = array();
$metier = array();
foreach($results as $value)
{
   $perso[] = $value[0];
   $metier[] = $value[1];
}
var_dump($perso);
var_dump($metier);

Selection multiple + explode + stockage SQL

par Dunrow » 04 août 2014, 12:34

Bonjour à tous,

Je suis confronté à un petit soucis et j'ai donc grandement besoin de vous ! :D

Voilà, j'ai une liste de personnalité dans un select multiple, chaque personnalité a un ou plusieurs métier(s). J'affiche l'id de la personnalité et de son métier comme ceci

Code : Tout sélectionner

<option value='[id_perso]+[id_metier]'>George Delajungle</option>
Ce qui me donne par exemple : value="22+1".

Le soucis est que je sais pas trop comment faire mon explode pour d'un coté garder juste les id_perso et de l’autre les id_métier (foreach ? Selection pair/impair dans le tableau ?)

Je stock ensuite dans une table films_perso_metier, l'id du film, l'id du personnage et l'id du métier (Le tout afin de faire une jointure entre les tables films, personnalite et metier)

Concernant la requête SQL je fais un truc du genre :

Je stock mon film > je récup l'id du film (lastInsertId) > je stock les infos concernant les persos à l'aide d'une boucle for

Code : Tout sélectionner

for($i=0;$i<count($perso);$i++) { $req = $bdd->prepare('INSERT INTO films_perso_metier(id_films, id_perso, id_metier) VALUES(:id_films, :id_perso, :id_metier)'); $req->execute(array( 'id_films' => $last_id, 'id_perso' => $perso[$i], 'id_metier' => $metier[$i] )); }
J'espère avoir été clair !

Merci d'avance à vous ! :)