Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pb avec in array

2 réponses
Avatar
Logone
Salut,

J'ai un soucis pour recuperer des valeurs dans un liste deroulante, j'ai
dans un base de donnée les valeurs de la liste sous forme de tableau

a sa voir que si je fais echo $data[0] j'ai "Info,Voyages,Loisirs" etc

Je voudrais recuperer et mettre en position selected ces valeurs dans une
liste deroulante si elle sont presente dans la liste biensur. autre chose a
savoir je peux avoir dans le resultat de $data[0] des elements qui
n'apparaissent pas dans la liste et je voudrais les rajouter dans la liste
deroulante. Par ex dans mon tableau j'ai "Info,Voyages,Loisirs,Bijoux" et
dans ma liste j'ai

Info
Voyages
Loisirs
Golf
Voiture

Voici un bout de code que j'ai commence

$champs = explode (",", $data[0]);
$rubrique1 = "Informatique";
$rubrique2 = "Voyages";
$rubrique3 = "Finance";
$rubrique4 = "Enfants";
$rubrique5 = "Electromenager";

if (in_array ("Voyages", $champs)) {
$selection2="SELECTED";
}
if (in_array ("Finance", $champs)) {
$selection3="SELECTED";
}
if (in_array ("Enfants", $champs)) {
$selection4="SELECTED";
}
if (in_array ("Electromenager", $champs)) {
$selection5="SELECTED";
}
echo "<option value='$rubrique1' $selection1>$rubrique1</option>";
echo "<option value='$rubrique2' $selection2>$rubrique2</option>";
echo "<option value='$rubrique3' $selection3>$rubrique3</option>";
echo "<option value='$rubrique4' $selection4>$rubrique4</option>";
echo "<option value='$rubrique5' $selection5>$rubrique5</option>";


Je devrais avoir de selectionné Info Voyages Loisirs et bijoux ui devrais se
rajouter a la liste

Je pense avoir ete assez clair merci de votre aide.

2 réponses

Avatar
Olivier Miakinen

if (in_array ("Voyages", $champs)) {
$selection2="SELECTED";
}


Je suppose que tu as initialisé $selection2 à "" avant de commencer ?
Note que tu pourrais aussi bien le faire ici, ce qui évite d'en oublier.
Par exemple :

if (in_array("Voyages", $champs)) {
$selection2="SELECTED";
} else {
$selection2="";
}

Autre méthode, encore plus simple :

$selection2 = (in_array("Voyages", $champs)) ? "SELECTED" : "";

if (in_array ("Electromenager", $champs)) {
$selection5="SELECTED";
}


Si tu fais un site en français, autant le faire jusqu'au bout :
« Électroménager » avec deux accents aigus. Bien sûr, tu devras savoir
quel charset tu utilises ; un autre moyen est avec les entités nommées :
« &Eacute;lectrom&eacute;nager ».

echo "<option value='$rubrique1' $selection1>$rubrique1</option>";
echo "<option value='$rubrique2' $selection2>$rubrique2</option>";
echo "<option value='$rubrique3' $selection3>$rubrique3</option>";
echo "<option value='$rubrique4' $selection4>$rubrique4</option>";
echo "<option value='$rubrique5' $selection5>$rubrique5</option>";


Rajoute donc des "n" pour rendre lisible le code HTML généré.

Je devrais avoir de selectionné Info Voyages Loisirs et bijoux ui devrais se
rajouter a la liste


Oui. Déjà cela devrait rajouter SELECTED à chacune des lignes
concernées. Est-ce que cela le fait ?

Je pense avoir ete assez clair merci de votre aide.


Pas exactement, puisqu'on ne sait pas où ça foire. Est-ce que le code
HTML n'est pas généré comme il faut, ou bien est-ce que c'est ce qu'en
fait le navigateur qui ne te convient pas ?

Rajoute donc les n à la fin de chaque ligne, puis regarde ce que cela
donne. Si les SELECTED sont correctement placés, va sur fciw.auteurs
poser la question concernant le HTML. Sinon, reviens ici nous dire ce
qui ne va pas.

--
Olivier Miakinen

Avatar
Bruno Desthuilliers
Salut,
(snip)

Voici un bout de code que j'ai commence

$champs = explode (",", $data[0]);
$rubrique1 = "Informatique";
$rubrique2 = "Voyages";
$rubrique3 = "Finance";
$rubrique4 = "Enfants";
$rubrique5 = "Electromenager";

if (in_array ("Voyages", $champs)) {
$selection2="SELECTED";
}
if (in_array ("Finance", $champs)) {
$selection3="SELECTED";
}
if (in_array ("Enfants", $champs)) {
$selection4="SELECTED";
}
if (in_array ("Electromenager", $champs)) {
$selection5="SELECTED";

echo "<option value='$rubrique1' $selection1>$rubrique1</option>";
echo "<option value='$rubrique2' $selection2>$rubrique2</option>";
echo "<option value='$rubrique3' $selection3>$rubrique3</option>";
echo "<option value='$rubrique4' $selection4>$rubrique4</option>";
echo "<option value='$rubrique5' $selection5>$rubrique5</option>";



WTF ? (http://thedailywtf.com)

$rubriques = Array(
"Informatique",
"Voyages",
"Finance",
"Enfants",
"Electromenager"
);

$champs = explode (",", $data[0]);

// xhtml compat
$selected = "selected='selected'";

// <option> doit être dans un <select>
echo "<select name='???'>n";

foreach ($rubriques as $rubrique) {
echo "<option value='$rubrique'"
. (in_array($rubrique, strip($champs)) ? $selected : '')
. "'>$rubrique</option>n";
}
echo "</select>n";

Dès que tu commences à avoir des noms genre variable1, variable2,
variableN, c'est qu'il est temps d'utiliser une liste...


Je devrais avoir de selectionné Info Voyages Loisirs


Si tu veux une selection multiple, il faut le dire :

<select multiple="multiple">
...
</select>

Ceci étant, en matière d'ergonomie, pour une selection multiple dans un
ensemble restreint, les cases à cocher sont une meilleure solution.

et bijoux ui devrais se
rajouter a la liste


Ah bon ? Comme ça, par magie ? Il est où le code qui est supposé gérer ça ?

Contrairement aux navigateurs[1], l'interpréteur PHP fait *très
exactement* [2] ce que tu lui demandes. *Et pas plus*. Bref, si tu ne
lui demande pas *explictement* quelque chose, il ne le fera pas [2]. Je
sais, c'est décevant, mais on n'a pas encore inventé les ordinateurs
télépathes...

[1] qui, pour une raison qui m'échappe, s'obstinent à essayer de rendre
un marquage invalide au lieu d'afficher un bon gros "syntax error", avec
pour résultat que la grande majorité des pages web sont une immonde
soupe de tags qui, avec un peu de chance, ressemblent plus ou moins au
résultat escompté - du moins dans le navigateur le plus buggé de la
planète...

[2] enfin, la plupart du temps. Mais c'est un autre troll^Mdébat.

Je pense avoir ete assez clair


Au moins sur un point : il est temps d'apprende le HTML !-)

<hs>
Pour info, la norme est là:
http://www.w3.org/TR/html4
</hs>

Sinon, il *pourrait* aussi être utile de préciser ce que tu obtiens
comme résultat (outre le fait que le html généré ne passe pas la
validation...). Aussi surprenant que ça puisse paraître, les lecteurs de
ce groupe ne sont pas plus télépathes que l'interpréteur PHP !-)