Autor | Zpráva | ||
---|---|---|---|
domeon Profil |
Zdravím všechny. Zjistil jsem, že pokud použiji na stránce UPDATE, tak načtení celé stránky trvá něco přes 1 minutu. Na stránce jsou pouze 3 jednoduché formuláře, které se dají upravovat tlačítkem a Submit jdou vložit do databáze(respektive updatovat jejich předchozí hodnoty). Kvůli příkazu UPDATE, se pak celá stránka načte přibližně, za 1 minutu.
<?php if ($_POST) { $sql = mysql_query("SELECT * FROM test"); while ($get_test = mysql_fetch_array($sql)) { $value = $_POST[$get_test['name']]; mysql_query("UPDATE test SET value = '$value' WHERE name = '$get_test[name]'") or die (mysql_error()); } } $sql = mysql_query("SELECT * FROM test); while ($get_test = mysql_fetch_array($sql)) { $test[$get_test['name']] = $get_test['value']; } ?> <form id="form1" name="form1" method="post" action="?task=test"> <input name="a6" type="text" class="settings_text_box" value="<?php echo $test['a6']; ?>" size="32" /> <input name="a6" type="text" class="settings_text_box" value="<?php echo $test['a7']; ?>" size="32" /> <input name="a6" type="text" class="settings_text_box" value="<?php echo $test['a8']; ?>" size="32" /> <input class="button2" name="Submit" type="submit" value="Submit" id="submit0" /> </form> Nevíte v čem by mohl být problém? Díky za rady. |
||
nethor Profil |
#2 · Zasláno: 17. 1. 2012, 19:13:18
Tady je zbytečně dlouhý ten první cyklus
while ($get_test = mysql_fetch_array($sql)) { ...
Při více řádcich v db to bude brzdit. řešil bych to cyklem pro $_POST: foreach ($_POST['a'] as $key=>$value) { mysql_query("UPDATE test .... } <input name="a[6]" type="text ... |
||
Tori Profil |
Hm, mohl jste pokračovat v předchozím vlákně.
Proč máte napevno zadané atributy name u inputů? (anebo to jen tady jste to tak napsal?) Když už před updatem čtete celou tabulku, tak to můžete rovnou porovnávat s tím, co bylo zadané do formuláře a updatovat jen změněné hodnoty (i když číst ze session/cache by při větším množství dat bylo myslím rychlejší, než z DB). A escapovat vstupní hodnoty. Tímto si nejsem jistá, ale zkoušel jste nejdřív načíst data z tabulky do pole, a až poté provádět updaty? Nevím přesně, jak funguje čtení z DB, ale nějak se mi nelíbí zároveň číst a upravovat stejnou tabulku. Ale nechávám na zkušenějších, jestli to může mít nějaký vliv. |
||
domeon Profil |
#4 · Zasláno: 17. 1. 2012, 19:52:24
nethor: díky, mělo by to vypadat asi takto?
<?php if ($login_status != 1) exit(); if ($_POST) { foreach ($_POST as $key=>$value) { $value = $_POST[$get_majciktheme['name']]; mysql_query("UPDATE ava_majciktheme SET value = '$value' WHERE name = '$get_majciktheme[name]'") or die (mysql_error()); } } $sql = mysql_query("SELECT * FROM ava_majciktheme"); while ($get_majciktheme = mysql_fetch_array($sql)) { $majciktheme[$get_majciktheme['name']] = $get_majciktheme['value']; } ?> |
||
Časová prodleva: 2 měsíce
|
|||
nethor Profil |
#5 · Zasláno: 10. 3. 2012, 11:46:42
... omlovám se za prodlevu.
Ne, takhle ne: $value = $_POST[$get_majciktheme['name']]; , to je nesmysl.
ve $value už je hodnota právě uložená, viz foreach |
||
Časová prodleva: 12 let
|
0