Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank speichert keinen neuen "User" - PHP Code fehlerhaft?

Einklappen

Neue Werbung 2019

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

  • Datenbank speichert keinen neuen "User" - PHP Code fehlerhaft?

    Hey Community,

    ich bin gerade etwas verzweifelt.
    Ich konstruiere gerade eine Webanwendung, wo es die Möglichkeit geben soll, sich ein Profil anzulegen und aufgrund der gemachten Angaben wird ein - in dem Fall Gesamtenergiebedarf der Person - zurückgegeben.

    Leider funktioniert es nur mit dem schon angelegten Nutzer in der Datenbank. Neuangaben, sprich, neue Nutzer, werden nicht in der Datenbank hinterlegt. Ich bin überfragt, woran es liegen könnte!

    Hier wäre der Code mit den Spalten, den ich bis jetzt in der profile.php eingebettet habe:

    PHP-Code:
    <?php require('db_connection_user_data.php'); ?>
    <?php

    $user_data
    ['name'] = $_POST["name"]; 
    $user_data['height'] = $_POST["height"]; 
    $user_data['weight'] = $_POST["weight"]; 
    $user_data['birthday'] = $_POST["birthday"]; 
    $user_data['gender'] = $_POST["gender"]; 
    $user_data['activity'] = $_POST["activity"]; 

        if (!empty(
    $_POST)) {
            
    $sql "INSERT INTO users (name, height, weight, gender, birthday, activity) VALUES ('$user_data[name]', '$user_data[height]', '$user_data[weight]', '$user_data[gender]', '$user_data[birthday]', '$user_data[activity]')";
            
    $db_user_data mysql_query($sql);
        }

        
    $sql 'SELECT * FROM profile_data LIMIT 1';

        
    $result $db_user_data->query($sql);
        
    //Fehlermeldung, falls etwas mit dem Datenbankaufruf nicht stimmt
        
    if (!$result) {
            die (
    'Etwas stimmt mit der Datenbank nicht: '.$db->error);
        }

        
    $user_data $result->fetch_all(MYSQLI_ASSOC)[0];

        
    $gu 66 + (13.7 $user_data['weight']) + ($user_data['height']) - (6.8 $user_data['birthday']); 
        
    $user_data['calc'] = $gu $user_data['activity']; // Berechnung des Gesamtenergiebedarfs
    ?>

    Hier ein Auszug aus der db_connection_user_data.php:
    PHP-Code:
    <?php
    $db_user_data 
    = new mysqli('localhost''benutzername''pw''nutritionhero_user_data');
    //Bei Problemen zur Verbindung: Fehlermeldung
    if (mysqli_connect_errno()) {
        die (
    'Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
    }
    ?>
    Kann es daran liegen, dass ich in der profile.php die values für den Neueintrag falsch "einbette"?
    Es gibt einen User in der Datenbank, den ich manuell eingepflegt habe. Die Daten des Users sind hinterlegt, sobald ich auf der profile.php bin (durch bspw. "value="<?php echo $user_data['name'] ?>"")

    Ich bin ziemlich überfragt :-/
    Ich hoffe, ihr könnt mir auf die Schnelle weiterhelfen.

    Schon mal vielen Dank!

  • #2
    möglichweise kennst du die php-de wissensdatenbank nicht:
    http://php-de.github.io/jumpto/sql/

    und generell mal http://php-de.github.io/jumpto/sql-injection/

    achja,
    Code:
        $sql = 'SELECT * FROM profile_data LIMIT 1';
    ja select * ist nicht so gut, aber du ziehst wohl nur den ersten datensatz, somit wird das userdata oben überschrieben?
    wobei iich userdata und profile data nicht so ganz zusammenbringen kann.

    Kommentar


    • #3
      Danke für die Hinweislinks!
      Werde ich mir auf jeden Fall ansehen. Und nein, kannte ich bis jetzt leider noch nicht :-/

      Ja, bis jetzt soll der vorherige User überschrieben werden.
      Das war die Lösung, mit der ich versucht habe zu arbeiten, da es ein Projekt ist, was nur für ein Endgerät vorgesehen ist.
      Logischer, "schöner" wäre es jedoch, wenn man mehrere User/Nutzer/Profile anlegen kann. Da muss ich mich nochmal intensiver mit auseinandersetzen.

      profile_data ist die Datenbank, in der der neue Nutzer eingespeichert werden soll. user_data ist bis jetzt nicht relevant bzw. könnte auch profile_data genannt werden. Habe da nur Variablen für angelegt, die ich so genannt habe. Ohne höhere Absicht.

      Kommentar

      Lädt...
      X