Bei Zufallstexte, gezeigte ausblenden

CSS, Java Script u.s.w

Moderator: HTML-Laie

Antworten
Benutzeravatar
Seatin
Grosser Webmaster
Grosser Webmaster
Beiträge: 500
Registriert: Do 11. Mär 2010, 18:49
Mein Vorname: Steffen
Wohnort: Münsingen, Deutschland
Kontaktdaten:

Bei Zufallstexte, gezeigte ausblenden

Beitrag von Seatin »

Hallo zusammen,
vielleicht kann mir einer helfen. Ich habe bei underground-secrets wieder vor ein "hast du gewusst"-Skript einzufügen. Dort erscheinen jedes mal beim laden der Seite neue beiträge (z.B. "Hast du gewusst... ...dass ... dass der Mythos der Massenselbstmorden von Lemmingen von Disney erfunden wurde"). Hab aktuell 30 Stück im Skript drin stehen.

Nun die Frage. Gibt es die Möglichkeit, dass sich die bereits gezeigten "schon gewusst"-texte nicht immer wiederholen, sondern erst andere anzeigt, die noch nicht angezeigt wurden?

Hier mal das Skript

Code: Alles auswählen

<?php

// Hinterkaifeck //
	$text_zufall[1]='... dass "<strong><a href="http://underground-secrets.org/geisterwesen/geister-arten/gonger.html" target="_parent">Gonger</a></strong>" Geister auf den Inseln Sylt und Amrum sind?!';

// Selbstmord-Wald //
	$text_zufall[2]='... dass der Mythos der <strong><a href="http://underground-secrets.org/mythen/legends/massenselbstmord-von-lemmingen.html" target="_parent">Massenselbstmorden von Lemmingen</a></strong> von Disney erfunden wurde ?'; 
	
// 6 & 7. Buch Mosis I
	$text_zufall[30]='... dass die Verleger von "<strong><a href="http://underground-secrets.org/mythen/verschwoerungstheorien/6-und7-buch-mosis.html" target="_parent">6. und 7. Buch Mosis</a></strong>" 1958 wegen „Verstoßes gegen die Bekämpfung von Geschlechtskrankheiten“ angeklagt wurden?!';
	
// 6 & 7. Buch Mosis II
	$text_zufall[31]='... dass das "<strong><a href="http://underground-secrets.org/mythen/verschwoerungstheorien/6-und7-buch-mosis.html" target="_parent">6. und 7. Buch Mosis</a></strong>" ist keine biblische Apokryphe, sondern ein sehr altes volkstümliches Zauberbuch aus dem 16. Jahrhundert gewesen ist?!';
	  	  
$zufall_key = rand(1,31);
echo $text_zufall[$zufall_key];
?>
<p align="right"><a href="javascript:window.location.reload();">Neues laden</a></p>
(hab ein paar Texte in der Mitte herausgenommen ;)

Danke schonmal für eure Antworten
Nachrichten aus der Welt un Unerklärlichen gibts hier: Underground-Secrets®
Benutzeravatar
Jasko
Globaler Moderator
Globaler Moderator
Beiträge: 3277
Registriert: Di 21. Feb 2012, 06:59
Mein Vorname: Herr Jasmin ;)
Wohnort: Rheinland-Pfalz
Kontaktdaten:

Re: Bei Zufallstexte, gezeigte ausblenden

Beitrag von Jasko »

Hallo Seatin,

ja das kann man machen in dem man z.B. cookies benutzt und somit, wenn der Besucher auf deine Seite kommt du seinen Browser so zu sagen fragen kannst, hast du schon mal dieses "Hast du schon gewus" gezeigt bekommen, wenn die Antword dan so zu sagen "Ja" ist dan fragst du für das nächste bis eins kommt das noch nicht gezeigt wurde.

Wenn alle schon mal gezeigt wurden, löschst du die cookies komplett und zeigst per zufall einen an und legst gleichzeitig den cookie wieder an, das beim nächsten besuch nicht wieder dieser angezeigt wird.

Eine andere Möglichkeit ist das du auf deinem Server so zu sagen lokal, einen Zähler für jeden dieser "schon gewusst" hast, und dann sicherstellst das alle ungefähr gleich viel mal angezeigt werden, trotzdem wirst das selbe Problem haben wie mit dem normalen Script das jetzt auch herscht, den die Anzeigemale werden nach 10.000 aufrufen wahrscheinlich eine Normalverteilung aufweisen. Daher denke ich das du am bessten mit der cookie Lösung dran bist.

MFG
Benutzeravatar
Seatin
Grosser Webmaster
Grosser Webmaster
Beiträge: 500
Registriert: Do 11. Mär 2010, 18:49
Mein Vorname: Steffen
Wohnort: Münsingen, Deutschland
Kontaktdaten:

Re: Bei Zufallstexte, gezeigte ausblenden

Beitrag von Seatin »

Ich hab Google nun mal gefragt. Hab etwas gefunden, jedoch funktioniert das nicht...

Code: Alles auswählen

// Cookies 
// Inhalt festlegen
	$inhalt = $text_zufall[$zufall_key];
	
	// Cookie erzeugen
	setcookie("hdg_undergroundsecrets",$inhalt, time()+600);
	
	// Prüfen
	if (!$_COOKIE[hdg_undergroundsecrets]) {
	  echo "Dieses hast du noch nocht angezeigt bekommen";
	} else {
	  echo $_COOKIE[hdg_undergroundsecrets];
	}
