MYSQL Datenbank Häkchen auslesen

wopu

Mitglied
Hallo zusammen,
Ich stehe wieder vor einer Herausforderung. Meine erste Aufgabe mit MYSQL Datenbank. Der Text von den einzelnen Spalten lässt sich ohne weiteres auslesen aber mit den beiden Spalten locked und online komme ich nicht zurecht.

hOGkwc.jpg


Entweder ist das Kästchen voll oder es hat ein Häkchen drinnen. Wie liest man das aus??
Kann mir da jemand weiterhelfen??
 
Hi,

SQL:
SELECT * FROM tabelle;

Deine Frage ist zu unpräzise, bitte gib uns mehr Details: Welche Oberfläche ist das? PHP? Ein normales Programm? Was ist deine Aufgabe? Wie sieht deine Abfrage / Code bis jetzt aus? Was zeigt er stattdessen an?

So 3-Werte Checkboxen werden normal mit 0, 1, 2 oder -1, 0, 1 gespeichert.

Grüsse,
BK
 
Zuletzt bearbeitet:
Sorry das hatte ich vergessen. Das Bild ist ein Ausschnitt aus der Ansicht vom "SQL Manager 2007 Lite for MYSQL" ich wusste nicht wie ich diese Felder beschreiben soll und ich weiss auch nicht wie man solche Felder ausliest.

Mein jetziger Code sieht so aus.

PHP:
<?php
    // Verbindung zum Datenbankserver
    mysql_connect("ip", "user", "pw") or die (mysql_error ());

    // Datenbank auswählen
    mysql_select_db("db-name") or die(mysql_error());

    // SQL-Query
    $strSQL = "SELECT * FROM tabelle";

    // Query ausführen (die Datensatzgruppe $rs enthält das Ergebnis)
    $rs = mysql_query($strSQL);
  
    // Schleifendurchlauf durch $rs
    // Jede Zeile wird zu einem Array ($row), mit mysql_fetch_array
    while($row = mysql_fetch_array($rs)) {
  
      // Schreibe den Wert der Spalte issi (der jetzt im Array $row ist)
     echo "ISSI:" . $row['issi'] . "Rufname:" . $row['name'] . "Locked:" . $row['locked'] . "Online:" . $row['online'] . "Status:" . $row['status'] . "Gruppe:" . $row['current_group'] . "<br />";
     }

    // Schließt die Datenbankverbindung
    mysql_close();
    ?>

Das wird angezeigt : ISSI:XXXXXXX Rufname:XXXXXXXXLocked:Online:Status:Gruppe:XXXXXXXX
Die XXX werden richtig angezeigt nur die Häkchen in locked und online nicht.
 
Hi,

Ok, damit lässt sich was anfangen :)

Versuch mal bitte ein var_dump($row); in der Schleife und poste hier das Ergebnis, am Besten auch die drei oben gezeigten Datensätze. Ich vermute dass ein NULL-Value die gefüllte Box bewirkt.

Grüsse,
BK
 
So wird das Ergebnis angezeigt:

