J'ai une base de données SQL avec un mot-clé « catégorie » (un seul permis) et les mots clés « problèmes » (multiple virgule mots séparés). Je suis en train de faire un menu mot-clé déroulant-peuplant sélection automatique en sélectionnant tous les mots-clés de la « catégorie » et les colonnes des « problèmes », en tournant les deux tableaux retournés dans des chaînes séparées par des virgules avec imploser, puis en combinant les cordes et exploser la chaînes séparées par des virgules dans un tableau, tout en supprimant les entrées en double avec array_unique.PHP - En utilisant imploser, exploser et array_unique pour remplir automatiquement un menu déroulant à partir de deux colonnes SQL de mots-clés séparés par des virgules
Mais cela ne fonctionne pas. J'ai essayé plusieurs approches. Voici ma dernière. Il renvoie QUELQUES valeurs de la colonne mais pas toutes, et je ne peux pas comprendre pourquoi. Peut-être que array_unique ne fonctionne pas comme je le veux, ou que je mette la conversion en chaînes et que je rejoue dans un tableau? Existe-t-il un moyen plus simple de faire cela? J'ai cherché partout et ne peux pas trouver un bon exemple n'importe où.
Voici le code je travaille maintenant ...
<?
$dropdownsql = "SELECT DISTINCT category FROM database";
$keywords = mysql_query($dropdownsql);
while($row = mysql_fetch_array($keywords))
{
echo "<option value=\"".$row['category']."\">".$row['category']."</option>\n ";
}
?>
Bien que cela fonctionne pour les mots-clés de la catégorie d'un seul mot, il ne peut évidemment pas gérer plusieurs colonnes SQL ou des mots clés séparés par des virgules dans ces colonnes . Voici ma tentative de faire de la manière la plus simple:
<?
$dropdownsql = "SELECT DISTINCT category FROM database";
$dropdownsql2 = "SELECT DISTINCT issues FROM database";
//run sql queries separately. Ideally they would be combined into one right?
$rs = mysql_query($dropdownsql);
$rs2 = mysql_query($dropdownsql2);
$row = mysql_fetch_array($rs);
$raw = mysql_fetch_array($rs2);
//then implode the resulting arrays, placing commas & spaces so they'll match
$rows = implode(", ", $row);
$raws = implode(", ", $raw);
//try to concatenate the strings of comma-separated keywords
$keywordvaluesstring = $rows.$raws;
//then explode the concatenated string back into array
$keywordvalue = explode(", ",$keywordvaluesstring);
//then keep only one copy of duplicated keywords
$values = array_unique($keywordvalue, SORT_REGULAR);
//and finally echo the keywords into a dropdown
foreach($values as $value){
echo "<option value=\"".$value."\">".$value."</option>\n ";
}
?>
Que dois-je faire le mal !!!! ????
Pourquoi ne récupérez-vous qu'une seule ligne de chacun des ensembles de résultats? –
Parce que je ne savais pas que je faisais ça. Qu'est-ce qui me fait seulement aller chercher une seule rangée? $ row est juste un nom de variable, il ne devrait pas être spécifié qu'une seule ligne soit récupérée ... – teame