2016-03-14 4 views
0

Я пытаюсь использовать AJAX, чтобы помочь мне получить данные из моего массива PHP. Я хочу иметь возможность ввести имя и вывести соответствующий номер. Я играл с W3schools AJAX PHP-кодом, но не знаю, как изменить его, чтобы дать мне соответствующий номер, который я ищу? Мой массив выглядит следующим образом:Использование AJAX для получения данных из массива PHP

$a = array(
"Sarah" => 1, 
"Sam" => 12, 
"Tim" => 2, 
"Tom" => 13, 
}; 

Так что, когда я в том, чтобы ввести в S, то выход дал бы мне цифру 1 и 12. Можно ли вести меня к правильному способу сделать это? Текущий код, который у меня есть, находится здесь http://www.w3schools.com/php/php_ajax_php.asp.

ответ

0

Основываясь на вашей ссылке я написал этот ответ, использовать тот же HTML и JavaScript просто заменить PHP с

<html> 
<head> 
<script> 
function showHint(str) { 
    if (str.length == 0) { 
     document.getElementById("txtHint").innerHTML = ""; 
     return; 
    } else { 
     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
      } 
     }; 
     xmlhttp.open("GET", "get_hint.php?q=" + str, true); 
     xmlhttp.send(); 
    } 
} 
</script> 
</head> 
<body> 

<p><b>Start typing a name in the input field below:</b></p> 
<form> 
First name: <input type="text" onkeyup="showHint(this.value)"> 
</form> 
<p>Suggestions: <span id="txtHint"></span></p> 
</body> 
</html> 

<?php 
// Array with names 
$a[] = "Anna"; 
$a[] = "Brittany"; 
$a[] = "Cinderella"; 
$a[] = "Diana"; 
$a[] = "Eva"; 
$a[] = "Fiona"; 
$a[] = "Gunda"; 
$a[] = "Hege"; 
$a[] = "Inga"; 
$a[] = "Johanna"; 
$a[] = "Kitty"; 
$a[] = "Linda"; 
$a[] = "Nina"; 
$a[] = "Ophelia"; 
$a[] = "Petunia"; 
$a[] = "Amanda"; 
$a[] = "Raquel"; 
$a[] = "Cindy"; 
$a[] = "Doris"; 
$a[] = "Eve"; 
$a[] = "Evita"; 
$a[] = "Sunniva"; 
$a[] = "Tove"; 
$a[] = "Unni"; 
$a[] = "Violet"; 
$a[] = "Liza"; 
$a[] = "Elizabeth"; 
$a[] = "Ellen"; 
$a[] = "Wenche"; 
$a[] = "Vicky"; 

// get the q parameter from URL 
$q = $_REQUEST["q"]; 

$hint = ""; 

// lookup all hints from array if $q is different from "" 
if ($q !== "") { 
    $q = strtolower($q); 
    $len=strlen($q); 
    foreach($a as $name) { 
     if (stristr($q, substr($name, 0, $len))) { 
      if ($hint === "") { 
       $hint = array_search($name, $a); 
      } else { 
       $hint .= ", " . array_search($name, $a); 
      } 
     } 
    } 
} 

// Output "no suggestion" if no hint was found or output correct values 
echo $hint === "" ? "no suggestion" : $hint; 
?> 

выход

enter image description here

и для вашего случая.

<?php 
// Array with names 
$a = array(
"Sarah" => 1, 
"Sam" => 12, 
"Tim" => 2, 
"Tom" => 13, 
); 
// get the q parameter from URL 
$q = $_REQUEST["q"]; 

$hint = ""; 

// lookup all hints from array if $q is different from "" 
if ($q !== "") { 
    $q = strtolower($q); 
    $len=strlen($q); 
    foreach($a as $key=>$name) { 
     if (stristr($q, substr($key, 0, $len))) { 
      if ($hint === "") { 
       $hint = $name; 
      } else { 
       $hint .= ", " . $name; 
      } 
     } 
    } 
} 

// Output "no suggestion" if no hint was found or output correct values 
echo $hint === "" ? "no suggestion" : $hint; 
?> 

выход

enter image description here

+1

Спасибо! Это именно то, что я искал. – snazzyjazzy

-1

Прежде всего, ваше объявление массива неверно:

$a = array(
    'Sarah' => 1, //to make array associative you need to put key => value 
    'Sam' => 12, 
    'Tim' => 2, 
    'Tom' => 13 
); 

И это возвращает оба номера, потому что оба начинаются с «S». Если вы хотите, чтобы оценить полное имя, которое вы должны сделать это:

$numbers = []; 

foreach($a as $key => $value) { 
    if($key == $queryName) 
     $numbers[] = $value; 
} 

echo $numbers; 

Это должен возвращать массив с числами, которые точно совпадают с вашим запросом.

+0

Как числа разделены? –

Смежные вопросы