Вопросы по PHP |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6830-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Вопросы по PHP |
Glavar |
Dec 12 2010, 20:35
Пост
#1
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 379 С нами с: 11-May 08 |
Доброго время суток!
1. Скажите как мне обрезать первых 7 знаков, а остальные занести в базу? 2. У меня есть максимальное число голосов припустим 50, как мне присвоить ему 1 место 15 глосов - 5 место 43 голоса - 2 место 28 голосов - 3 место 24 - 4 место и т.д. и что бы место записывалось и обновлялось автоматически в базе данных? Тема для обговорення мови програмування PHP, всі сторонні коментарі будуть видалятися, а їх автори отримувати % Сообщение отредактировал BoyKot - Feb 3 2011, 13:22 |
Glavar |
Jan 27 2011, 9:42
Пост
#121
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 379 С нами с: 11-May 08 |
|
YoGi |
Jan 29 2011, 20:26
Пост
#122
|
Репутация: 39 Активист Группа: Пользователи Сообщений: 435 С нами с: 21-March 08 |
подскажите, вот к примеру есть форма
<select name=operation> <option value=1>Умножение</option> <option value=2>Деление</option> <option value=3>Сложение</option> <option value=4>Вычитание</option> </select> и есть такая функция function matchOperation ($a, $b, $operation) { switch ($operation) { case "Сложение" : echo $a + $b ; break; case "Умножение" : echo $a * $b ; break; case "Вычитание" : echo $a - $b ; break; case "Деление" : echo $a / $b ; break; } вопрос как подвязать выбор действия в форме, к действию в функции и вывести результат? |
iProphet |
Jan 29 2011, 20:56
Пост
#123
|
Репутация: 39 Активист Группа: Пользователи Сообщений: 358 С нами с: 5-September 09 |
<script> function matchOperation (form) { var operation = form.operation.value; var a = число, можно достать из поля; var b = тоже любое число, можно написать просто, можно откуда-то вытащить; switch (operation) { case "3" : alert (a+b); break; case "1" : alert (a*b); break; case "4" : alert (a-b); break; case "2" : alert (a/b); break; } </script> <form action="" name="qwe"> <select name="operation" onchange="matchOperation (this.form)"> <option value=1>Умножение</option> <option value=2>Деление</option> <option value=3>Сложение</option> <option value=4>Вычитание</option> </select> </form> Это если хочешь на Javascript осуществить, если на php, то подругому. |
YoGi |
Jan 29 2011, 21:18
Пост
#124
|
Репутация: 39 Активист Группа: Пользователи Сообщений: 435 С нами с: 21-March 08 |
хочу на пхп)
|
iProphet |
Jan 29 2011, 21:38
Пост
#125
|
Репутация: 39 Активист Группа: Пользователи Сообщений: 358 С нами с: 5-September 09 |
Содержимое html:
<form action="путь к php файлу" method="post"> <select name=operation> <option value=1>Умножение</option> <option value=2>Деление</option> <option value=3>Сложение</option> <option value=4>Вычитание</option> </select> </form> Содержимое php файла: function matchOperation ($a, $b, $operation) { switch ($operation) { case "1" : echo $a * $b; break; case "2" : echo $a / $b; break; case "3" : echo $a + $b; break; case "4" : echo $a - $b; break; } } if($_POST['operation']) { $operation = intval ($_POST['operation']); $a = 2; //Может быть любое другое число $b = 2; //Может быть любое другое число matchOperation ($a, $b, $operation); } |
vGamBIT |
Jan 29 2011, 21:42
Пост
#126
|
Репутация: 95 Активист Группа: Пользователи Сообщений: 327 С нами с: 19-June 10 |
хочу на пхп) Приблизительно так(код на наличие опечаток не проверял): <select name="operation"> <option value=1>Умножение</option> <option value=2>Деление</option> <option value=3>Сложение</option> <option value=4>Вычитание</option> </select> к html надо добавить еще форму для отправки параметров(в данном случае a и b ) <?php function matchOperation ($a, $b, $operation) { switch ($operation) { case 3: echo $a + $b; break; case 1: echo $a * $b; break; case 4: echo $a - $b; break; case 2 : echo $a / $b; break; } if(isset($_GET['operation']) && isset($_GET['a']) && isset($_GET['b'])) //проверка ли переданы данные matchOperation($_GET['a'], $_GET['b'], $_GET['operation') ); ?> UPD: Вижу меня уже опередили, но мой вариант немного отличается, т.к. использован метод GET, а он предпочтительней в ситуациях когда значения параметров не изменяют данные. Сообщение отредактировал vGamBIT - Jan 29 2011, 21:46 |
YoGi |
Jan 29 2011, 22:20
Пост
#127
|
Репутация: 39 Активист Группа: Пользователи Сообщений: 435 С нами с: 21-March 08 |
спасибо сейчас попробую
vGamBIT приблизительно так и думал, а если вместо GET использовать POST? мы ведь isset проверяем прописана ли переменная, а переменная через форму передается POSTом? использовал POST, получилось Сообщение отредактировал YoGi - Jan 29 2011, 22:34 |
Glavar |
Jan 30 2011, 20:15
Пост
#128
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 379 С нами с: 11-May 08 |
есть код:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Он показывает все файлы что есть в данной папке, как ограничить формат файлов? как тут использоватьpreg_match('/[.](JPG)|(jpg)') ? |
vGamBIT |
Jan 30 2011, 20:19
Пост
#129
|
Репутация: 95 Активист Группа: Пользователи Сообщений: 327 С нами с: 19-June 10 |
function printQueue($queue, $path) { foreach ($queue as $file) { if(preg_match( ....BLAHBLAHBLAH....)) printFile($file, $path); } } Даже наверное лучше так: while (false !== ($file = readdir($handle))) { if (is_dir($path.$file) && $file != '.' && $file !='..') printSubDir($file, $path, $queue); else if(preg_match( ....BLAHBLAHBLAH....)) $queue[] = $file; } Сообщение отредактировал vGamBIT - Jan 30 2011, 20:21 |
Glavar |
Jan 30 2011, 20:23
Пост
#130
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 379 С нами с: 11-May 08 |
function printQueue($queue, $path) { foreach ($queue as $file) { if(preg_match( ....BLAHBLAHBLAH....)) printFile($file, $path); } } Даже наверное лучше так: while (false !== ($file = readdir($handle))) { if (is_dir($path.$file) && $file != '.' && $file !='..') printSubDir($file, $path, $queue); else if(preg_match( ....BLAHBLAHBLAH....)) $queue[] = $file; } спс помогло и там, и там написал(навсяк) Сообщение отредактировал Glavar - Jan 30 2011, 20:26 |
vGamBIT |
Jan 30 2011, 20:33
Пост
#131
|
Репутация: 95 Активист Группа: Пользователи Сообщений: 327 С нами с: 19-June 10 |
Достаточно одной проверки, лишние действия - лишняя нагрузка на сервер, потеря быстродействия, больший размер кода.
|
Glavar |
Jan 30 2011, 21:09
Пост
#132
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 379 С нами с: 11-May 08 |
спс за совет
Сообщение отредактировал Glavar - Jan 30 2011, 21:15 |
Cach |
Jan 31 2011, 18:16
Пост
#133
|
Репутация: 63 Dividing by Zero Группа: Пользователи Сообщений: 202 С нами с: 5-September 10 |
Может кто-то помочь с сортировкой?
Есть код, плана: $result = mssql_query("SELECT a,b FROM table ORDER BY a DESC, b DESC"); Хочется, что бы выводимый результат сортировался (a/b)*100 DESC (В формуле a и b тоже должны быть DESC) |
thisisit |
Jan 31 2011, 18:21
Пост
#134
|
Репутация: 116 Постоялец Группа: Пользователи Сообщений: 1 367 С нами с: 6-March 07 |
А ты вычисляй значения (a/b*100) при добавлении записи в таблицу, назови его каким-то z и тогда сортировка будет ORDER BY z DESC и даже можно будет использовать индекс по полю z и не грузить базу тупыми запросами.
|
Cach |
Jan 31 2011, 18:27
Пост
#135
|
Репутация: 63 Dividing by Zero Группа: Пользователи Сообщений: 202 С нами с: 5-September 10 |
А ты вычисляй значения (a/b*100) при добавлении записи в таблицу, назови его каким-то z и тогда сортировка будет ORDER BY z DESC и даже можно будет использовать индекс по полю z и не грузить базу тупыми запросами. В том то и проблема, что таблица уже готова и заполнена. Изменять её нельзя не при каких условиях |
AnNE DoM.ini |
Jan 31 2011, 18:35
Пост
#136
|
Репутация: 173 Постоялец Группа: Пользователи Сообщений: 1 412 С нами с: 30-June 07 |
select *,(a/b*100) as order_field from table order by order_field
|
thisisit |
Jan 31 2011, 18:39
Пост
#137
|
Репутация: 116 Постоялец Группа: Пользователи Сообщений: 1 367 С нами с: 6-March 07 |
Всегда можно изменять. Изучай ALTER TABLE. Если не хочется, можно создать вторую таблицу, где хранить (id, z).
Капец, это же реляционная база данных, она создана для этого. |
Cach |
Jan 31 2011, 18:42
Пост
#138
|
Репутация: 63 Dividing by Zero Группа: Пользователи Сообщений: 202 С нами с: 5-September 10 |
Всегда можно изменять. Изучай ALTER TABLE. Если не хочется, можно создать вторую таблицу, где хранить (id, z). Капец, это же реляционная база данных, она создана для этого. Что изменять можно - я знаю. Только если что-то там трону, выхвачу по шее))) select *,(a/b*100) as order_field from table order by order_field Мне бы так, что бы А и В были DESC. Мне нужно подставлять в формулу от большего к меньшему |
thisisit |
Jan 31 2011, 18:42
Пост
#139
|
Репутация: 116 Постоялец Группа: Пользователи Сообщений: 1 367 С нами с: 6-March 07 |
|
AnNE DoM.ini |
Jan 31 2011, 18:46
Пост
#140
|
Репутация: 173 Постоялец Группа: Пользователи Сообщений: 1 412 С нами с: 30-June 07 |
Ну, таблицы разные бывают, если там 3 записи, то можно и забить
|
Упрощённая версия | Сейчас: 25th November 2024 - 17:34 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |