Я сделал это, когда форма отправки откроется в модальном диалоговом окне и после этого отправит всю запись в полях. Если вы нажмете кнопку «Отправить», запись будет сделана в базе данных, и страница сразу же будет перенаправлена на ту же страницу с новыми данными. Нет необходимости обновлять, чтобы увидеть последние введенные данные. Надеюсь, это поможет.
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">ADD CONTENT</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Please Add Content</h4>
</div>
<div class="modal-body">
<form role="form" action="" method="POST">
<!-- YOUR HTML FORM GOES HERE--->
<button type="submit" name="submit" class="btn btn-primary btn-lg"id="sub" onclick="SUBMISSION()" >Submit </button>
</fieldset>
</form>
<?php
if(isset( Я сделал это, когда форма отправки откроется в модальном диалоговом окне и после этого отправит всю запись в полях. Если вы нажмете кнопку «Отправить», запись будет сделана в базе данных, и страница сразу же будет перенаправлена на ту же страницу с новыми данными. Нет необходимости обновлять, чтобы увидеть последние введенные данные. Надеюсь, это поможет.
[110]
POST['submit']))
{
SUBMISSION();
}
function SUBMISSION()
{
// UR CONNECTION ESTABLISHMENT CODE GOES HERE
// SQL QUERY FOR INSERTION IN FIELDS
echo"<script type=\"text/javascript\">
document.location.href='http://localhost/dict/pages/YOURPAGE.php';
</script>";
$conn->CLOSE();
}
?>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-12 -->
Моя первая идея заключалась в следующем:
chars = "abcdefghijklmnopqrstuvwxyz"
check_string = "i am checking this string to see how many times each character appears"
for char in chars:
count = check_string.count(char)
if count > 1:
print char, count
Это плохая идея, тем не мение! Это будет сканировать строку 26 раз, поэтому вы потенциально собираетесь выполнить в 26 раз больше работы, чем некоторые другие ответы. Вам действительно следует сделать это:
count = {}
for s in check_string:
if count.has_key(s):
count[s] += 1
else:
count[s] = 1
for key in count:
if count[key] > 1:
print key, count[key]
Это гарантирует, что вы пройдете строку только один раз, а не 26 раз.
Кроме того, ответ Алекс великолепен - я не был знаком с модулем коллекций. Я буду использовать это в будущем. Его ответ более краток, чем мой, и технически лучше. Я рекомендую использовать его код вместо моего.
import collections
d = collections.defaultdict(int)
for c in thestring:
d[c] += 1
A collections.defaultdict
похож на dict
(фактически подклассифицирует его), но когда запись ищется и не обнаруживается, вместо того, чтобы сообщить, что у него его нет, он создает и вставляет его, вызывая предоставленный вызываемый 0-аргумент. Наиболее популярны defaultdict (int)
для подсчета (или, что то же самое, для создания структуры данных пакета AKA с мультимножеством) и defaultdict (list)
, который навсегда избавляет от необходимости использовать .setdefault (akey, []). append (avalue)
и подобные неудобные идиомы.
Итак, как только вы это сделаете, d
станет сопоставлением контейнера, похожим на dict каждый символ до количества раз, которое он появляется, и, конечно, вы можете испустить его как хотите. Например, сначала самый популярный персонаж:
for c in sorted(d, key=d.get, reverse=True):
print '%s %6d' % (c, d[c])
Python 2.7+ включает в себя collections.Counter класс:
import collections
results = collections.Counter(the_string)
print(results)
Это самый короткий и наиболее практичный вариант, который я могу придумать без импорта дополнительных модулей.
text = "hello cruel world. This is a sample text"
d = dict.fromkeys(text, 0)
for c in text: d[c] += 1
print d ['a'] выведет 2
И это также быстро.
Я могу сосчитать количество дней, в течение которых я знаю Python двумя руками, так что простите меня, если я отвечу на что-нибудь глупое :)
Вместо того, чтобы использовать диктовку, я подумал почему бы не использовать список? Я не уверен, как списки и словари реализованы в Python, поэтому это нужно будет измерить, чтобы узнать, что быстрее.
Если бы это был C ++, я бы просто использовал обычный c-массив / вектор для доступа с постоянным временем (это определенно было бы быстрее), но я не знаю, какой соответствующий тип данных находится в Python (если он есть ...) :
count = [0 for i in range(26)]
for c in ''.join(s.lower().split()): # get rid of whitespaces and capital letters
count[ord(c) - 97] += 1 # ord('a') == 97
Также можно задать размер списка ord ('z'), а затем избавиться от вычитания 97 везде, но если вы оптимизируете, почему не полностью :)
РЕДАКТИРОВАТЬ: Один из комментаторов предположил, что объединение / разделение не стоит возможного выигрыша от использования списка, поэтому я подумал, почему бы не избавиться от него:
count = [0 for i in range(26)]
for c in s:
if c.isalpha(): count[ord(c.lower()) - 97] += 1
Вы можете использовать словарь:
s = "asldaksldkalskdla"
dict = {}
for letter in s:
if letter not in dict.keys():
dict[letter] = 1
else:
dict[letter] += 1
print dict
You want to use a dict.
#!/usr/bin/env python
input = "this is a string"
d = {}
for c in input:
try:
d[c] += 1
except:
d[c] = 1
for k in d.keys():
print "%s: %d" % (k, d[k])