[Résolu] Implode, explode et boucle for

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 : [Résolu] Implode, explode et boucle for

Re: Implode, explode et boucle for

par Selcontest » 01 juil. 2012, 17:37

Ah parfait Ryle, ça marche parfaitement !

Je te remercie ! :D

(Le sujet peut être mis résolu ou supprimer, comme vous le souhaitez ! :p )

Re: Implode, explode et boucle for

par Ryle » 01 juil. 2012, 08:30

En fait, ta boucle devrait uniquement parcourir la liste des différentes options possibles de tes checkbox pour les afficher (donc il ne faut pas boucler sur le tableau $genre, mais juste sur ta liste de cases). Ca c'est pour la liste des valeurs à afficher, indépendamment des valeurs sélectionnées que tu as en base.

Dans cette boucle, pour chaque valeur que tu affiches, tu dois tester si celle-ci a été sélectionnée (tu peux utiliser in_array() pour vérifier si la valeur que tu es en train d'afficher est dans le tableau $genre) pour ajouter ou non l'attribut checked :)

Re: Implode, explode et boucle for

par Selcontest » 30 juin 2012, 17:38

Effectivement ce n'est qu'une partie du code.

Si dans mon formulaire j'ai sélectionné 'Rock' et 'Metal' je stock dans ma BDD 'Rock, Metal' grâce a l'explode.

Donc mon print_r($genre) me donnera : Array ( [0] => Rock [1] => Metal )

Re: Implode, explode et boucle for

par sirakawa » 30 juin 2012, 10:07

Je suppose que ce n'est qu'une partie du code, vu l'image jointe,mais essaie pou nous faire comprendre ce qu'on récupère de la BDD
//Explode sur mon nouveau formulaire
$genre = explode(', ',$donnees['Genre']);
print_r($genre);// ajouté pour comprendre ce qu'on récupère de la BDD
for($i=0; $i<count($genre); $i++)
{
    if($genre[$i] == "Rock")
    {
        echo "<input type='checkbox'  name='genre[]' id='rock' value='Rock' checked='checked' />Rock<br />"; //modifié
}
else
{
        echo "<input type='checkbox'  name='genre[]' id='rock' value='Rock' />Rock<br />"; //modifié
}
}

[Résolu] Implode, explode et boucle for

par Selcontest » 30 juin 2012, 00:48

Bonsoir à tous,

J'ai un petit soucis que je ne vois pas comment régler. Je suis débutant en PHP donc j'ai un peu de mal pour le moment.

J'expose mon problème :

J'ai un formulaire qui comporte des checkbox, lors de l'envoie de mon formulaire sur ma BDD j'implode mes checkbox dans un seul champ de la base de donnée. Par la suite, j'aimerais pouvoir modifier les informations du formulaire, je créer donc une page avec un formulaire identique et je récupérer les informations de ma BDD. J'aimerais donc pouvoir checker les checkbox qui ont était imploder dans ma BDD, j'effectue donc un explode puis une boucle for.

Voici l'exemple :
//Implode dans le BDD
$genre = $_POST['genre']; 
$genre = implode(', ',$genre);

//Explode sur mon nouveau formulaire
$genre = explode(', ',$donnees['Genre']);
for($i=0; $i<count($genre); $i++)
{
if($genre[$i] == "Rock")
{
	echo "<input type='checkbox'  name='genre[]' id='rock' value='Rock' checked/>
Rock<br />";
}
else{
	echo "<input type='checkbox'  name='genre[]' id='rock' value='Rock'/>
Rock<br />";
}
}
Mon soucis est que si il existe 2 genres (ex : Rock et Metal) dans ma base de donnée, il me génère 2 fois la même information mais en cochant a chaque fois la bonne information.

Exemple :

Image

La solution serait peut être de supprimer les doublons ? Mais je n'ai pas trouvé comment faire !

Merci d'avance ! :D