Fix autocomplete

Fix autocomplete
This commit is contained in:
novgorodschi catalin
2026-08-05 14:14:10 +03:00
parent dcb9311f4c
commit 077708ef84
4 changed files with 86 additions and 13 deletions
+2 -2
View File
@@ -46,8 +46,8 @@ if ($x!== '' && $y!== '' && is_numeric($x) && is_numeric($y)) {
$getwref = (int)$database->getVilWref((int)$x, (int)$y);
$checkexist = $database->checkVilExist($getwref);
} elseif ($dname!== '') {
// Preferam satele jucatorului: numele NU sunt unice (vezi getVillageByName).
$getwref = (int) $database->getVillageByName($dname, true, (int) ($session->uid ?? 0));
// Accepta si formatul dat de autocomplete pentru nume ambigue: "Nume (x|y)".
$getwref = (int) $database->resolveVillageInput($dname, (int) ($session->uid ?? 0));
$checkexist = $database->checkVilExist($getwref);
}
+27 -3
View File
@@ -23,10 +23,34 @@ if ($acV1 || $acV2 || $acV3) {
$acV3
);
echo '<datalist id="dnameSuggest">';
foreach ($acNames as $acName) {
echo '<option value="' . htmlspecialchars($acName, ENT_QUOTES) . '">';
/**
* Numele de sate NU sunt unice - cele 13 sate de Minune ale Natarilor se
* cheama toate "WW village". Daca sugestia trimite doar numele, cautarea
* poate nimeri alt sat, iar resursele pleaca aiurea.
*
* Asa ca adaugam coordonatele DOAR la numele care apar de mai multe ori.
* Numele unice raman curate, deci pentru majoritatea jucatorilor nu se
* schimba nimic.
*/
$acCount = array();
foreach ($acNames as $acRow) {
$acKey = $acRow['name'];
$acCount[$acKey] = isset($acCount[$acKey]) ? $acCount[$acKey] + 1 : 1;
}
echo '<datalist id="dnameSuggest">';
foreach ($acNames as $acRow) {
$acValue = $acRow['name'];
if ($acCount[$acRow['name']] > 1) {
$acValue .= ' (' . (int) $acRow['x'] . '|' . (int) $acRow['y'] . ')';
}
echo '<option value="' . htmlspecialchars($acValue, ENT_QUOTES) . '">';
}
echo '</datalist>';
}
?>