Code:
[0]=>
  string(7) "xxxxxxx"
  ["issi"]=>
  string(7) "xxxxxxx"
  [1]=>
  string(12) "xxxxxxx"
  ["name"]=>
  string(12) "xxxxxxx"
  [2]=>
  NULL
  ["alias"]=>
  NULL
  [3]=>
  string(1) ""
  ["deactivated"]=>
  string(1) ""
  [4]=>
  string(1) ""
  ["locked"]=>
  string(1) ""
  [5]=>
  string(1) ""
  ["online"]=>
  string(1) ""
  [6]=>
  NULL
  ["status"]=>
  NULL
  [7]=>
  NULL
  ["status_timestamp"]=>
  NULL
  [8]=>
  string(7) "xxxxxxx"
  ["current_group"]=>
  string(7) "xxxxxxx"
  [9]=>
  NULL
  ["position"]=>
  NULL
  [10]=>
  NULL
  ["position_timestamp"]=>
  NULL
}
ISSI:xxxxxxx    Rufname:xxxxxxxLocked:Online:Status:Gruppe:xxxxxxx<br />array(22) {
  [0]=>
  string(7) "xxxxxxx"
  ["issi"]=>
  string(7) "xxxxxxx"
  [1]=>
  string(12) "xxxxxxx"
  ["name"]=>
  string(12) "xxxxxxx"
  [2]=>
  NULL
  ["alias"]=>
  NULL
  [3]=>
  string(1) ""
  ["deactivated"]=>
  string(1) ""
  [4]=>
  NULL
  ["locked"]=>
  NULL
  [5]=>
  NULL
  ["online"]=>
  NULL
  [6]=>
  NULL
  ["status"]=>
  NULL
  [7]=>
  NULL
  ["status_timestamp"]=>
  NULL
  [8]=>
  NULL
  ["current_group"]=>
  NULL
  [9]=>
  NULL
  ["position"]=>
  NULL
  [10]=>
  NULL
  ["position_timestamp"]=>
  NULL
}
ISSI:xxxxxxx    Rufname:xxxxxxxLocked:Online:Status:Gruppe:<br />array(22) {
  [0]=>
  string(7) "xxxxxxx"
  ["issi"]=>
  string(7) "xxxxxxx"
  [1]=>
  string(12) "xxxxxxx"
  ["name"]=>
  string(12) "xxxxxxx"
  [2]=>
  NULL
  ["alias"]=>
  NULL
  [3]=>
  string(1) ""
  ["deactivated"]=>
  string(1) ""
  [4]=>
  string(1) ""
  ["locked"]=>
  string(1) ""
  [5]=>
  string(1) ""
  ["online"]=>
  string(1) ""
  [6]=>
  NULL
  ["status"]=>
  NULL
  [7]=>
  NULL
  ["status_timestamp"]=>
  NULL
  [8]=>
  string(7) "xxxxxxx"
  ["current_group"]=>
  string(7) "xxxxxxx"
  [9]=>
  NULL
  ["position"]=>
  NULL
  [10]=>
  NULL
  ["position_timestamp"]=>
  NULL
}
ISSI:xxxxxxx    Rufname:xxxxxxxLocked:Online:Status:Gruppe:xxxxxxx<br />array(22) {
 
Zuletzt bearbeitet:
Hi,

bitte das nächste mal die Ausgabe aus dem Seitenquelltext kopieren, nicht aus der Browser Ansicht. Und hier im Forum zwischen [ code] und [/ code] setzen, so bleibt die Formatierung erhalten. So kann das doch keiner auf die Schnelle lesen...

Fällt dir an den Daten irgendwas auf? Wie sieht die Definition der Tabellenspalte aus, welcher datentyp liegt hinter den Checkbox Spalten?

Übrigens: Die mysql-* Funktionen sind seit Jahren veraltet und sollten nicht mehr verwendet werden. Bitte nimm dir die Zeit und schau dir PDO / Prepared Statements mit mysqli an. Bringt dir dann auch gleich noch ein Plus an Sicherheit.

Grüse,
BK
 
Zuletzt bearbeitet:
Ich habe es oben ausgebessert aber ich steh trotzdem noch auf der Leitung. entweder ist ein Leerzeichen oder NULL als Angabe dahinter
 
Zuletzt bearbeitet:
Aber jetzt da sieht man ja schon wieviel Ahnung ich habe!!
Ich nehme an du meinst den Feldtyp der nennt sich "BIT"
 
Hi,

Jetzt passt die Anzeige oben, so ist das ganze gleich viel übersichtlicher :)

Möglichkeit 1:
Caste deine Bit-Spalten auf einen Integer.

Möglichkeit 2:
Ändere den Spaltentyp von BIT auf BOOL.

Quelle:
https://stackoverflow.com/questions/8778906/fetching-bit-field-with-mysql-query

Intepretation der Checkbox im obigen Beispiel:
Da du bei der geposteten Ausgabe nicht sagst, welche Ausgabe zu welchem Datensatz im Screenshot gehört, kann ich nur folgende Regel für die Ausgabe vermuten:
- NULL: Gefüllte Checkbox
- 0: Nicht angehakt
- 1: Angehakt

Grüsse,
BK
 

Neue Beiträge

Zurück