Ankündigung

Einklappen
Keine Ankündigung bisher.

Filmdatenbank

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Filmdatenbank

    Hallo @ all,

    ich möchte mir eine FilmDB machen für alle filme meiner Externen Festplatte Die ich dann als liste ausgeben kann etc.

    1. Meine Datenbank sieht wie folgt aus:

    ID int ( 8 )
    Titel varchar ( 32 )
    Genre varchar ( 64 )
    Handlung text
    Laenge int ( 8 )
    FSK int ( 8 )

    erste frage ist also ob die größen so reichen nen kommi wer sowas schonmal gemacht hat wär super

    2. Das ist mein Formular

    Code:
    <form action="" method="post">
    <p>
    	<p>
    		<h3>Titel</h3>
    		
    		<p>Titel:&nbsp;<input name="Titel" maxlength="40" size="40"></p>
    	</p>
    
    	<p>	
    		<h3>Genre</h3>
    	<table>
    		<td>
    		<p><input type="checkbox" name="Abenteuer" value="Abenteuer" /> Abenteuer</p>
    		<p><input type="checkbox" name="Action" value="Action" /> Action</p>
    		<p><input type="checkbox" name="Drama" value="Drama" /> Drama</p>
    		<p><input type="checkbox" name="Familie" value="Familie" /> Familie</p>
    		</td>
    		<td>
    		<p><input type="checkbox" name="Fantasie" value="Fantasie" /> Fantasie</p>
    		<p><input type="checkbox" name="Grusel" value="Grusel" /> Grusel</p>
    		<p><input type="checkbox" name="Horror" value="Horror" /> Horror</p>
    		<p><input type="checkbox" name="Komoedie" value="Komoedie" /> Komoedie</p>
    		</td>
    		<td>
    		<p><input type="checkbox" name="Kriegsfilm" value="Kriegsfilm" /> Kriegsfilm</p>
    		<p><input type="checkbox" name="Krimi" value="Krimi" /> Krimi</p>
    		<p><input type="checkbox" name="Romanze" value="Romanze" /> Romanze</p>
    		<p><input type="checkbox" name="Sci-Fi" value="Sci-Fi" /> Sci-Fi</p>
    		</td>
    		<td>
    		<p><input type="checkbox" name="Thriller" value="Thriller" /> Thriller</p>
    		<p><input type="checkbox" name="Western" value="Western" /> Western</p>
    		</td>
    	</table>
    	</p>
    	
    	<p>
    		<h3>Handlung</h3>
    		
    		<p><textarea name="Handlung" cols="40" rows="10"></textarea></p>
    	</p>
    	
    	<p>
    		<h3>Laenge</h3>
    		
    		<p>Laenge&nbsp;<input name="Laenge" size="4" maxlength="3" />&nbsp;in Minuten</p>
    	</p>
    	
    	<p>
    		<h3>Altersfreigabe</h3>
    		
    		<p><select name="FSK">
    			<option value="0">
    			0 </option>
    			<option value="6">
    			6 </option>
    			<option value="12">
    			12 </option>
    			<option value="16">
    			16 </option>
    			<option value="18">
    			18 </option>
    			</select>&nbsp;FSK</p>
    	</p>
    	
    	<input type="submit" value="Senden" /><input type="reset" />
    </p>
    meine größte frage ist ich habe noch nie mit Checkboxen oder einem auswahlmenue gearbeitet
    dazu kommt das ja mehrere Genre angeklickt werden können die dann als Kette am besten mit trennungszeichen (leerzeichen oder komma) gespeichert werden muss
    und da ich bis jetzt nur einen login geschrieben habe weiß ich nicht wie ich die angegebenen Daten per sql einlesen soll wie gesagt.

    1. wegen den Checkboxen und auswahlmenue
    2. wegen den mehreren Genres

    Wär für vorschläge und netten rad/kritik dankbar


  • #2
    Die Fatenbank und Frennungszeichen Sehr schön.

    Du willst doch nach den Genres garantiert auch suchen können, oder? Dann lieber mal das Thema komplex-komplexe Beziehungen bei Datenbanken anschauen. Glaub mir, macht dir das Leben an der Stelle definitiv leichter. Auch mal einen Blick auf die Datenbank-Normalisierung werfen.

    Das Titel-Feld könnte etwas kurz sein. Zumindest wenn du die Deutschen Titel mitspeichern willst. Da hängt ja oft noch ein "bechreibender" Halbsatz dran.

    Wenn das eine Fingerübung zu Lernen sein soll, wunderbar. Wenn es nicht um das Lernen, sondern um das Haben geht, gibt es haufenweise fertige Lösungen. Je nachdem was du als Player verwendest (beispielsweise MyMovies für das WMC oder Ember Media Manager für XBMC).

    Kommentar


    • #3
      Das ist keine Datenbank, sondern eine Tabelle, und diese ist für deinen Zweck nicht optimal geeignet.
      Genre varchar ( 64 ) machst du komplett weg

      und schaffst noch zwei zusätzliche Tabellen:

      Tabelle Genre
      id int autoincrement primary index
      genre varchar(255)
      Da erfasst du pro Genre einen Eintrag, zB 1=action, 2=SciFi usw

      Tabelle FilmGenre
      id_film int
      id_genre int
      Hier werden später die FilmIDs mit den Genre-Ids verknüpft. Wenn film 4711 zu Genre 3,5,8 und 14 gehört, dann hast du vier Zeilen ind er Tabelle

      4711 3
      4711 5
      4711 8
      4711 14
      In
      PHP-Code:
      if ($var != 0) {
        
      $var 0;

      Kommentar


      • #4
        Okay die Datenbank ist jetzt soweit fertig glaube ich

        film_tb:

        Film_ID int( 11 )
        Titel varchar( 255 )
        Handlung text
        Laenge int( 8 )
        FSK int( 8 )

        genre_tb

        Genre_ID int( 11 )
        genre varchar( 255 )

        Inhalt:

        1 Abenteuer
        2 Action
        3 Drama
        4 Familie
        5 Fantasie
        6 Grusel
        7 Horror
        8 Komoedie
        9 Kriegsfilm
        10 Krimi
        11 Romanze
        12 Sci-Fi
        13 Thriller
        14 Western

        film_genre

        ID_Film int(11)
        ID_Genre int(11)

        aber wie ich die SQL abfrage mit den checkboxen und so machen sollweis ich immernoch nicht

        Kommentar


        • #5
          Im HTML-Bereich kannst du das hier bauen:
          Code:
          <select name="genre[]" size="10" multiple>
          ...
          </select>
          und dazwischen halt die Zeilen deiner Tabelle genre_tb ausgeben lassen. Man kann dann mehrere Zeilen markieren, wenn man die STRG-Taste gedrückt hält und du hast dann alle ausgewählten values im Array $_POST['genre'] (probiers aus).

          Gespeichert wird das ganze so:
          Zuerst die Filmdaten in die tabelle Film_tb. Die vergebene ID mit mysql_insert_id() abholen und dann den Array $_POST['genre'] mit diser ID in die dritte Tabelle schreiben.
          PHP-Code:
          if ($var != 0) {
            
          $var 0;

          Kommentar


          • #6
            Kleiner Hinweis:
            MySQL :: MySQL 5.1 Referenzhandbuch :: 11.2 Numerische Datentypen

            INT(zahl) heißt nicht etwa, dass hier ein zahl-stelliges INT Feld angelegt wird.
            Ein INT hat immer 4 Bytes (32 Bit) und kann somit Werte zwischen -2147483648 und 2147483647 annehmen (bei vorzeichenbehafteten Zahlen).
            Die Zahl in Klammern gibt an, auf wie viele Zeichen aufgefüllt werden soll. Entweder mit Nullen, oder (default-mäßig) mit Leerzeichen; Stichwort: Zerofill.
            Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
            Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

            Kommentar


            • #7
              @Wolla

              ich würde die checkboxen vorziehen und das muss jah iwie zu realisieren sein

              @dennis81

              jah das weiß ich ist Binärrechnung aba warum sprichst du das an?

              Kommentar


              • #8
                Zitat von Gody1989 Beitrag anzeigen
                @dennis81

                jah das weiß ich ist Binärrechnung aba warum sprichst du das an?
                Weil du in deinem, mittlerweile (weg-)editierten, Ausgangspost gefragt hast, ob die Feldlängen ausreichend sind und du für INT verschiedene Füllwerte verwendest. Von daher bin ich mir nach wie vor sicher, dass dir unklar ist, was die Zahl in Klammern bei INT bedeutet. Und mit Binärrechnung hat mein Hinweis wenig zu tun, bis auf den Wertebereich, der nur noch mal zur Verdeutlichung erwähnt werden sollte.
                Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
                Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

                Kommentar


                • #9
                  Was auch sehr hilfreich ist, einfach mal nen Testform anzulegen und sich nach einen Testsubmit die Variablen anzeigen zu lassen. Dann sieht man auch sehr schnell wie das funktioniert

                  Muss ich z.B: jedes mal machen wenn ich eine Uploadanbindung baue, da dies so selten bei mir ist.

                  Kommentar


                  • #10
                    @dennis81

                    Das hatte nur den Grund das ich die ersten selbst auf 8 gesetzt hatte und einmal es vergessen habe und da hat phpmyadmin glaub selbst die 11 eingesetzt gehabt und dann habe ich das als standard genommen

                    @smilla

                    Ist jah nicht so das ich nix ausprobiere ich lese neben bei ein Buch ( Einstieg in PHP 5.3 & MySQL 5.4 ) und guck mir ne Video2brain DVD an ( die das leider nicht behandet wie ich feststelle ) ein bin ich jetzt fix in sowas ( hatte es jah 2 Jahre ina schule mit nbote 'gut' - 'sehr gut' ) aba iwie hab ich gerade ne echt schlechte phase -.-

                    Kommentar


                    • #11
                      Ja, phpadmin setzt die 11 selber. Grundsätzlich kann man die Angabe aber auch wegfallen lassen.

                      Bsp: id INT auto_increment primary key
                      Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
                      Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

                      Kommentar


                      • #12
                        villeicht hätte ich meine frage besser ausdrücken sollen fällt mir gerade auf also

                        mein Datenbank Modell steht ja hier & das sind meine checkboxen:

                        PHP-Code:
                        <p><input type="checkbox" name="Abenteuer" value="Abenteuer" /> Abenteuer</p>
                        <
                        p><input type="checkbox" name="Action" value="Action" /> Action</p>
                        <
                        p><input type="checkbox" name="Drama" value="Drama" /> Drama</p>
                        <
                        p><input type="checkbox" name="Familie" value="Familie" /> Familie</p>
                        <
                        p><input type="checkbox" name="Fantasie" value="Fantasie" /> Fantasie</p>
                        <
                        p><input type="checkbox" name="Grusel" value="Grusel" /> Grusel</p>
                        <
                        p><input type="checkbox" name="Horror" value="Horror" /> Horror</p>
                        <
                        p><input type="checkbox" name="Kom&ouml;die" value="Kom&ouml;die" /> Kom&ouml;die</p>
                        <
                        p><input type="checkbox" name="Kriegsfilm" value="Kriegsfilm" /> Kriegsfilm</p>
                        <
                        p><input type="checkbox" name="Krimi" value="Krimi" /> Krimi</p>
                        <
                        p><input type="checkbox" name="Romanze" value="Romanze" /> Romanze</p>
                        <
                        p><input type="checkbox" name="Sci-Fi" value="Sci-Fi" /> Sci-Fi</p>
                        <
                        p><input type="checkbox" name="Thriller" value="Thriller" /> Thriller</p>
                        <
                        p><input type="checkbox" name="Western" value="Western" /> Western</p
                        Wie genau soll ich sie speichern? Muss ich die IDs in der Zwischentabelle speichern? aba das dürfte dann ne extrem große Tabelle werden wenn bei jesen film 1-14 einträge dazukommen können oder?

                        und wie kann ich die dann am besten wieder darstellen?

                        Kommentar


                        • #13
                          überall:
                          name="genre[]" value="(GenreID aus Tabelle)"

                          Mach eine Schleife durch deine Genre-Tabelle, dafür hast du sie ja, und bau daraus die Checkbocen zusammen. Wenn du später weitere Genres erfindest, dann ist das HTML-Formular schon automatisch ergänzt.
                          PHP-Code:
                          if ($var != 0) {
                            
                          $var 0;

                          Kommentar


                          • #14
                            Die IDs solltest du in einer Zuordnungstabelle speichern. Die Größe ist da kaum relevant, da dort nur jeweils 2 IDs pro Datensatz erfasst sind.

                            Außerdem solltest du dir überlegen, ob du die Checkboxen nicht lieber wie folgt erstellst:
                            PHP-Code:
                            <p><input type="checkbox" name="genre[]" value="1" /> Abenteuer</p>
                            <
                            p><input type="checkbox" name="genre[]" value="2" /> Action</p>
                            <
                            p><input type="checkbox" name="genre[]" value="3" /> Drama</p>
                            <
                            p><input type="checkbox" name="genre[]" value="4" /> Familie</p>
                            <
                            p><input type="checkbox" name="genre[]" value="5" /> Fantasie</p>
                            <
                            p><input type="checkbox" name="genre[]" value="6" /> Grusel</p>
                            <
                            p><input type="checkbox" name="genre[]" value="7" /> Horror</p>
                            <
                            p><input type="checkbox" name="genre[]" value="8" /> Kom&ouml;die</p>
                            <
                            p><input type="checkbox" name="genre[]" value="9" /> Kriegsfilm</p>
                            <
                            p><input type="checkbox" name="genre[]" value="10" /> Krimi</p>
                            <
                            p><input type="checkbox" name="genre[]" value="11" /> Romanze</p>
                            <
                            p><input type="checkbox" name="genre[]" value="12" /> Sci-Fi</p>
                            <
                            p><input type="checkbox" name="genre[]" value="13" /> Thriller</p>
                            <
                            p><input type="checkbox" name="genre[]" value="14" /> Western</p
                            Als value die ID aus der Datenbank nehmen und die Daten per Array übergeben (genre[]). Die Handhabung ist so unkomplizierter.

                            edit: Hm... 'nen Tacken zu spät
                            Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
                            Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

                            Kommentar


                            • #15
                              Und man sieht es malwieder stellt man die richtigen fragen bekommt man auch die richtigen Antworten

                              damit komm ich schon viel weiter Danke euch allen =)

                              Kommentar

                              Lädt...
                              X