Autor | Zpráva | ||
---|---|---|---|
holi Profil |
#1 · Zasláno: 21. 1. 2012, 10:46:44
Zdravím,
věřím že se to určitě řešilo, ale nemůžu to najít. Jak mám zajistit to aby se stránka po vyhodnocení scriptu refreshla jen jednou. Používám na refresh <?php header("Refresh:0"); ?> Můj konkrétní případ je že mám ve formuláři checkboxi. Odešlu script do databáze že jsou zaškrtnuty a chci aby okamžitě po vyhodnocení tohoto scriptu, byly zaškrtnuty. Bohužel se zaškrtnou až po refreshy stránky. Dík za odpovědi popř linky. |
||
Tori Profil |
#2 · Zasláno: 21. 1. 2012, 11:04:21
holi:
Jak máte sestavený ten skript? Nejdřív bych dala vyhodnocení formuláře (pokud byl odeslaný) a až potom načtení dat z DB a zobrazení. Nepomohlo by to? |
||
holi Profil |
No myslím že to nedokáži vysvětlit tak tady je příklad kódu
function get_categories_checkboxes( $selected_cats = null ) { $all_categories = get_categories($args); $o = '<form method="POST"><ul style="margin-left:12px">'; foreach($all_categories as $key => $cat) { if($cat->parent == "0") $o .= __show_category($cat, $selected_cats); } return $o . '</ul><input type="submit" name="submit" value="Uložit"></form>'; } function __show_category($cat_object, $selected_cats = null) { $checked = ""; if(!is_null($selected_cats) && is_array($selected_cats)) { $checked = (in_array($cat_object->cat_ID, $selected_cats)) ? 'checked="checked"' : ""; } $ou = '<li><label><input ' . $checked .' type="checkbox" name="cats[]" value="'. $cat_object->cat_ID .'" /> ' . $cat_object->cat_name . '</label>'; $childs = get_categories('parent=' . $cat_object->cat_ID); foreach($childs as $key => $cat) { $ou .= '<ul style="margin-left:12px">' . __show_category($cat, $selected_cats) . '</ul>'; } $ou .= '</li>'; return $ou; } $zaznamy = mysql_query("SELECT id_cat FROM ".$wpdb->prefix."related_art"); $vysledek = mysql_fetch_row($zaznamy); echo get_categories_checkboxes($vysledek); if(!empty($_POST["submit"])){ if(isset($_POST["cats"])){ header("Refresh:0;"); $cat = $_POST["cats"]; $kontrola = implode(", ", $cat); mysql_query("DELETE FROM ".$wpdb->prefix."related_art WHERE id_cat NOT IN (".$kontrola.")"); foreach($cat as $key => $id){ if(!in_array($id, $vysledek)){ mysql_query("INSERT INTO ".$wpdb->prefix."related_art(id_cat) VALUES(".$id. ")"); } } } else{ header("Refresh:0;"); mysql_query("DELETE FROM ".$wpdb->prefix."related_art"); } } |
||
Alutom Profil |
#4 · Zasláno: 23. 1. 2012, 21:03:12
Myslím, že by to mohlo být tím, že refresh provádíte ještě před uložením dat do databáze, přičemž logicky by to mělo být opačně.
// ... if(!empty($_POST["submit"])){ if(isset($_POST["cats"])){ $cat = $_POST["cats"]; $kontrola = implode(", ", $cat); mysql_query("DELETE FROM ".$wpdb->prefix."related_art WHERE id_cat NOT IN (".$kontrola.")"); foreach($cat as $key => $id){ if(!in_array($id, $vysledek)){ mysql_query("INSERT INTO ".$wpdb->prefix."related_art(id_cat) VALUES(".$id. ")"); } } } else mysql_query("DELETE FROM ".$wpdb->prefix."related_art"); header("Refresh:0;"); // obnovení stránky... } |
||
Časová prodleva: 11 let
|
0