Ankündigung

Einklappen
Keine Ankündigung bisher.

Leere Datensätze aus der Datenbank rausfiltern und nur mit gefüllten arbeiten

Einklappen

Neue Werbung 2019

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

  • Leere Datensätze aus der Datenbank rausfiltern und nur mit gefüllten arbeiten

    Hallo!

    Ich arbeite aktuell an einem kleinen persönlichen Projekt. Ich habe leider ca 2 Jahre nicht mehr so regelmäßig programmiert, weswegen ich ab und an auf dem Schlauch stehe.
    Ich habe eine Form mit 9 Text-Inputs. Der Inhalt dieser Inputs wird in die Datenbank eingetragen, auch wenn der Eintrag leer ist. Beispiel:

    Ich habe 9 Spalten in der Datenbank.
    Spieler1-Spieler9. Ich möchte allerdings nur mit den Einträgen aus den Spalten arbeiten, die nicht = "" sind.

    Ich weiß gerade nur leider nicht so recht, wie ich das am Effektivsten anstellen soll.
    Ich möchte also nur mit eingetragenen Spielern arbeiten.

    Wie kann ich die leeren Spalten so rausfiltern, dass ich nur mit den gefüllten arbeiten kann?

    Ich habe schon etwas gesucht, leider habe ich aber gerade nur gedrosseltes Mobiles Internet, deswegen würde es ewig dauern, den richtigen Thread zu finden :P


    Vielen Dank.

  • #2
    Frage für jeden POST Wert, ob er einem leeren String entspricht oder nicht.

    PHP-Code:
    if ($_POST['field'] != '') { // Enthält einen Wert
    }
    else { 
    // ist leer

    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Zitat von lstegelitz Beitrag anzeigen
      Frage für jeden POST Wert, ob er einem leeren String entspricht oder nicht.

      PHP-Code:
      if ($_POST['field'] != '') { // Enthält einen Wert
      }
      else { 
      // ist leer

      Etwas ähnliches ist mir auch schon in den Sinn gekommen. Dennoch habe ich ja die Spalten Spieler1-Spieler9 in der Datenbank. Und ob ich diese nun mit den leeren Eintrag fülle, oder einen gewählten Text durch diese IF Kombi eintrage, ist ja egal. Das Problem besteht ja dennoch. Allerdings wäre es unter Umständen interessant zu erfahren, wie man, je nachdem, wieviele Spieler sich eintragen, dementsprechend die Spalten erst in der Datenbank erstellen lässt. Falls sich also 5/9 Spieler eintragen, werden nur die Spalten Spieler1-5 erstellt.

      Ob das aber so im Endeffekt funktionieren würde, weiß ich auch nicht so recht.

      Kommentar


      • #4
        Sekunde, du hast die Spalten "Spieler1" bis "Spieler9" in einer Tabelle?
        In diesem Fall ist dein Datenbankdesign fehlerhaft und gehört normalisiert.

        Denn: ein Datensatz besteht immer aus ALLEN Spalten, du kommst also gar nicht drumherum, leere Spielernamen abzuspeichern (selbst wenn du nicht explizit etwas beim Speichern angibst, muss die Datenbank einen Standardwert einsetzen, i.d.R. NULL oder einen leeren String).

        Nach der Normalisierung sollten die Spieler in einer eigenen Tabelle liegen. Zu einem Datensatz einer anderen Tabelle würde man dann (über eine Zwischentabelle) eine n:m Beziehung realisieren.


        Beispiel:
        Tabelle "Spiele": spiel_id, name
        Tabelle "Spieler": spieler_id, name
        Tabelle "Spieler2Spiel": spiel_id, spieler_id

        Ein Spieler kann an vielen Spielen beteiligt sein.
        Ein Spiel kann mehr als einen Spieler haben (und mit dieser Anordnung ist die Anzahl der Spieler im Spiel theoretisch unbegrenzt)
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Zitat von Marosolank Beitrag anzeigen
          Ich habe schon etwas gesucht, leider habe ich aber gerade nur gedrosseltes Mobiles Internet,
          Du solltest bei deinem Projekt lokal arbeiten und eine Kopie der DB installieren, ich hoffe das machst du auch.

          Zum Thema Normalisierung steht auch ein Beitrag in der Wikipedia..

          Kommentar


          • #6
            Zitat von lstegelitz Beitrag anzeigen
            Sekunde, du hast die Spalten "Spieler1" bis "Spieler9" in einer Tabelle?
            In diesem Fall ist dein Datenbankdesign fehlerhaft und gehört normalisiert.

            Denn: ein Datensatz besteht immer aus ALLEN Spalten, du kommst also gar nicht drumherum, leere Spielernamen abzuspeichern (selbst wenn du nicht explizit etwas beim Speichern angibst, muss die Datenbank einen Standardwert einsetzen, i.d.R. NULL oder einen leeren String).

            Nach der Normalisierung sollten die Spieler in einer eigenen Tabelle liegen. Zu einem Datensatz einer anderen Tabelle würde man dann (über eine Zwischentabelle) eine n:m Beziehung realisieren.


            Beispiel:
            Tabelle "Spiele": spiel_id, name
            Tabelle "Spieler": spieler_id, name
            Tabelle "Spieler2Spiel": spiel_id, spieler_id

            Ein Spieler kann an vielen Spielen beteiligt sein.
            Ein Spiel kann mehr als einen Spieler haben (und mit dieser Anordnung ist die Anzahl der Spieler im Spiel theoretisch unbegrenzt)
            Ich habe mich wohl unglücklich ausgedrückt.
            Nein, das ist nicht das Problem. Ich habe die Spalten Spieler 1-9 in meiner Datenbank gespeichert.

            Es wird auch alles abgespeichert. Wenn ich jetzt nur 3/9 Inputs fülle, werden die restlichen 6 Spalten in der Datenbank mit einem leeren String gefüllt. Mir geht es jetzt nur dadrum, genau diese leeren Spalten rauszufiltern, sodass ich nur mit den eingetragenen Spielern (gefüllten Spalten) arbeiten kann.

            Wenn ich jetzt also ausgeben möchte, welche Spieler eingetragen sind, möchte ich natürlich nicht die leeren Strings ausgeben, sondern nur die Spalten, die mit Text gefüllt sind. Wie stellt man das am besten an?

            Kommentar


            • #7
              Zitat von Marosolank Beitrag anzeigen
              Mir geht es jetzt nur dadrum, genau diese leeren Spalten rauszufiltern, sodass ich nur mit den eingetragenen Spielern (gefüllten Spalten) arbeiten kann.
              Du brauchst eine Tabelle Spieler und nicht Spalten. Lies dir meinen Link durch, da steht es gut erklärt.



              Kommentar


              • #8
                Zitat von protestix Beitrag anzeigen

                Du brauchst eine Tabelle Spieler und nicht Spalten. Lies dir meinen Link durch, da steht es gut erklärt.


                Es geht allerdings um ein Spiel, das alle Spieler zusammen spielen.
                Wenn sich jetzt 5/9 Spieler für ein Spiel eintragen, werden Aufgaben für die Spieler random erstellt.
                Alle eingetragenen Spieler spielen dann ein Spiel gemeinsam. Man kann sich das zB. wie eine Art Trinkspiel mit Aufgaben für die Spieler vorstellen :P

                Kommentar


                • #9
                  Nunja, nach der Abfrage des Datensatzes musst du halt durchgehen und überprüfen, ob ein Spielername (Spieler1-9) leer ist oder nicht, vom Prinzip her genau wie der POST-check, aber diesesmal mit dem Datensatz.

                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    Zitat von Marosolank Beitrag anzeigen
                    Es geht allerdings um ein Spiel, das alle Spieler zusammen spielen.
                    Es ist egal ob Artikel, Spieler oder Ersatzteile.
                    Bei DB und Tabellen müssen gewisse Regeln eingehalten werden, damit das Zusammenspiel klappt. eine dieser Regel heisst normalisiere deine Daten.

                    Kommentar

                    Lädt...
                    X