Zufällige Artikel bzw. divs auf der Startseite

  • Nein, es muss eine php-Datei sein, weil Du ja den HTML-Text mit PHP generierst. In dieser PHP-Datei muss alles stehen, was Du für die Generierung der Texte brauchst, also die Definition des Arrays, das Shuffle und die echo-Anweisungen, die das HTML erzeugen.

  • So, nun geht es weiter :)


    das mit den Arrays und dem Shuffle und der anschließenden Ausgabe funktioniert wunderbar.


    Nun hab ich aber eine Frage:


    Ich habe nun Beispielweise 20 Arrays erstellt, welche auf der Startseite in den 9 Divs zufällig ausgewählt werden.
    Wenn ich nun auf einen Menüpunkt gehe - nennen wir Ihn einfach mal Dreiecke - würde ich dort gerne 3 Divs erstellen, welche auch zufällig ausgewählt werden sollen, bestenfalls aus der selben Datei,
    allerdings sollen von den bereits erstellten 20 Divs nur 12 zur Auswahl stehen, die der Kategorie Dreiecke angehören.


    Ich habe gelesen man kann Array auch mehrere Indizes geben: Beispiel $beispiel[Index1][Index2]


    Zur Zeit sehen alle meine Array so aus: $beispiel[]


    Kann ich jetzt Beispielweise 12 Arrays irgendwie die Kategorie Dreiecke geben, sodass auf der Dreieck Seite ausschließlich Dreieck Arrays ausgegeben werden?


    Z.B. mit diesen Mehrdimensionalen Arrays $beispiel[][dreieck]


    Oder ist das der komplett falsche Weg?


    Vielen Dank für eure Hilfe!

  • Mit dem mehrdimensionalen Array bist Du auf dem richtigen Weg. Ich empfehle, in jedes Element ein assoziatives Array einzutragen mit Typ und Content:

    PHP
    $beispiel[] = ["typ" => "dreieck", "content" => 'dein content'];


    Das kannst Du genau so mischen und den Content zweidimensinal auslesen:

    PHP
    $current_content = $beispiel[$i]["content"]


    Willst Du aus dem gesamten Array die Elemente eines bestimmten Typs auslesen, schlage ich die Funktion filter vor:

    PHP
    $dreiecke = array_filter ($beispiel, function($ele){return $ele["typ"] == "dreieck"});
  • PS: Mir ist noch folgendes eingefallen:

    Zitat

    Wenn ich nun auf einen Menüpunkt gehe - nennen wir Ihn einfach mal Dreiecke - würde ich dort gerne 3 Divs erstellen, welche auch zufällig ausgewählt werden sollen, bestenfalls aus der selben Datei,

    Wenn Du von Menüpunkt sprichst, spricht das dafür, dass dieses clientseitig mit Javascript passieren muss. Dazu würde ich das zweidimensionale Hauptarray mit einem JSON-String nach Javascript transferieren und dort auswerten. Javascript hat keine Shuffle-Funktion eingebaut, aber man findet Algorithmen, z. B. hier:
    http://stackoverflow.com/quest…ow-can-i-shuffle-an-array

  • Nochmal tausend Dank an dich Sempervivum!


    Leider habe ich es noch nicht geschafft mich mit den Möglichkeiten Auseinander zu setzten... viel Arbeit momentan..


    Ich habe mir das Ganze zwar schon 50 Mal im Bett gestern Abend auf dem Handy durchgelesen, habe allerdings noch nicht 100 prozentig durchgeblickt.


    Das schaue ich gleich nochmal genau an wenn ich etwas Zeit habe und es auch ausprobieren kann. (Bezogen auf deine erste Antwort)


    Zu deinem Post von heute kann ich aktuell noch nichts sagen, da ich es mir gerade erst angeschaut habe und dort noch gar nicht durch blicke.



    Ich will mich nur nochmal bedanken für die Initiative die du hier zeigst!


    Ich melde mich auf jeden Fall ob ich weiter gekommen bin, oder nochmal Hilfe brauche :D


    Beste Grüße


    Reschke

  • Auch das zweite ist nicht so kompliziert. Javascript-Array aus PHP-Array erzeugen ist ein Einzeiler und auch in Javascript gibt es die Funktion filter():
    <script>
    var beispiel_js = JSON.parse(<?php echo json_encode($beispiel); ?>;
    var dreiecke = beispiel_js.filter(function(ele) {if (ele.type == "dreieck") return true; else return false;});
    </script>

  • So, ich bin noch ganz ganz ganz am Anfang!


    Also ich habe mich nun schon eine dreiviertel Stunde mit dem Thema auseinandergesetzt.


    Es geht mir zuerst um die Ausgabe des Contents der Arrays, das hat nun schon lange gedauert bis ich eine Lösung gefunden habe:



    Demnach würde ich 9 variablen erstellen, damit ich den Inhalt in meine 9 Divs einfügen kann, welche aus allen Arrays ausgewählt werden sollen.



    Das funktioniert auch, aber meine Frage: Ist das so auch "saubere Schreibweise", oder total umständlich?


    In der Zwischenzeit versuche ich schon mal deine erste array_filter methode zu verstehen.


    Wie immer vielen Dank für die Hilfe!

  • "Leider bekomme ich die variablen sowie die "echos" nicht untereinander hier im Forum dargestellt. Deshalb etwas unübersichtlich.."
    Das Problem habe ich leider auch immer, Fehler in der Forensoftware. Ein Ausweg ist, es bei pastebin.com einzustellen und den Link zu posten.



    "Ist das so auch "saubere Schreibweise", oder total umständlich?" Eher das zweite, denn wenn Du am Ende neun divs hast, wird es ziemlich aufwändig, es zu editieren bzw. mit copy - paste - edit aufzubauen. Ich empfehle dir, dich mit Schleifen vertraut zu machen. Dann würde es so aussehen:
    http://pastebin.com/DLNxHL0t
    Ist doch wesentlich kompakter, nicht wahr? Und man kann keine copy-paste-Fehler machen. Ich habe es mal auf drei reduziert, weil das Array nur fünf Einträge hat.
    Edit: Da ist mir ein Fehler unterlaufen: i ohne $ davor. So ist es richtig:
    echo $beispiel[$i]["content"] . '<br>';

  • Danke Dir! Du hast mich wie immer weiter gebracht!


    Ich habe deinen Code etwas verändert und erweitert und bin jetzt wie folgt vorgegangen: (Als HTML Code im Forum eingefügt, da hier die Absätze scheinbar stimme)



    Also ich habe in der Schleife Arrays erstellen lassen, sodass diese in der "Html-Datei" in der Section ausgegeben werden können.
    Des Weitern habe ich für die Anzahl eine Variable erstellt, obwohl es momentan natürlich ausgereicht hätte, wenn ich eine 9 eingetragen hätte, aber man muss ja auch an die Zukunft denken.


    Mit dem Filtern komme ich zur Zeit leider noch gar nicht weiter, bzw. zu recht.
    Das versuche ich noch zu verstehen.


    Also deine erste Lösung :


    HTML
    $dreiecke = array_filter ($beispiel, function($ele){return $ele["typ"] == "dreieck"});


    Sobald ich diese in die PHP Datei einfüge, ist die Php Seite nicht mehr aufrufbar. (bin ich hier zu blöd, oder ist da ein Fehler?)


    Allerdings wüsste ich auch nicht wie ich weiter vorgehen müsste um die $dreiecke auszugeben.


    Ich verstehe das so: in der variablen $dreiecke sind nun alle beispiel Arrays mit dem typ dreieck,
    aber wie ich dann auf einzelne davon zugreifen könnte habe ich noch nicht herausgefunden.


    Liegt aber auch daran, dass die PHP Datei mit dem Filter Code nicht mehr abrufbar ist, und ich somit noch nicht ausprobieren konnte, nach dem Motto "Learning by doing".


    Mit der Javascript methode habe ich mich zwar schon auseinandergesetzt, allerdings sollte ich hier noch etwas rumprobieren um es zu verstehen :D


    Vielen Dank!

  • Zu den Dreiecken: Ich muss zugeben, dass ich den Code noch nicht getestet hatte. Dass etwas nicht auf Anhieb funktioniert ist eher die Regel und man braucht Hilfsmittel, um die Fehler zu finden.
    Schalte die Fehleranzeige von PHP ein, indem Du dieses am Anfang des Codes einfügst:

    HTML
    error_reporting(E_ALL);             ini_set('display_errors', '1');



    Beim Filtern wird die Struktur des Arrays nicht verändert, da nur Elemente beibehalten oder weg gelassen werden. D. h. Du kannst es genau so mischen und auf die Elemente zugreifen, wie auf das orginale Array.


    Edit: Bei den HTML-Tags funktionieren bei mir die Zeilenumbrüche genau so wenig.

  • Also in der Console steht lediglich folgendes:
    Failed to load resource: ..../test.php
    the server responded with a status of 500 (Internal Server Error)



    Nicht besonders aussagekräftig, oder was mache ich falsch?

  • Ich habe den Fehler gefunden !!


    Es fehlte das semikolon nach dem "dreieck"


    Zwar eigentlich nur ne Kleinigkeit, für mich allerdings ein Erfolgserlebnis! :)



    HTML
    $dreiecke = array_filter ($beispiel, function($ele){return $ele["typ"] == "dreieck";});
  • In dem ich den Code angeschaut habe und mit anderen Funktionen verglichen habe.


    Als ich die Funktion dann anders formatiert habe (alle Befehle untereinander, anstatt in einer Reihe) viel es natürlich direkt auf.


    Nun bin ich wie folgt vorgegangen:



    Ich habe also erstmal die gefilterten Arrays des Typs Viereck sortiert, damit diese auch den index ab 0 beginnend bekommen.
    Anschließend Shuffle durchgeführt. Und nun kann ich diese mit echo ausgeben.



    Jetzt gerade habe ich noch herausgefunden, das ich die variablen $test und $test2 gar nicht erstellen muss wenn ich echo $vierecke[0][content]; benutze.
    Vorher hatte ich es immer so probiert: echo "
    $vierecke[0][content]"; (also mit Anführungszeichen)
    Dabei kam allerdings nur array[content] als Ausgabe heraus.



    Vielen vielen Dank nochmal für deine Unterstützung!

  • Stimmt, habe ich jetzt auch gemerkt.



    Shuffle setzt die viereck arrays auch auf [0], [1], usw.


    Vor dem Shuffle hatten die viereck Arrays noch die Indizes [2] und [3] weshalb ich dachte man muss die vierecke einzelt sortieren damit diese auf 0 und 1 gesetzt werden.

  • Hab mal wieder eine Frage zum Thema.


    Wenn ich den Arrays nun mehrere Typen geben möchte (es bleibt jedoch immer bei einem Content), kann ich das auf diese Art machen?:


    HTML
    $beispiel[] = ["typ" => "dreieck", 
    		     "typ" => "blau",
                         "content" => 'erstes dreieck'];
    
    
    
    
    $beispiel[] = ["typ" => "dreieck", 
    		     "typ" => "rot",
    		     "content" => 'zweitesdreieck'];


    Oder muss ich dann zwingend typ1 und typ2 vergeben?


    Vielen Dank für die Hilfe!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!