Div nur einmalig anzeigen lassen. Aber wie?

Moin,

ich möchte gerne ein DIV nur einmalig anzeigen lassen.
Soll bedeuten beim anwählen einer Website soll das div erscheinen, und nach klicken uaf einen Link (oder besser: einen Button) danach nie wieder.

Ich vermute, das wird irgendwas mit Kaffe und keksen o.0

Google hat mir nicht geholfen, enn´s bei euch besser geht ballert mich voll mit gidf.de - Links :stress: :motz: :stress:

Vielen Dank im Vorraus

Solls bei einem Nutzer wirklich nur ein einziges mal angezeigt werden, geht das über das Krümelmonster (sofern jeder das Cookie akzeptiert).

Solls wieder angezeigt werden wenn der Nutzer nach z.B. 3 Tagen (bzw. den Browser schließt) wiederkommt, kannst du das ganze auch mit einer Session lösen.

Wird aber eher eine PHP-Geschichte werden. Wenn das ein Mod auch so sieht, kann er das Thema ja verschieben.

ein cookie mit einer lebenszeit von drei tagen reicht da vollkommen

einfach am Anfang des Scripts:

<? $tage = 3; setcookie('zeigediv', '1', time()+(60*60*24*$tage)); ?>

und dann später, an der stelle wo es angezeigt werden soll:

<? if(isset($_COOKIE['zeigediv'])){ echo '<div> ... </div>'; } ?>

Das ganze könnte man auch mit JavaScript lösen, indem man document.cookie ausliest.

mfg Balmung

du meinst es doch so in etwa:

<?php

if(!isset($_COOKIE['hidediv']))
{
   $zeigediv = true;
   setcookie('hidediv', '1', time()+3*24*60*60);
}
else
   $zeigediv = false;
?>
<html>
<head>
<!-- blablabla -->

<?php if($zeigediv) { ?>
  <div>
    <!-- Bla bla bla -->
  </div>
<?php }; ?>

<!-- Blablabla -->
</html>

lol, da hab ich das genau umgekehrt gemacht wie es eigentlich sein soll.
Ja hast natürlich recht ^^

mfg Balmung

ok. wenn ihr meint, es ist so einfacher. von php hab ich zwar weniger ahnung, aber irgendwann muss ichs eh lernen.

Wenn ich das richtigverstanden habe, brauche ich nur die paar fetzen php einzufügen, und den dateinamen in index.php anändern.

was muss ich in dem code noch anpassen?
und kann der user den div über einen button selbst deaktivieren?
vllt bin ich zu blöd, aber ich entdecke nichts derartiges in dem code.

vilen Dank auf jeden Fall für eure Hilfe.

sobald der Benutzer die Seite das erste mal besucht, bekommt er automatisch einen Cookie zugewiesen, und das

wird angezeigt.
Wenn er die seite ein zweites mal besucht, übermittelt der browser den cookie an den server und das php-script erkennt dann, dass er bereits einen cookie hat, und zeigt das
deshalb nicht an.

Wenn du das

per mausklick verschwinden lassen willst, ist die einfachste methode mit JavaScript:

[code]

inhalt

verschwinde![/code]

Edit: das Script hatte natürlich nicht geklappt, habs jetzt aber geändert und getestet.

mfg Balmung

so, wir kommen der sache näher !haue

kann man auch beides auf einmal benutzen? oder kommen sich die beiden dann in der quere ?:susp:

ich hab schon mal gesehen, das das ganze nicht über nen gelaufen ist, sondern über nen as muss ich da anders machen?

Wenn du den button nur zum schließen nehmen möchtest würde ich type=“button” nutzen:

<input type="button" value="close" onclick="javascript:getElementById('blubb').style.display='none'" />

[quote=„Balmung“]Wenn du den button nur zum schließen nehmen möchtest würde ich type=„button“ nutzen:

<input type="button" value="close" onclick="javascript:getElementById('blubb').style.display='none'" />

sorry, klar, hab gepennt :morgen: :wink:

und ich kann einfach so php und java aufeinmal verwenden?

die funktion heisst ja „getElementById“. muss ich als dann die id des divs reinschreiben statt blubb, richtig?

Sorry, das ich so blöd frage, JavaScript-Buch ist schon geplant :wink:

JavaScript (nicht Java) und die antwort ist Ja, wenn man es richtig anstellt.

Ja

mfg Balmung

super, dann erde ich es mal ausprobieren und mich dann wieder melden.

thx4all

nochmal eine Frage.

muss des php- am anfang vor oder hinter den DOCTYPE! ?
muss ich den DOCTYPE! ändern? wenn ja, wie?

Der php-teil mit dem setcookie() gehört vor der doctype deklaration, da setcookie() nicht verwendet werden kann, wenn schon irgendeine Ausgabe statt gefunden hat.

Der doctype brauch nicht geändert werden.

Why so kompliziert?

Ich würd iFrames empfehlen, die laden das Layout nur einmal neu und ansonsten nur die Textseiten. Ist ja auch das was du erreichen willst. Der Nachteil ist vielleicht das da ne Menge Scrollbalken vorhanden sind. Aber wenn du bei Divider bleiben willst solltest du das hier einfach ignorieren :ps: find iFrames trotzdem praktischer…

kann man den keks eigentlich auch per button onklick setzten lassen?

dann könnte ich den user nämlich selbst entscheiden lassen, ob er den hinweis nie wieder sehen möchte, einfach wegklicken möchte, oder nie wieder sehen möchte, in dem ich die lebenszeit des keks unterschiedlich angebe.

nochmal vielen vielen dank für eure hilfe :hail: :hail:

[quote=„jw-lighting“]kann man den keks eigentlich auch per button onklick setzten lassen?

dann könnte ich den user nämlich selbst entscheiden lassen, ob er den hinweis nie wieder sehen möchte, einfach wegklicken möchte, oder nie wieder sehen möchte, in dem ich die lebenszeit des keks unterschiedlich angebe.

nochmal vielen vielen dank für eure hilfe :hail: :hail:[/quote]

Meinst du es so:

[code]<?php

$stunden = 24; // Ablauf der Cookie in Stunden.

if ($_GET[‚wieder_anzeigen‘] == „false“) {
@setcookie(„hidediv“, true, time()+($stunden*3600));
}

$div = ($_COOKIE[‚hidediv‘] ? false : true);

?>

..... ...... ....... <?php if ($div) { ?> Schließen
....Nicht wieder anzeigen
<?php } ?> ..... ...... ....... [/code]

[quote=„michi7x7“]

[code]

<?php if(!isset($_COOKIE['hidediv'])) { $zeigediv = true; setcookie('hidediv', '1', time()+3*24*60*60); } else $zeigediv = false; ?> <?php if($zeigediv) { ?>
<?php }; ?> [/code][/quote]

bei diesem code ird der cookie automatisch gesetzt.
ich will jetzt nur wissen, ie ich ihn per klick setzen lassen kann, ohne, das er automatische aktiviert wird. also was ich z.b.: bei statt "<-???-> einsetzen müsste, um dabei einen cookie mit einer lebenszeit von bespielsweise 3 Tagen zu setzten, der dafür sorgt, das ein div mit der id „nicht_anzeigen“ nicht angezeigt wird…

ist das den so schwer zu verstehen?!? :ps:

Sollte theoretisch funktionieren.
nicht getestet.
html-world.de/program/js_e_6.php

mfg Balmung

und wie muss ich das dann abändern, damit das mit dem anderen code zusammenläuft (also der div nicht angezeigt wird) und die lebenszeit des cookies verändert wird?

sorry, das ich so viel frage… :whata: