Mit welcher Programmiersprache Web-Oberfläche für Datenbank programmieren?

Hallo zusammen,

könnt ihr mir kurz eure Empfehlungen und Erfahrungen geben bzgl Programmiersprachen?
Folgendes möchte ich tun bzw den Aufwand abschätzen:
Und zwar möchte ich eine Web-Oberfläche für einen Postgresql Server entwickeln. Wir haben zwar schon eine Oberflächliche jedoch funktioniert die Zusammenarbeit mit der Firma, die die Oberfläche entwickelt nicht so gut, weshalb ich gerne versuchen möchte etwas eigenes zu bauen.

Erfahrungen hab ich bisher eher im Bereich von Client-Seitiger Software (zb VBA, SPS, C) aber wenig was Server bzw Websites angeht.

Ansatz bisher ist HTML und PHP. Jedoch liest man viel, dass Python besser als PHP sei. Wenn es so wäre würde sich Python anbieten weil ich mich eh wegen einem anderen Thema da einarbeiten müsste. Mich würde hier Python aber nur für die Oberfläche interessieren weil der Server ja schon vorhanden ist und ich nur die Daten visualisieren will.

Wenn es aber um eine Oberfläche zur Darstellung und Eingabe von Daten in eine Datenbank geht, welche Sprache würdet ihr empfehlen?
PHP soll wohl den leichteren Einstieg bieten und ich könnte schnell Ergebnisse sehen.

Mir geht es nicht darum was besser/schlechter ist. Ich möchte nur verstehen warum andere lieber mit Python arbeiten und welche Vorteile es gegenüber php und umgekehrt hat.

Erfahrungen in andere Richtung sind natürlich auch willkommen.

Danke schon mal.

Server, Computer, SQL, HTML, Webseite, PHP, Python
C# User Login: Passwort-Hash vergleichen?

Hallo,

ich programmiere eine Anwendung, in der man Adressen mit SQL-Server verwalten kann. Man kann Benutzer anlegen und sich mit denen beim Start der Anwendung einloggen.

Nun möchte ich das Passwort hashen. Beim Erstellen des Benutzers wird bereits ein Hashwert generiert und in der Passwort-Spalte in der Datenbank angezeigt. Beim Einloggen soll auch das Passwort gehasht werden und dann der Hash vom Einloggen mit dem aus der Datenbank auf Übereinstimmung verglichen werden.

Ich habe mich an folgendem Tutorial orientiert: https://dotnetcodr.com/2017/10/26/how-to-hash-passwords-with-a-salt-in-net-2/

Ich generiere also immer einen zufälligen Hashwert und das auch beim Einloggen. Wenn ich dann also den Hash vom Einloggen mit dem aus der Datenbank pvergleiche, können die nie übereinstimmen, weil eben bei beiden immer ein zufälliger Wert generiert wird.

Hash (beim Erstellen des Benutzers):

public HashWithSaltResult HashWithGenericSalt(string password, int saltLength, HashAlgorithm hashAlgo)
{
    RNG rng = new RNG();
    byte[] saltBytes = rng.GenerateRandomCryptographicBytes(saltLength);
    byte[] passwordAsBytes = Encoding.UTF8.GetBytes(password);
	List<byte> passwordWithSaltBytes = new List<byte>();

    passwordWithSaltBytes.AddRange(saltBytes);
    passwordWithSaltBytes.AddRange(passwordAsBytes);
    byte[] digestBytes = hashAlgo.ComputeHash(passwordWithSaltBytes.ToArray());

    return new HashWithSaltResult(Convert.ToBase64String(saltBytes), Convert.ToBase64String(digestBytes));
}

Hash (beim Einloggen):

public HashWithSaltResult HashWithSalt(string password, string salt, HashAlgorithm hashAlgo)
{
	// Wie hashe ich beim einloggen?
}

Einloggen:

using (var context = new PersonDbContext())
{
	var query = from p in context.Benutzers where textBoxVorname.Text == p.Vorname && textBoxName.Text == p.Name && HashResultSha512.Digest == p.PasswortDigest select p;
    HashPassword();
}

public void HashPassword()
{
    PasswordWithSaltHasher pwHasher = new PasswordWithSaltHasher();
    HashResultSha512 = pwHasher.HashWithSalt();

    db.CheckBenutzerLogin(textBoxVorname.Text, textBoxPasswort.Text, HashResultSha512.Salt, HashResultSha512.Digest);
}

Was muss ich in

public HashWithSaltResult HashWithSalt

schreiben, damit er den Hashwert aus der Datenbank verwendet und nicht wieder einen neuen Wert generiert?

SQL, programmieren, Passwort, Login, C Sharp, SQL-Server, Visual Studio
C# Datagridview/Datenbank bearbeiten mit Button?

Hallo, ich versuche gerade Einträge in einem Datagridview zu bearbeiten. Ich habe also das Datagridview, einen Bearbeiten Button und eine zweite Form die sich beim klicken auf den Bearbeiten Button öffnet. Ich wähle also einen Eintrag im Grid aus z.B. mit ID: 1 Vorname: Max Nachname: Mustermann. Dann steht im sich öffnenden Fenster nach dem klick auf bearbeiten die ID: 1 Vorname: Max Nachname: Mustermann alles in einer eigenen Textbox, genauso wie ich es haben will. Jetzt ist aber das Problem, wenn ich den Namen z.B. auf Musterfrau ändern will und auf Ok klicke ändert sich der Name im Grid nicht zu Musterfrau sondern bleibt unverändert bei Mustermann.

Bearbeiten Button in der ersten Form:

private void buttonBearbeiten_Click(object sender, EventArgs e)
		{
				var selectedRow = PersonDataGridView.SelectedRows[0];
				var selectedPerson = (Person)selectedRow.DataBoundItem;
            var dlg = new PersonDialog();

            dlg.BindPerson(selectedPerson);
            dlg.ShowDialog();

            if (dlg.DialogResult == DialogResult.OK)
            {
                var person = dlg._selectedPerson;
            
                //_db.EditPerson(person);
                _db.SaveChanges();
                
                füllen();
            }
        }
    }

DbContext:

public DbSet<Person> Personen { get; set; }
public void EditPerson(Person person)
		{
			//Wie bearbeite ich eine Person
            //Beim hinzufügen ist es ja z.B. Personen.Add()
		}

BindPerson-Methode und Ok Button in der zweiten Form(zweite Form wird nach klick auf Bearbeiten Button geöffnet):

public Person _selectedPerson;
    public void BindPerson(Person selectedPerson)
    {
        textBoxID.Text = selectedPerson.Id.ToString();
        textBoxVorname.Text = selectedPerson.Vorname;
        textBoxName.Text = selectedPerson.Name;
        textBoxStrasse.Text = selectedPerson.Straße;
        textBoxHausnummer.Text = selectedPerson.Hausnummer.ToString();
        textBoxWohnort.Text = selectedPerson.Wohnort;
        textBoxPLZ.Text = selectedPerson.PLZ.ToString();

        _selectedPerson = selectedPerson;
    }

    private void buttonOK_Click(object sender, EventArgs e)
    {
        var id = Convert.ToInt32(textBoxID.Text);
        var vorname = textBoxVorname.Text;
        var name = textBoxName.Text;
        var straße = textBoxStrasse.Text;
        int hausnummer = Convert.ToInt32(textBoxHausnummer.Text);
        var wohnort = textBoxWohnort.Text;
        int plz = Convert.ToInt32(textBoxPLZ.Text);

        _selectedPerson.Id = id;
        _selectedPerson.Vorname = vorname;
        _selectedPerson.Name = name;
        _selectedPerson.Straße = straße;
        _selectedPerson.Hausnummer = hausnummer;
        _selectedPerson.Wohnort = wohnort;
        _selectedPerson.PLZ = plz;

        Close();
    }

Was muss ich in meine EditPerson-Methode schreiben damit die Änderungen im Grid sichtbar sind?

Danke euch.

SQL, programmieren, C Sharp, Datenbank, Visual Studio
C# Abbrechen-Button?

Hallo, ich habe ein Problem mit meiner Anwendung. Ich habe eine Form die heißt z.B. Form1 und eine Form2. Beim klick auf den Hinzufügen-Button in Form1 öffnet sich Form2 (dort sollen dann Daten in Textboxen eingegeben). Wenn ich dann auf den Speichern-Button klicke werden diese eingegebenen Daten in eine Datenbank gespeichert und in einem Datagridview in Form1 angezeigt. Das Problem hierbei ist, der Abbrechen-Button in Form2 funktioniert nicht (beim klick auf den Abbrechen-Button soll man wieder zurück zu Form1 kommen). Ich habe eine Datenbank Kontext Klasse "PersonDbContext" in der zwei Methoden sind, einmal zum hinzufügen und einmal entfernen einer Person aus dem grid sowie Datenbank.

DbContext:

public class PersonDbContext : DbContext
	{
		public DbSet<Persons> Person { get; set; }
    public void AddPerson(Persons person)
    {
        Person.Add(person);
        SaveChanges();
        MessageBox.Show(@"Person wurde erfolgreich hinzugefügt.");
    }

    public void RemovePerson(Persons person)
    {
        Person.Attach(person);
        Entry(person).State = EntityState.Deleted;
        SaveChanges();

        MessageBox.Show(@"Person wurde erfolgreich gelöscht.");
    }
}

Form1:

private void buttonHinzufügen_Click(object sender, EventArgs e)
		{
			var dlg = new PersonDialog();
			dlg.ShowDialog();
			var person = dlg.Persons;
        _db.AddPerson(person);
        _db.SaveChanges();
    }

PersonDialog ist die 2. Form die sich dann öffnet (Form2).

Wenn ich auf meinen Abbrechen-Button in meiner 2. Form klicke bekomme ich immer den Fehler das der Wert nicht null sein darf.

Also im DbContext in der AddPerson-Methode heißt es dann der Wert darf nicht null sein (bei Person.Add(person);

public void AddPerson(Persons person)
		{
            //Wert darf nicht null sein.
    		Person.Add(person);
        SaveChanges();
        MessageBox.Show(@"Person wurde erfolgreich hinzugefügt.");
    }

Wenn ich aber eben keine Person hinzufügen will (keine Daten in Form2 eingeben will) ist es null. Ich muss sogesehen eine neue Person hinzufügen und die dann per Löschen-Button in Form1 wieder entfernen weil ich sonst ja die Exception kriege. Also wie bringe ich den Abbrechen-Button in Form2 zum laufen (damit es egal ist ob der Wert null ist bzw halt nichts eingegeben wurde)?

Danke euch. :)

Computer, SQL, programmieren, C Sharp, Datenbank, Visual Studio
Warum kann ich keine Verbindung zur MySQL-Datenbank herstellen?

Hallo,

kann mir jemand sagen warum ich nicht auf meine Datenbank zugreifen kann? Ich bekomme nur diesen Fehler

Must specify port after ':' in connection string 
public static Connection connect() {
   Connection conn = null;
   try {
     Class.forName("com.mysql.jdbc.Driver");

     String host = "http://meineAdresse.ddns.net/";" target="_blank">http://meineAdresse.ddns.net/";
     String port = "3306";
     String database = "Musterdatenbank";
     String user = "Musteruser";
     String password = "Musterpasswort";

     conn = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database + "?user=" + user + "&password=" + password + "&autoReconnect=true");
     return conn;
   }
   catch (ClassNotFoundException | SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
   }

   return conn;
}
Fehler, SQL, programmieren, Java, Connection, Datenbank, MySQL, Zugriff, Raspberry Pi
PHP echo - Leerzeichen zwischen SQL Spalten in einer Select Box?

Moin liebe Community,

ich versuche mir grade nebenbei etwas HTML, PHP, usw. beizubringen. Also ich bin ein noch eigentlich ein blutiger Anfänger der sich langsam voran tastet.

Ich habe grade mal versucht mit einem Tutorial einen AJAX Zugriff auf eine Datenbank zu machen und dann das ganze in Select Boxen auszuwählen.

Die Datenbank ist recht billig. Es gibt die Tabellen CPUs, Mainboards und RAM. Nun wollte ich gerne einen Prozessor auswählen und über den Sockel passende Mainboards anzeigen.

Das ganze klappt eigentlich auch schon. Nur die Ausgabe finde ich recht bescheiden. Da ich noch nicht wirklich erfahren bin, frage ich mich, ob man in der Ausgabe Leerzeichen hinzufügen kann?

<select name="cpu" id="cpu">
<option value="">Bitte CPU wählen</option>
<?php
if($rowCount > 0){
    while($row = $query->fetch_assoc()){ 
        echo '<option value="'.$row['Sockel'].'">'.$row['Hersteller'].$row['TYP'].$row['CPU'].'</option>';
    }
}else{
    echo '<option value="">CPUs nicht auswählbar</option>';
}
?> </select>

In der Zeile:

echo ''.$row['Hersteller'].$row['TYP'].$row['CPU'].'';

definiere ich welche Spalten ausgegeben werden sollen.

Das Endresultat sieht dann z.B. so aus : Inteli77700k.

Kann ich hier irgendwie Leerzeichen einfügen, damit das ganze richtig angezeigt wird ? Also Intel i7 7700k.

Danke im Voraus

Computer, Internet, Technik, SQL, HTML, PHP, Technologie, Spiele und Gaming

Meistgelesene Fragen zum Thema SQL