1. Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
    Information ausblenden

Ausarbeitung eines Konzepts

Dieses Thema im Forum "Datenbanken - z.B. MySQL" wurde erstellt von Tabula_Rasa, 6 August 2017.

  1. Tabula_Rasa

    Tabula_Rasa Mitglied

    Registriert seit:
    12 Mai 2017
    Beiträge:
    92
    Punkte für Erfolge:
    8
    Hallo,

    ich habe eine Tabelle die folgende Spalten haben: a_id, kürzel, name, dateipfad (für das Bild). Der Code sieht so aus:

    PHP:
    1.  
    2. <body>
    3.    <nav id="navigation" class="navigation">
    4.       <div>
    5.          <a href="index.html">Home</a>
    6.         <a href="Anime.html">Animes</a>
    7.          <a href="">Anime Scenes</a>
    8.          <a href="">AMV</a>
    9.         <a href="">Previews</a>
    10.       </div>
    11.    </nav>
    12.    
    13.    <div class="outer">
    14.    <h1>All Animes:</h1>
    15.    <div class="content">
    16.       <div class="container-fluid">
    17.      <div class="row justify-content-center">
    18.      
    19.        <?php include ("data_con.php");
    20.    
    21.      $conn = new mysqli($servername, $username, $password, $db);
    22.    
    23.      if ($conn->connect_error) {
    24.     die("Connection failed: " . $conn->connect_error);
    25.      }
    26.  
    27. $sql = "SELECT `name`, `dateipfad`, `a_id` FROM animes";
    28. $result = $conn->query($sql)
    29.   or die ("MySQL-Error: " . $conn->error);
    30.      
    31.     if ($result->num_rows >0) {
    32.         while ($row = mysqli_fetch_assoc($result)){ ?>
    33.        
    34.            <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 no-gutter">
    35.         <div class="rahmen">
    36.             <img src="<?php echo $row['dateipfad']; ?>" class="img-fluid" alt="Responsive image" width="100%" ; />
    37.             <p>
    38.                 <?php echo $row['name'] ?>
    39.             </p>
    40. </div>
    41. </div>          
    42.    
    43. <?php
    44.  
    45.         } // while
    46.     } // if num_rows
    47.  
    48.     else {
    49.     echo "Scheiße";
    50. }
    51. $conn->close();
    52.     echo ""; ?>    
    53.    
    54.  
    55.    
    56.     </div>
    57.     </div>
    58.    
    59.     <br>
    60.    
    61.  
    62.    
    63.    </div>
    64.    </div>
    65.  
    66.  
    67. </body>
    68.  
    Alles funktioniert einwandfrei. Nun habe ich das Problem, dass beim Klicken auf ein Anime eine neue Seite aufgerufen wird, dessen Struktur für alle Animes gilt. Nur bestimmte Daten (wie Links, Titel, Bilder) sind variabel. Je nachdem welcher Anime ausgesucht wurde, wird der passende Inhalt ausgewählt. Das Problem ist, wie ich das machen soll. Ist es möglich je nachdem was angeklickt wurde eine bestimmte Datenbankabfrage getätigt wird? Mit meinem jetzigen Wissenstand ist es nicht machbar, auch wenn ich so drüber nachdenke scheint es nicht machbar zu sein. Falls es nicht möglich ist, hättet ihr Alternativen?
     
    Werbung:

    Jetzt registrieren, damit diese Werbung verschwindet
  2. Tronjer

    Tronjer Moderator Team Moderator

    Registriert seit:
    8 Oktober 2010
    Beiträge:
    4.871
    Punkte für Erfolge:
    83
    Erstmal ist der Code sowas von 2005. Ein Query gehört nicht ins Template, sondern sollte in einer API und der dazugehörige Request in einem Service gekapselt werden. Außerdem verwendest du XML-Notation und Dateinamen schreibt man grundsätzlich in Kleinbuchstaben.

    Hinsichtlich deiner Frage sehe ich hier eine Seitennavigation aber keine Links, für die in der While-Schleife ausgegebenen Images. Insofern kann ich nur vermuten, dass du konzeptionell nach Master-Detail suchst, d.h. eine Liste von Items, in der man beim Klick auf deren Detailansicht gelangt.
     
  3. Tabula_Rasa

    Tabula_Rasa Mitglied

    Registriert seit:
    12 Mai 2017
    Beiträge:
    92
    Punkte für Erfolge:
    8
    In der Schule hat man nicht wirklich was gelernt, deshalb muss ich mich an alles heranarbeiten. Ich will keine extrem professionelle Seite, dafür reichen meine Kapazität nicht.

    Es hat nichts mit der Navigation zu tun. Ich möchte später in der While-Schleife einen Link reinpacken, aber bevor ich das tu, entwickel ich ein Konzept, wie es später funktionieren soll und genau das ist mein Problem, ich hab kein Konzept (oben beschrieben weshalb).
    Hast du Stichwörter, die ich googlen könnte, um mein Problem zu lösen?
     
  4. Tronjer

    Tronjer Moderator Team Moderator

    Registriert seit:
    8 Oktober 2010
    Beiträge:
    4.871
    Punkte für Erfolge:
    83
    Habe ich dir doch genannt. Master-Detail-Pattern.
     
  5. Tabula_Rasa

    Tabula_Rasa Mitglied

    Registriert seit:
    12 Mai 2017
    Beiträge:
    92
    Punkte für Erfolge:
    8
    Ich habe mich damit beschäftigt. Nichts scheint vereinbar mit meinem derzeitigen Konzept zu sein. Um sicherzugehen: was hättest du gemacht? Da sind zwar einige Ansätze im Netz, aber für das, was ich möchte, scheinen sie nicht zu funktionieren.

    Das Problem:

    Bislang können Anime-Schaubilder + Titel erzeugt werden - in der Master-Detail-Beziehung wäre das die Master. Die Verlinkung zum Detail-Item stellt für mich ein Problem dar.

    Ein für mich nicht passender Ansatz:

    Ich könnte zwar immer die Detail-Item-Datei erstellen für jedes Anime (also: Anime1 --> Anime1_Detail.php, Anime 2 -> Anime2_Detail.php) und den Dateinamen einfach in die Datenbank zu dem dazugehörigen Anime eintragen und einfach den Limk in der While-Schleife ausgeben. Das Problem ist die Menge an Dateien. Wenn man nur 50 Animes auf der Liste hat, muss man 50 Detail Items erstellen.

    Deshalb noch mal die Frage: Wie wärst du vorgegangen? Was hättest du benutzt um diese Master-Detail-Beziehung zur realisieren (Asp.net, php etc)? Ich würde liebend gerne diese Beziehung mittels Mysqli zu realisieren, aber die Verlinkung stellt eine große Herausforderung für mich dar.

    Ich danke euch für das Lesen meines Beitrags.
     
  6. Tronjer

    Tronjer Moderator Team Moderator

    Registriert seit:
    8 Oktober 2010
    Beiträge:
    4.871
    Punkte für Erfolge:
    83
    Master bedeutet eine Listenansicht von Items, bsw. die Threads eines Forums. Detail öffnet den entprechenden Thread und zeigt dessen Beiträge.

    Ich würde mir zuerst Gedanken über das Model machen. Welche Properties besitzt ein Anime: Name, Image, etc. Anschließend über das Backend. Das muss nicht auf dem eigenen Server liegen, sondern könnte auch ein externer Provider wie Firebase sein, der eine API anbietet. Für den Anfang lässt sich das sogar mit JSON Files mocken.

    Im Frontend, ich mache das mit Angular, benötige ich zwei Komponenten mit HTML-Templates (Master/Detail) sowie zwei Routen: my_domain/:category und my_domain/:category/:item und einen Service für den Ajax-Request. Außerdem noch die Frage, welches UI-Framework (Bootstrap, Material, etc.) ich verwenden will.
     
  7. Tabula_Rasa

    Tabula_Rasa Mitglied

    Registriert seit:
    12 Mai 2017
    Beiträge:
    92
    Punkte für Erfolge:
    8
    Sehr, sehr viel Input, huch. Ich glaube, ich taste mich weiterhin voran. Deshalb versuch ich mein aktuelles Problem zu lösen. Dein Beispiel mit den Threads und dessen Beiträge ist ein perfektes Beispiel für mein Problem.

    Wenn ich dieses Prinzip dahinter verstehe, kann ich das auf meine Seite anwenden. So fing die suche an. Da ich dachte, dass es viele Tutorials gibt, in denen gezeigt wird, wie man ein Forum "from scratch" erstellt, war ich sogar bereit, von Anfag bis zum Ende ein Mini-Forum zu programmieren. Jedoch ließ sich nur ein veraltetes Tutorial finden, in dem die meisten Befehle nicht mehr aktuell waren (https://code.tutsplus.com/tutorials/how-to-create-a-phpmysql-powered-forum-from-scratch--net-10188). So stellt sich mir weiterhin die Frage, wie ich solch eine Master/Detail-Beziehung mit MySQL und PHP hinbekomme.

    Wenn ich nur diese Logik dahinter verstehen würde, wie Threads dazukommen und bei einem Klick genau die Beiträge dieses Threads angezeigt werden, wäre ich extrem erleichtert.

    Hast du irgendwas, was mich voranbringen könnte?

    Die Anfänger-Fragen tun mir wirklich leid. Nur ist es so, dass ich ein Anfänger bin :D. Deshaöb bitte ich euch um Verständnis.
     
  8. Tronjer

    Tronjer Moderator Team Moderator

    Registriert seit:
    8 Oktober 2010
    Beiträge:
    4.871
    Punkte für Erfolge:
    83
    Viel zu komplex für dein Vorhaben.

    Vergiss PHP/MySQL. Moderne Websites laden lediglich die Bestandteile einer Seite neu, welche sich verändern und das bedeutet ausschließlich JavaScript im Frontend. Für dein Anime-Projekt benötigst du eine index.html und zwei Templates, die je nach Route eingebunden werden. Wenn du statt MySQL eine NoSQL-Datenbank (Mongo, Couch) verwendest, kannst du dir die Tables und Joins ersparen. Noch einfacher geht es mit Cloud-Backends wie firebase oder backand.com

    Den Einstieg findest du hier. Das offizielle Tutorial ist kostenlos, aber ich fand es eher schwerfällig.
    https://angular.io/tutorial

    oder hier. Ist nicht kostenlos, aber geht mehr in die Tiefe und ist zugänglicher.
    https://www.udemy.com/the-complete-guide-to-angular-2

    Ergänzend lädst du hier
    https://www.jetbrains.com

    die Trial von Webstorm herunter. Die lässt sich 4 Wochen kostenlos nutzen. Wenn du in diesem Zeitraum die Tutorials durcharbeitest, hast du das Prinzip verstanden anschließend keine Probleme mehr mit deinen Animes.
     
  9. Tabula_Rasa

    Tabula_Rasa Mitglied

    Registriert seit:
    12 Mai 2017
    Beiträge:
    92
    Punkte für Erfolge:
    8
    Ich bin bereit, diesen mich in diesen Kurs einzuschreiben. Angular ist ein JavaScript Framework. Syntax ist dann wahrscheinlich ähnlich. Das Problem ist ich kann nicht wirklich JavaScript.

    EDIT: Ich schreibe mich trotzdem ein. Vielleicht verstehe ich ja doch etwas :)
     
  10. Tronjer

    Tronjer Moderator Team Moderator

    Registriert seit:
    8 Oktober 2010
    Beiträge:
    4.871
    Punkte für Erfolge:
    83
    Ist auch nicht notwendig. Du lernst hier TypeScript. Das hat wenig mit dem JavaScript zu tun, wie du es bisher kennengelernt hast, sondern orientiert sich syntaktisch eher an Java und ist auch für Leute, die bisher nur PHP kennen, deutlich einfacher zu lesen.
     
  11. Tabula_Rasa

    Tabula_Rasa Mitglied

    Registriert seit:
    12 Mai 2017
    Beiträge:
    92
    Punkte für Erfolge:
    8
    So. 20 Videos durch und schon kommen Fragen auf :D. In der CSS-Datei werden Überschriften ignoriert. Ich habe versucht, die h-tags, also h1 h2 h3 usw, zu färben. Mit dem Code in der CSS-Datei funktioniert es komischerweise nicht, aber wenn ich nicht auf eine andere Datei verweise sondern direkt mittels styles: [`h1 {color: red;}`] die Überschrift färbe, funktioniert es. Dann habe ich geschaut, ob auf die richtige Datei verwiesen wird, und die Antwort lautet: ja. Dann habe ich den h1 tag durch einen p-tag ersetzt und versucht, diesen zu färben und es hat geklappt. Jetzt bin ich ziemlich verwirrt... Weißt du, woran es liegen könnte?

    EDIT: Wahnsinn... ich ändere die Farbe und es klappt auf einmal. Ich verstehe überhaupt nichts mehr, aber hey, es klappt :D. Hab nach der Änderung der Farbe strg+z gedrückt, um wieder die alte Farbe zu haben, die nicht übernommen werden wollte und gespeichert. Jetzt wird sie übernommen.
     
    Zuletzt bearbeitet: 16 August 2017 um 21:49 Uhr