[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Массивы
Gigabit
Такс, только прошу не говорите что это элементарно, я сам знаю что это нубский вопрос! Но все же попрошу помочь...


Такс есть скрипт который автоматом заполняет форму подбирая слова по первым веденный бувам! Есть две строки формы это "Имя" и "Фамилия", вожу я в строке "Имя" букву "Н" то выводиться список со всеми именами где есть буква Н, и после того как выбрать нужное нам слова автоматом в строку Фамилия вставляется Фамилия выбранного человека ! так вот а все эти слова записаны в файле search.php вот его образец!


$q = strtolower($_GET["q"]);
if (!$q) return;
$items = array(
"Петр"=>"Иванов",
"Иван"=>"Петров",
"Марина"=>"Пугачева",
"Барак"=>"Абама",
"Чен"=>"Ли",

);


foreach ($items as $key=>$value) {
if (strpos(strtolower($key), $q) !== false) {
echo "$key|$value\n";
}
}



Так вот, мне нужна сделать так что выводились списки из БД Mysql в массив $items такой же схемой как сверху указанно, пробовал все но не как не получается, далее через цикл foreach массив идет на обработку, эту обработку так и нужно оставить! Прошу помочь мне ребят...



Спустя 13 минут, 54 секунды (19.07.2012 - 07:55) kamanch написал(а):
$simbol = "Н";
$items = array();
$query = "SELECT `firstname`, `lastname` FROM `users` WHERE `firstname` LIKE '%".$simbol."%' ";
$result = mysql_query($query);
while($user = mysql_fetch_assoc($result)){
$items[$user['firstname']] = $user['lasttname'];
}


Но есть одно большое НО!
Ты в качестве ключа у массива указываешь имя.
Ключ у массива - это уникальная штука.
И если в базе будет 2 записи:
Петр Иванов
Петр Васильев

то в массиве $items будет создан элемент с ключем "Петр" и туда записано значение "Иванов", а потом для элемента этого массива с ключем "Петр" будет перезаписано значение на "Васильев"

Т.е.
$item = array();
$item("Петр") ="Иванов";
$item("Марина") = "Пугачева";
$item("Петр") = "Васильев";

и вывод будет:
"Петр" => "Васильев"
"Марина" => "Пугачева"

Спустя 14 минут, 30 секунд (19.07.2012 - 08:10) Gigabit написал(а):
ппц.. я вроде так делал но не не получалось, хотя может и не так ! Спасибо табе получилось все ок))! скажи а есть ли возможность добавить к ним еще и отчество? или это все схему менять надо?

Спустя 4 минуты, 12 секунд (19.07.2012 - 08:14) kamanch написал(а):
Цитата
возможность добавить к ним еще и отчество?


$items[$user['firstname']][$user['lasttname']] = $user['fathername'];


Или какая тебе структура массива нужна с отчеством?

Спустя 14 минут, 41 секунда (19.07.2012 - 08:28) Gigabit написал(а):
а так можно


$items[$user['firstname']] = $user['lasttname'];
$items[$user['firstname']] =$user['fathername'];

