| 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: 14 let
|
|||
0