SQL – die neusten Beiträge

PHP/HTML - Wie kann ich in jeder Zelle meiner Tabelle ein Dropdownmenü ausgeben?

Hallo zusammen,

folgendes Problem:

Ich möchte eine Tabelle haben, die in jeder Zelle ein Dropdownmenü hat. Später möchte ich die ausgewählten Werte in der Datenbank speichern.

Da die Tabelle selbst nicht statisch und aufgrund von anderen Parametern größer/kleiner, etc. ist, kann ich nicht in jede Zeile das Dropdown hineinschreiben.

Mein Dropdownmenü (welches einzeln einwandfrei funktioniert):

<form id="form" name="form" method="post">
  <select Vorname2='NEW'>
    <option value=""> </option>
    <?php while ($cat = mysqli_fetch_array($vornamen,MYSQLI_ASSOC)):; ?>
      <option value="<?php echo $cat['vorname'];?>">
        <?php echo $cat['vorname'];?>
      </option>
    <?php endwhile; ?>
  </select>
</form>

Wenn ich diesen Code zweimal verwende (auch unter anderem Namen), dann kann ich dennoch nur bei dem Menü etwas auswählen, welches zuerst im Quelltext vorkommt.

Die Wiederholungen versuche ich mit einer Loop gleichzeitig mit dem Aufbau der Tabelle zu intigrieren. In jede einzelne "Test"-Zeile soll später das Dropdownmenü.

  for ($x = 0; $x < $anzahltage; $x++) {
    echo "<tr>";
      echo "<td>";
?>
    Hier steht der Quelltext von oben
<?php
  echo "</td>";
  echo "<td> test 2</td>";
  echo "<td> test 3</td>";
  echo "<td> test 4</td>";
  echo "<td> test 5</td>";
  echo "<td> test 6</td>";
  echo "</tr>";
}

Gibt es da bessere Ideen?

Ich bin nicht so gut im Programmieren. Ich kenne nicht alle Befehle. Also bitte nicht zu streng sein. :)

SQL, HTML, Webseite, Datenbank, MySQL, PHP, Webentwicklung

MQTT und SQL Server auf gleicher Ubuntu Server VM?

Ich betreibe einen MQTT Server (Mosquitto Broker) innerhalb einer Ubuntu Server Distribution innerhalb einer VM und würde gern einen Microsoft SQL Server in der gleichen VM laufen lassen um die Daten, die an den MQTT-Broker geschickt zu werden speichern zu können.

  1. Frage: Ich kann beide Server installieren und diese laufen auch parallel, aber wie stelle ich von außen bei Anfragen sicher, den richtigen Server zu erwischen? Weil die Server IP ist bei beiden gleich, wird das nur über den Port geregelt ? (MQTT: 1883 und MS-SQL Server: 1433 ?)
  2. Ich habe ein Pyhton Skript, welche alle MQTT Topics abonniert und die Daten in die Datenbank schreibt. Wie sorge ich dafür, dass dieses in Dauerschleife für immer ausgeführt wird und parallel zu den beiden Servern vom Betriebssystem ausgeführt wird? (Habe bereits Python Entwicklungsumgebung installiert, und kann Skripte einfach so ausführen), Klar kann ich da ne Dauerschleife reinprogrammieren, aber wie bediene ich dann parallel den Rest? Somit kommen wir zu Frage 3:
  3. Wie kann ich mir MQTT Server Konsole, SQL-Server Konsole und Ausgaben des Python Skript gleichzeitig anzeigen lassen? (Ubuntu Server nur in Terminalversion, keine grafische Benutzeroberfläche)

Bin offensichtlich nicht so vertraut mit Linux und habe das Gefühl mir würden nur ein paar Grundlagen fehlen..
Hoffe ihr könnt mir helfen, danke!

Server, Computer, Linux, SQL, Ubuntu, Datenbank, Python, mqtt

SQL effizientes mehrdimensionales Histogramm erstellen?

Hallo,

ich habe folgende SQL Tabelle und würde aus dieser mit SQL Abfragen gerne ein mehrdimensionales Histogramm erzeugen.

Meine Tabelle:

`sex` => VARCHAR(1), //für Geschlecht

`age` => INT,

`salary` => INT

Gefüllt könnte z.B. so aussehen (aber mit viel(!) mehr Einträgen natürlich):

Am ende will ich mit meiner Abfrage folgende Ausgabe erzielen:

Wie man in der obigen Ausgabe sieht, will ich die Bereiche bei age und salary nicht(!) gleich verteilen. Alle Lösungen welche also immer in 10er Schritten gehen, funktionieren in meinem Fall nicht. Die "..." Zeile in der Ausgabe soll andeuten, dass die Bereiche bei F(emale) einfach nach der selben Logik (aber vielleicht mit unterschiedlichen Bereichsbreiten) weitergehen. Daran schließt sich dann M(ale), mit den gleichen Bereichen wie F(emale) an. Count gibt jeweils die Anzahl der gefundenen Einträge zu den gegebenen Einschränkungen an. Also z.B. für den ersten Fall sowas wie

SELECT COUNT(*) from `companysalaries` WHERE age >= 18 AND age <= 19 AND salary >= 0 AND salary <= 999 AND sex='F';

Mein bisheriger (funktionierender) Ansatz war:

  1. Stored procedure erstellen
  2. temporary tables als Hiflstabellen mit Bereichen füllen und Hilfstabelle für Ausgabe erstellen
  3. 3-fach geschachtelete WHILE schleife mit Select und INSERT in einen Ausgabetabelle

JETZT ZUR EIGENTLICHEN FRAGE:

Mir kommt meine bisherige Lösung sehr ineffizient vor (54 Zeilen :/), und ich denke mir, dass man ja eigentlich in so einer schönen Sprache wie SQL dieses Problem doch einfacher lösen können müsste. Meine Lösung habe ich auch schon mehrmals überarbeitet, aber ohne die Leserlichkeit aufzugeben, komme ich nicht wesentlich unter die 54 Zeilen. Daher die Frage, ob das irgendwie besser, effizienter und/oder kürzer geht. Die Lösung sollte zudem nur(!) SQL enthalten und keine sonstigen Erweiterungen benötigen/nutzen.

Danke im Voraus für alle Antworten

whgoffline

Bild zum Beitrag
Computer, Technik, SQL, programmieren, Datenbank, Informatik, Technologie

Verbindung zur Datenbank checken - PHP?

Hi, ich hab folgende Funktion in einer Klasse dbConenction:

private mixed $connection;

public function __construct()
{
    return $this->connect();
}

private function connect()
{
    try {
        $host = "localhost";
        $username = "USER_NAME";
        $pwd = "PWD";
        $database = "DB_NAME";
        $this->connection = new mysqli($host, $username, $pwd, $database);

        if ($this->connection->connect_error) {
            throw new Exception("Connection to database failed. | " . $this->connection->connect_error);
        }
        return $this->connection;
    } catch (Exception $exception) {
        $this->connection = null;
        databaseErrorHandling($exception);
        return null;
    }
}

Die Verbindung zur Datenbank funktioniert auch, ich kann Queries ausführen. Doch mein Problem, wenn ich zum Beispiel den Username für die Datenbank ändere, soll eigentlich durch

if ($this->connection->connect_error)

eine Exception geworfen werden, weil die Verbindung ja nicht aufgebaut werden kann, da der Username falsch ist. Das Gleiche funktioniert auch nicht, wenn ich zum Beispiel das Passwort ändere. Hab in den Docs von PHP nachgelesen und dort haben die das genauso gemacht...

$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

Jemand eine Idee, warum das nicht funktioniert, so wie es funktionieren sollte :D, oder Verbesserungsvorschläge?

Danke für jede Hilfe!!!

Computer, SQL, HTML, Webseite, programmieren, Datenbank, MySQL, PHP

Einfache Datenbanktabellen: Würdet ihr über ID oder Bezeichnung in die Tabelle gehen?

Beispiel: Es gibt eine Tabelle Abteilungen, die im Wesentlichen nur aus ID + Abteilungsname besteht

ID  Name
123 Produktion 
124 Versand
128 IT
...

Wenn ihr die Mitarbeitertabelle befüllen wollte, in der es einen Fremdschlüssel ABTEILUNG_ID gibt, würdet ihr im Quelltext die IDs direkt als Konstanten anlegen und verwenden, also

insert into MA (... ABTEILUNG_ID...) values (...' + constProduktion_ID + '...)

oder würdet ihr die ID anhand des Namens lesen

insert  into MA (...ABTEILUNG_ID...) values (...(select abt.ID from ABTEILUNG abt where abt.Name = ''Produktion'')...)

Die erste Variante hat den Nachteil, dass man die ID nicht ändern darf. Löschte man beispielsweise den Eintrag für Produktion und fügte ihn erneut ein, würde die Abteilung nicht mehr unter der alten ID gefunden werden. Man müsste die Konstante für die ID im Quelltext anpassen.

Die zweite Variante hat den Nachteil, dass der Name sich nicht ändern darf, weil der Subselect sonst ins Leere laufen würde.

Irgendwie erscheinen mir beide Varianten suboptimal, aber die erste sogar besser, weil die ID sich nicht so häufig ändern dürfte. Programmiertechnisch fühlt es sich dennoch falsch an, die IDs als Konstanten zu speichern und direkt ins Fremdschlüsselfeld einzutragen.

Bei den Abteilungen mag das vielleicht unkritisch sein, weil man normalerweise eine Oberfläche mit einer Auswahlliste an Abteilungen anbietet, die in der Datenbank zur Verfügung stehen.
Was ist aber mit anderen Feldern, die unterschiedliche Stati oder Bereiche darstellen oder wenn Einträge erfasst werden, die Standardwerte verwenden und nicht auf einer Eingabe aus einer Benutzeroberfläche her rühren?

Beispielsweise soll in einer Applikation für die Produktion automatisch die Abteilung auf 123 (Produktion) gesetzt werden.

Hat jemand von euch einen Rat?

Computer, Technik, SQL, programmieren, Datenbank, Technologie, Anfälligkeit

Meistgelesene Beiträge zum Thema SQL