то есть $items = array ("Иван" => "Петров", "Иван" => "Владмирович", "Петр"=>"Иванов","Петр"=>''Сергеевич")
и при вводе например Иван он не будет выводить его фамилию и плюс отчество?

для того чтобы понят о чем я может ты сам скрипт посмотришь? вот ссылка там много примеров в демо , мне нужена строка Single Bird (remote):

Спустя 4 минуты, 7 секунд (19.07.2012 - 08:33) kamanch написал(а):
Мое сообщение перечитай Одно большое НО!

В массиве не может быть 2 одинаковых ключа.
$items = array ("Иван" => "Петров", "Иван" => "Владмирович") 

Такого не бывает. "Иван" - это ключ, он уникальный.

Спустя 4 минуты, 30 секунд (19.07.2012 - 08:37) Gigabit написал(а):
что иван это ключ я знаю, вопрос как мне фамилию и отчество посадить на один ключ

Спустя 5 минут, 44 секунды (19.07.2012 - 08:43) kamanch написал(а):
Ну я ж не знаю, какая тебе структура массива нужна.

Можно так:
$items['Иван']['Петров'] = "Владмирович";


Но это все очень некрасивые решения.
И к тому же, у тебя не сможет быть 2 Ивана с разными фамилиями.

Ты опиши, что надо получить, придумаем структуру.

Спустя 17 минут, 54 секунды (19.07.2012 - 09:01) Gigabit написал(а):
мне нужно чтобы при воде БИК -(идентификационный номер банка) выводились в следующих 3 строках input название банк? его адрес, название и корреспондентский счет вот пример формы:

<form>
Бик: <input name="bik" value="">
Название банка: <input name="name" value="">
Адрес банка: <input name="adres" value="">
Корресп. счет: <input name="krsch" value="">

</forma>


Спустя 19 минут, 11 секунд (19.07.2012 - 09:20) kamanch написал(а):
</forma> буква лишняя
Остальное сейчас...

Спустя 1 час, 3 минуты, 25 секунд (19.07.2012 - 10:23) kamanch написал(а):
Фух... с этим Ajax ... вещь прикольная, но 3ий раз в жизни делаю :D

В общем... возвращаясь к предыдущему топику.
Я тебе там посоветовал разобраться в самой технологии, дал ссылку на самые примитивы, как раз то, что для твоего примера надо было.
А ты все равно ушел в какие-то фреймворки... массивы, имена, отчества...
Лично мое мнение - сначала все научиться делать ручками. А потом, когда придет понимание, что там внутри происходит, тогда уже фрейморки пользовать.
Иначе, как ты будешь ошибки вылавливать, если ты даже не понимаешь, как оно там происходит.

В общем, держи:
Под чесное слово, что разберешься в каждой строчке, а потом объяснишь своему коту так, чтобы он понял :)

Я поставил ограничение на БИК - минимум 4 символа

index.php
Свернутый текст

<html>
<
head>
<
meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<
script language="javascript" src="ajax_framework.js"></script>
</
head>

<
body>

<
form>
Бик: <input name="bik" value="" id="bik" onkeyup="javascript:search_bank()" ><br />
<
div id="result">
Название банка: <input name="name" value="" /><br />
Адрес банка: <input name="adres" value="" /><br />
Корресп. счет: <input name="krsch" value="" /><br />
</
div>
</
form>

</
body>
</
html>


ajax_search.php
Свернутый текст

<?php
define(DB_HOST, "localhost");
define(DB_USER, "root");
define(DB_PASS, "ldjksdfjklsdfjlsdjlksdjkldlsd");
define(DB_NAME, "test");

$link=mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Could not connect");
mysql_select_db(DB_NAME) or die("Could not select database");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET character_set_results = 'utf8'");
mysql_query("SET collation_connection = 'utf8_general_ci'");


if(isset($_GET['bik'])){
$bik=trim($_GET['bik']);
}

if($bik != ""){
$query="SELECT `name`, `adres`, `krsh` FROM `bank` WHERE `bik` LIKE '".$bik."%' LIMIT 0,1";
$result=mysql_query($query);
$bank = mysql_fetch_assoc($result);
?>
Название банка: <input name="name" value="<?= $bank['name'] ?>" /><br />
Адрес банка: <input name="adres" value="<?= $bank['adres'] ?>" /><br />
Корресп. счет: <input name="krsch" value="<?= $bank['krsh'] ?>" /><br />
<?php
}
?>


ajax_framework.js
Свернутый текст
/* -------------------------- */
/* XMLHTTPRequest Enable */
/* -------------------------- */

function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
} else {
request_type = new XMLHttpRequest();
}
return request_type;
}

var http = createObject();

/* -------------------------- */
/* SEARCH */
/* -------------------------- */


function search_bank() {
searchq = encodeURI(document.getElementById('bik').value);
if(searchq.length > 3){
nocache = Math.random();
http.open('get', 'ajax_search.php?bik='+searchq+'&nocache = '+nocache);
http.onreadystatechange = search_bank_Reply;
http.send(null);
}
}


function search_bank_Reply() {
if(http.readyState == 4){
var response = http.responseText;
document.getElementById('result').innerHTML = response;
}
}

Спустя 27 минут, 50 секунд (19.07.2012 - 10:51) Gigabit написал(а):
ОФИГЕТЬ! ты скрипт написал весь))) огромное тебе спасибо, я начал учить ajax ?не не так быстро дался как ты писал, но времени нет чтобы отлажить проект и учить, вот докончу его и возьмусь за обучение ajax, php, jquery
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.