Der zeigt mir folgende fehler an, obwohl ich jaa die Variabeln im selben Dokument habe...:
Notice: Undefined variable: text_zufall in I:\Dokumente und Einstellungen\Steffen Stanischa.STEFFEN\Desktop\xampp\htdocs\nicht_US\hdg\hastdugewusst.php on line 5
Notice: Undefined variable: zufall_key in I:\Dokumente und Einstellungen\Steffen Stanischa.STEFFEN\Desktop\xampp\htdocs\nicht_US\hdg\hastdugewusst.php on line 5
Notice: Use of undefined constant hdg_undergroundsecrets - assumed 'hdg_undergroundsecrets' in I:\Dokumente und Einstellungen\Steffen Stanischa.STEFFEN\Desktop\xampp\htdocs\nicht_US\hdg\hastdugewusst.php on line 1
Was hab ich falsch gemacht?
grüße
Steffen ;)
Nachrichten aus der Welt un Unerklärlichen gibts hier: Underground-Secrets®
Benutzeravatar
Jasko
Globaler Moderator
Globaler Moderator
Beiträge: 3277
Registriert: Di 21. Feb 2012, 06:59
Mein Vorname: Herr Jasmin ;)
Wohnort: Rheinland-Pfalz
Kontaktdaten:

Re: Bei Zufallstexte, gezeigte ausblenden

Beitrag von Jasko »

Hallo Steffen,

so würde dein Code ohne fehler funktionieren:

Code: Alles auswählen

<!DOCTYPE html>
<?php
// Hinterkaifeck //
   $text_zufall[0]='Erstes';

// Selbstmord-Wald //
   $text_zufall[1]='Zweites';
   
// 6 & 7. Buch Mosis I
   $text_zufall[2]='Drittes';
   
// 6 & 7. Buch Mosis II
   $text_zufall[3]='Viertes';
         
    $zufall_key = rand(0,3);
    $inhalt = $text_zufall[$zufall_key];
    setcookie('hdg_undergroundsecrets',$inhalt, time()+600);
?>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
         // Cookie erzeugen
   
   
        // Prüfen
        if (!isset($_COOKIE['hdg_undergroundsecrets'])) {
          echo "Dieses hast du noch nocht angezeigt bekommen";
        } else {
          echo $_COOKIE['hdg_undergroundsecrets'];
        }
        ?>
    </body>
</html>
Aber ich biete dir meine Lösung für dein Problem an:

Code: Alles auswählen

<!DOCTYPE html>
<?php
    $keys = "abcd"; // alle keys des asoziativen Arrays hier eintragen
    function getZufallKey(){
        global $keys;
        $key = rand(0,strlen($keys)-1);
        return $keys[$key];
    }
    
// Hinterkaifeck //
   $text_zufall['a']='A-tes';

// Selbstmord-Wald //
   $text_zufall['b']='B-tes';
   
// 6 & 7. Buch Mosis I
   $text_zufall['c']='C-tes';
   
// 6 & 7. Buch Mosis II
   $text_zufall['d']='D-tes';
         
    $zufall_key = getZufallKey();
    if (!isset($_COOKIE['hdg_undergroundsecrets'])) {
        setcookie('hdg_undergroundsecrets',(String)$zufall_key, time()+600);
    } else {
        if (strlen($_COOKIE['hdg_undergroundsecrets']) == strlen($keys)){
            // reset cokie
            setcookie('hdg_undergroundsecrets',(String)$zufall_key, time()+600);
        } else {
            while((strpos($_COOKIE['hdg_undergroundsecrets'], (String)$zufall_key) !== false)){
                $zufall_key = getZufallKey();
            }
            setcookie('hdg_undergroundsecrets',$_COOKIE['hdg_undergroundsecrets'].(String)$zufall_key, time()+600);
        }
    }
?>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        // Ausgabe
        echo $text_zufall[$zufall_key];
        ?>
    </body>
</html>
Ich verwende ein asoziatives array, also eins wo zeichen Indexe sein können, das ist wichtig damit ich überprüfen kann ob dieser index schon dran war, den jeder Index der schon mal dran war wird bei mir in den cookie $_COOKIE['hdg_undergroundsecrets'] gespeichert, so weis ich immer welche Texte schon gezeigt wurden.

Eine noch einfachere Möglichkeit wäre den Besuchern die Sprüche der Reihe nach anzuzeigen, so könnte man immer nur den letzten geschauten index Speichern und dann den nächsten Spruch anzeigen lassen, so wiederhollt sich auch kein spruch und du hast sogar kontrolle welcher spruch zuerst einem besucher der zum ersten mal auf deine Seite kommt angezeigt wird, wenn das willst, sonnst funktiniert der obere Code super, die keys müssen aber immer nur ein Zeichen lang sein, aber das ist kein Problem, du hast das ganze Alphabet groß und klein plus Sonderzeichen und Zifern, also das sollte schon abgedeckt sein.

Nur würde ich nicht nur 600 Sekunden den Cookie leben lassen, so drei Monate finde ich eine gute Zeitspanne. Also time()+(60*60*24*31*3) // Zeit + (Sekunden*Minuten*Stunden*Tage*Monate)
Antworten

Zurück zu „Fragen zu HTML & Programmiersprachen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste