Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260

Вытягивание из базы в текстовое поле, после нажатия на кнопку в PHP

20.10.2013, 03:01. Показов 2216. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, мир! Можете помочь найти мою ошибку? Пишу след. вещь:

Есть текстовая форма. Рядом кнопки, которые выводятся в цикле. Значение кнопок выводятся из базы. Сколько записей в базе, столько и кнопок. Создаю новый файл с JS функцией, которая должна выводить в текстовое поле onlick-ом записи из базы. Каждая кнопка, должна выводить свое значение. И собственно застрял на той элементарной вещи, когда нужно вывести в текстовое поле запись из базы.

--------

У меня получилось так:

Цикл, выводящий значение кнопок.
PHP
1
2
3
4
5
$connect = new PDO('mysql:host=' . HOST . '; dbname=' . BASE . '', USSER, PASS);
$WaM_sql = $connect -> query("SELECT id,text FROM messages WHERE text LIKE('%$WaM_messages%') LIMIT 10");
while($row = $WaM_sql -> fetch()) {
    echo '<input type="button" value="' . $row['text'] . '" onClick="WaM_add()" class="WaM_helps">' . '<br>' . "\n";
}
Дальше функция, которая выводит в текстовое поле запись из базы. Но здесь у меня и вся проблема.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
echo '
     <script type="text/javascript">
        function WaM_add() {
            var WaM;
            var message; 
 
            WaM = document . getElementById("message"); 
            message = WaM . selectionStart;
            WaM . value = WaM . value . substr(0, message) + "';
            
                $id_text = $_POST['id'];
                $WaM_wsql = $connect -> query("SELECT id,text FROM messages WHERE id='$id_text'");
                
                if(empty($id_text)) {
                    $row = $WaM_sql -> fetch();
                    echo $row['text'] . ' ';
                } else {
                    echo 'Ввесите текст';
                }
                
echo        '" + WaM . value . substr(message);
        }
    </script>
    ';
При нажатии на любую из кнопок, выводится лишь первую запись из таблицы. А нужно чтоб выводила примерно так:

кнопка => helps, должна в текстовое поле выводить helps
кнопка => news password, должна в текстовое поле выводить news password
ну и так далее.

Надеюсь на вашу помощь.

Добавлено через 4 минуты
Вся мая проблема заключается (думается мне) находится в SQL запросе. Если проблема в SQL, то скажите где именно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2013, 03:01
Ответы с готовыми решениями:

Создать кнопку и текстовое поле. При нажатии на кнопку ввести в текстовое поле текущее время
Создать кнопку и текстовое поле. При нажатии на кнопку ввести в текстовое поле текущее время .

Если текстовое поле пустое, должен показываться span после нажатия на кнопку, если нет, то span не появляется
не работает следующий код. Если текстовое поле пустое, должен показываться span после нажатия на кнопку, если нет, то span не появляется: ...

После нажатия кнопки button должно выводиться текстовое поле
После нажатия кнопки button должно выводиться текстовое поле. Не знаю как. И вообще я новичок в яваскрипт, напишите пожалуйста.(

11
Заблокирован
20.10.2013, 04:02
Ваша проблема в том, что вы ни разу не заглянули в хтмл код, чтобы увидеть как оно там вообще и в частности как ваша прелестная функция выглядит.

Добавлено через 7 минут
JavaScript
1
WaM . value = WaM . value . substr(0, message) + "';
Что означают пробелы вокруг точек?

Короче, БД тут не стояла, вы не различаете серверный скрипт и клиентский. Идите в рубрику для начинающих.

Добавлено через 4 минуты
Вот такая у вас "функция" в хтмле:

JavaScript
1
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
        function WaM_add() {
            var WaM;
            var message; 
 
            WaM = document . getElementById("message"); 
            message = WaM . selectionStart;
            WaM . value = WaM . value . substr(0, message) + "_текст первой записи из бд_" + WaM . value . substr(message);
        }
    </script>
Заинтересовал? Проверяйте.
1
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
20.10.2013, 04:21  [ТС]
Цитата Сообщение от sqlnub Посмотреть сообщение
Ваша проблема в том, что вы ни разу не заглянули в хтмл код, чтобы увидеть как ... ваша прелестная функция выглядит.
Я смотрел, и меня устраивает

Цитата Сообщение от sqlnub Посмотреть сообщение
Что означают пробелы вокруг точек?
Это как бы сказать мой почерк .. так мне больше нравится писать. Как бы видно где есть что. Чтоб не путаться с кодами.

Цитата Сообщение от sqlnub Посмотреть сообщение
Короче, БД тут не стояла, вы не различаете серверный скрипт и клиентский.
Ну .. вообще-то это не так. В моем случаи нужно было импортировать яваскрипт в php, поэтому получилось как есть. Главное что работает. и меня устраивает.

Цитата Сообщение от sqlnub Посмотреть сообщение
Вот такая у вас "функция" в хтмле:
...
Заинтересовал? Проверяйте.
Да, я в курсе .. меня это не удивляет
0
Заблокирован
20.10.2013, 09:55
Бедняга, не нашел сил признать мегакосяк.

Цитата Сообщение от Gauga Посмотреть сообщение
При нажатии на любую из кнопок, выводится лишь первую запись из таблицы. А нужно чтоб выводила примерно так:
Другими словами теперь вас такое поведение скрипта вполне устраивает. Ну что же, значит тема исчерпана.
0
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
20.10.2013, 16:32  [ТС]
Будьте внимательны, перед отправкой сообщений. Читайте, а потом пишите:
Можете помочь найти мою ошибку?

Цитата Сообщение от sqlnub Посмотреть сообщение
Бедняга, не нашел сил признать мегакосяк.
Где по вашему я не признал свой косяк?

Добавлено через 2 минуты
Цитата Сообщение от Gauga Посмотреть сообщение
Вся мая проблема заключается (думается мне) находится в SQL запросе. Если проблема в SQL, то скажите где именно?
И здесь я тоже сказал о совершенной своей ошибки.

Добавлено через 1 минуту
Помогите найти ошибку ..

Добавлено через 5 минут
Цитата Сообщение от sqlnub Посмотреть сообщение
Другими словами теперь вас такое поведение скрипта вполне устраивает.
А где мануале на официальном сайте php разработчиков, написано как нужно писать скрипты? Где нужно ставить пробелы, а где слитно? Знаю лишь одно, что между ними можно ставить пробелы (и не важно сколько). Главное чтоб логика работы сохранялась. (Где-то такое там писалось)

Цитата Сообщение от sqlnub Посмотреть сообщение
Ну что же, значит тема исчерпана.
Вопрос не решен, почему же по вашему, тема исчерпана?

Добавлено через 1 минуту
Ув. sqlnub, не захламляйте топик.
0
Заблокирован
20.10.2013, 17:25
Цитата Сообщение от Gauga Посмотреть сообщение
Каждая кнопка, должна выводить свое значение.
Добавьте this в аргументы функции:

PHP
1
echo '<input type="button" value="' . $row['text'] . '" onClick="WaM_add(this)" class="WaM_helps">' . '<br>' . "\n";


JavaScript
1
2
3
4
5
 <script type="text/javascript">
        function WaM_add() {
            document . getElementById("message") . value = this .  value;
        }
 </script>
Готово. Каждая кнопка выведет свое значение в текстовое поле.
1
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
20.10.2013, 18:27  [ТС]
Цитата Сообщение от sqlnub Посмотреть сообщение
Добавьте this в аргументы функции ... Готово. Каждая кнопка выведет свое значение в текстовое поле.
sqlnub, у меня не получается можете дать ваши наброски?

Добавлено через 10 минут
Выводит: undefined
0
Заблокирован
20.10.2013, 18:50
Ну да, в аргументы функции добавьте любое имя.

JavaScript
1
2
3
4
function WaM_add(elem) {
// elem и будет той кнопкой которая вызвала функцию
document . getElementById("message") . value = elem .  value;
}
Добавлено через 4 минуты
Кликните здесь для просмотра всего текста
Вообще с этой байдой - тайной связывания объектов и функций на js - я сам всегда путаюсь потому что в зависимости от метода меняется и форма. Если через addEventListener то this связывается молчком, если через onclick, то this это window и для элемента приходится передавать его отдельно. Особый маразм это объекты которые хавают this и приходится размножать ссылку на элемент давая ей идиотские имена типа that или self.

Я по-первости считал это проявлением своей тупости, пока не узнал что оно так и устроено в JS.
1
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
20.10.2013, 19:06  [ТС]
sqlnub, вся моя проблема, в неправильном sql запросе и написание php функции.
Спасибо, вам большое!

Добавлено через 2 минуты
sqlnub, Вы знаете, как можно узнать, на какую кнопку нажал пользователь. То есть, пользователь нажал на кнопку со значением first. Можно как-то узнать в php или javascript, какая именно?
0
Заблокирован
20.10.2013, 19:26
Ничего правильного в ваших скриптах нет. Вы сами себе придумываете методы не пытаясь узнать как оно вообще делается и делается ли вообще. Я не о колхозных пробелах вокруг точек, конечно, но они тоже признак.

Ну конечно можно узнать какую кнопку нажал юзер и вы только что это узнали записав значение кнопки в значение текстового поля.

ЧТобы скрипт на сервере узнал - надо передать это значение ему, в составе формы и под именем элемента.

Добавлено через 1 минуту
Форма может содержать любое число (ну может быть не больше 65535) кнопок type="submit". На сервер же уйдут данные только _нажатой_ кнопки, то есть которая отгрузила форму.

Добавлено через 30 секунд
По ее имени вы и узнаете какая была нажата.
1
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
20.10.2013, 19:28  [ТС]
Или сделать так, к примеру кнопки передать в name="" id из базы. Как можно средствами php или js узнать то что находится в name="" а так же создать след. условие:

Вывести (путем php) запись из базы, при условии если name="' . $row['id'] . '" равна id записи из базы.
Я лишь одно в этом не могу понять, как объяснить php, что нужно сравнивать то что будет находится в name="' . $row['id'] . '", т.е. чтоб он понял, что именно name, а не что либо другое.
0
Заблокирован
21.10.2013, 05:50
Короче, вместо описания скрипта который и без вас прочитают, описывайте конкретную задачу. Что хотите, что получается. Очень даже может быть что решение типовое, а вы из-за своей скрытности сидя на нем ничего не знаете.

В общем я ничего не понял, расскажу как оно у меня делается.

Для выбранного поля из БД строится имя элемента по схеме

PHP
1
2
3
4
$field->id  = $field->orgtable .
        '[' . $field->orgname . ']'.
        '[' . $field->flags . ']'.
        '[' . $field->type . ']';
Данные берутся из $result->fetch_field(); Получается например так (касательно имени элемента)

HTML5
1
<input type="text" name="продукт[Создано][1249][7]"  tabindex="7" class="inputText " placeholder="гггг-мм-дд чч:мм:сс"/>
type= и placeholder= генерятся отдельно на основании данных того же поля, там все есть.

ну вот, теперь в скрипте который принимает данные формы мне ничего не надо повторять в стопицотый раз, скрипт и так все узнает по именам полей. Ему только имя команды надо передать, что и делается через 1 дополнительное текстовое поле типа hidden, имя которго - имя бд - это единственное что может узнать обработчик, поскольку ему заведен линк (расширение mysqli), в котором есть имя активной бд. А value этого поля - имя активной таблицы.

HTML5
1
<input type="hidden" name="database_name" value="Продукт" />
*database_name - изменено.

Таким образом найдя среди всего что прилетело в $_POST элемент с заранее известным именем бд, скрипт может взять из него значение - которое имя неизвестной ему таблицы, вот в таком порядке:

PHP
1
2
$action = key($post[$link->db]);
$tb_name = $post[$link->db][$action];
По имени действия запускается соответствующий метод, существование которого еще надо проверить:

PHP
1
2
if(!is_callable(array($this, $action), false)) 
    throw new Exception('Нет такого оператора: ' . $action);
Если прошли, то выполняется

PHP
1
2
$this->action = $action;
$this->$action($link, $tb_name, $post[$tb_name]);
В $post[$tb_name] - данные активной таблицы. Которые после компилятора выглядят как массив массива массива и наконец значение. Раскрутить эту вложенность легко позволяет рекурсия. На этом повествование заканчивается, потому что вы все равно не осилите. Смысл всех перечисленных заклинаний в том, чтобы одним-единственным классом редактировать вообще любую таблицу в любой БД. Можно и несколько за раз, но путем мучительных рассуждений я пришел к выводу что делать надо по-другому с самого начала и поэтому осталась только одна в конце.

Но вы можете дать имена полям такие, чтобы по ним можно было хотя бы узнать к чему они относятся. Например table_name[field_name]. Тогда без всякой рекурсии вы можете раскрутить массив по полям

$table_name = // находите, или вручную прописываете имя таблицы

PHP
1
2
3
foreach ($_POST[$table_name] as $field_name = > $value) {
// тут построение запроса на обновление, удаление и тп 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2013, 05:50
Помогаю со студенческими работами здесь

После нажатия на кнопку выполнять сценарий php и javascript (или 2 сценария php)
народ, у мну такая проблема: мне нужно, что бы после нажатия на кнопку выполнялся сценарий php, и javascript(или 2 сценария php). Тоесть я...

После нажатия на кнопку "Вычислить", значение в поле Edit1 увеличить на 1
как сделать, чтобы после нажатия на кнопку вычислить, значение в поле Edit1 увеличилось на 1 ? оконное приложение с++

При нажатии на кнопку вывести строку в текстовое поле
мне сказали что в билдере легко создать кнопку, скачал программу... кто объяснит как это сделать(лучше наглядно, например, сделайте...

Показать/скрыть текстовое поле при нажатии на кнопку
Как Показать/скрыть текстовое поле при нажатии на кнопку? При загрузки страницы текстовое поле должно быть скрыто

Поиск данных в БД MS ACCES 2003 через текстовое поле и кнопку
Как организовать поиск данных в БД MS ACCES 2003 через текстовое поле и кнопку или хотя бы просто через текстовое поле!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru