Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] MySQL - Einloggter User bestimmte Zelle ändern auf Website

Einklappen

Neue Werbung 2019

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

  • [Erledigt] MySQL - Einloggter User bestimmte Zelle ändern auf Website

    Hallo PHP.de User,
    Nach reichlichen überlegen und durchforsten des Internets hab ich für mein Problem leider keine Lösung gefunden.

    Ausgangsfall:

    SQL Tabelle wird in einer HTML Tabelle ausgegeben -> Vorname, Nachname, Status, Abteilung, NutzerName

    Man kann sich auf der Webseite mit seinem Nutzernamen aus dieser SQL Tabelle einloggen.

    Nun möchte ich, dass der eingelogge Nutzer seinen Status über die Webseite ändern kann (Im Büro, Beim Kunden etc.)

    Mein Gedankenansatz:

    Mit der $_SESSION['Nutzername'] schauen welcher Nutzer es ist, dann die bestimmte Zelle -> Nutzername -> Status in der Zeile ändern


    Jedoch komme ich nicht drauf wie ich die Daten mit dem Dropdown button für den richtigen User in die richtige Zelle schreibe

    Code des Dropdown Buttons:
    PHP-Code:
     <div class="btn-group btn-group-lg">
              <
    class="btn btn-default dropdown-toggle" data-toggle="dropdown" href="#">Status &auml;ndern <class="fa fa-gear"></i>&nbsp;<br><span class="caret"></span></a>
              <
    ul class="dropdown-menu">
                <
    li>
                  <
    a href="#">Im B&uuml;ro</a>
    //Hier müsste rein -> bei user test in die Zelle Status -> im Büro
                
    </li>
                <
    li>
                  <
    a href="#">Im Homeoffice</a>
                </
    li>
                <
    li>
                  <
    a href="#">Beim Partner</a>
                </
    li>
                <
    li>
                  <
    a href="#">Im Urlaub</a>
                </
    li>
                <
    li>
                  <
    a href="#">Krank</a>
                </
    li>
              </
    ul>
            </
    div


  • #2
    Zitat von loldielol Beitrag anzeigen
    SQL Tabelle wird in einer HTML Tabelle ausgegeben -> Vorname, Nachname, Status, Abteilung, NutzerName
    gibst du wirklich die gesamte Tabelle aus oder nur den, für den Nutzer relevanten Datensatz?

    Wenn ich dein Problem richtig verstanden habe, willst du beim wechseln des Status, den selben in die Datenbank schreiben?

    Du könntest natürlich ein Formular dafür nutzen, mit einem Submit "Status wechseln".
    Oder du nutzt Ajax und setzt im Change-Event einen Request an ein PHP-Script und löst da die Datenbank-Abfrage aus.
    Ich persönlich würde eher dazu tendieren, den Status der Session anzufügen, da er imo genauso temporär ist wie die Session.
    ------
    Grüße Manü

    Kommentar


    • #3
      Zitat von Manu86 Beitrag anzeigen
      gibst du wirklich die gesamte Tabelle aus oder nur den, für den Nutzer relevanten Datensatz?

      Wenn ich dein Problem richtig verstanden habe, willst du beim wechseln des Status, den selben in die Datenbank schreiben?

      Du könntest natürlich ein Formular dafür nutzen, mit einem Submit "Status wechseln".
      Oder du nutzt Ajax und setzt im Change-Event einen Request an ein PHP-Script und löst da die Datenbank-Abfrage aus.
      Ich persönlich würde eher dazu tendieren, den Status der Session anzufügen, da er imo genauso temporär ist wie die Session.

      Ich gebe die gesamte Tabelle aus, da jeder Mitarbeiter von jedem Mitarbeiter die Daten einsehen können soll.

      Nun wenn z.B. der Mitarbeiter
      Code:
      Vorname: Hans Nachname: Müller Status: im Büro Abteilung: Webdesign Nutzername: Hansi123
      sein Status ändern möchte, soll dies auch nur bei ihm geschehen. Eingeloggt ist er ja mit seinem Nutzernamen mit einer Session, aber wie kann er nur in diese Zeile schreiben?

      Kommentar


      • #4
        Where?
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          sein Status ändern möchte, soll dies auch nur bei ihm geschehen. Eingeloggt ist er ja mit seinem Nutzernamen mit einer Session, aber wie kann er nur in diese Zeile schreiben?
          Du kannst zB in der Liste jeweils bei dem angemeldetn Benutzer selbst ein kleine Formular rein machen (Select + Button) wo man dann seinen Status ändern kann. Dh jeder der angemeldet ist sieht nur bei sich selbst das Form in der Liste bei seinem Eintrag, alle anderen sehen nur Text.
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Zitat von tkausl Beitrag anzeigen
            Where?
            So weit hab ich auch schon gedacht und die Abfrage so gestaltet:

            PHP-Code:
            $Nutzername = $_SESSION["Nutzername"]; 

            <?php
            $aendern 
            "UPDATE Mitarbeiter Set status = (je nach dem welcher Button gedrückt wurde WHERE $Nutzername = ["Nutzername“];
            $update mysql_query($aendern);
            ?>

            Kommentar


            • #7
              Du baust die Liste ja so und so auf.. und bei dem einen angemeldetn Benutzer halt das Form bauen, bei allen anderen nur den Text von deren aktuellen Stauts anzeigen (oder ein leeres Feld, was auch immer) . Oder ich verstehe dich falsch ..
              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Zitat von hausl Beitrag anzeigen
                Du baust die Liste ja so und so auf.. und bei dem einen angemeldetn Benutzer halt das Form bauen, bei allen anderen nur den Text von deren aktuellen Stauts anzeigen (oder ein leeres Feld, was auch immer) . Oder ich verstehe dich falsch ..
                Hab mal ein Foto angehängt, wie ich es mir vorgestellt habe:

                Kommentar


                • #9
                  Zitat von loldielol Beitrag anzeigen
                  So weit hab ich auch schon gedacht und die Abfrage so gestaltet:

                  PHP-Code:
                  $Nutzername = $_SESSION["Nutzername"]; 

                  <?php
                  $aendern 
                  "UPDATE Mitarbeiter Set status = (je nach dem welcher Button gedrückt wurde WHERE $Nutzername = ["Nutzername“];
                  $update mysql_query($aendern);
                  ?>
                  Und was soll das, Syntaxtechnisch, darstellen?
                  Zitat von nikosch
                  Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                  Kommentar


                  • #10
                    Zitat von tkausl Beitrag anzeigen
                    Und was soll das, Syntaxtechnisch, darstellen?
                    Wenn ich das wüsste... Ich komm einfach nicht drauf

                    Kommentar


                    • #11
                      Zitat von loldielol Beitrag anzeigen
                      Hab mal ein Foto angehängt, wie ich es mir vorgestellt habe:
                      Ja, dann steht das Formular halt unter der Liste auch ok, ist ja schlussendlich egal wo das Form ausgegeben wird. Und woran scheitert es nun genau, der Syntax für die query wie ich sehe?

                      Tipp: lass dir die mit echo ausgeben und frag danach auch ab mysql_error() ob es einen Fehler gab.

                      Und mysql_ ist übrigens veraltet und wird es bald nicht mehr geben. http://php.net/manual/en/migration55.deprecated.php
                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Also so ist die Ausgabe aller Nutzer ja sinnvoll ... aber wo jetzt noch das Problem besteht erschließt sich mir nicht.

                        steht ein Nutzer in der Session?
                        Aufbau tabelle -> ist name der selbe wie in der Session?
                        nein -> weiter
                        ja -> setze die Select-Box ein
                        -> Tabellenaufbau beendet

                        bei Auswahl eines neuen Status
                        -> setze AJAX-Request ab
                        ->rufe Funktion mit DB-Update auf

                        Optional:
                        Form um die Selectbox mit Submit-Button
                        ------
                        Grüße Manü

                        Kommentar


                        • #13
                          Warum beginnst du mit <?php erst nach dem ersten PHP-Kommando? Versuch mal so in der Art...

                          PHP-Code:
                          <?php 

                          $Nutzername 
                          $_SESSION["Nutzername"];  

                          // die Namen der Felder/Werte müssen natürlich richtig sein -> Du!
                          $sql "UPDATE `Mitarbeiter` Set `status` = '".."' WHERE `Nutzername` = '".$Nutzername."' "
                          echo 
                          "<pre>".$sql."</pre>";  // zum debuggen

                          $update mysql_query($sql) or die('Ungültige Anfrage: ' mysql_error());
                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            Zitat von hausl Beitrag anzeigen
                            Warum beginnst du mit <?php erst nach dem ersten PHP-Kommando? Versuch mal so in der Art...

                            PHP-Code:
                            <?php 

                            $Nutzername 
                            $_SESSION["Nutzername"];  

                            // die Namen der Felder/Werte müssen natürlich richtig sein -> Du!
                            $sql "UPDATE `Mitarbeiter` Set `status` = '".."' WHERE `Nutzername` = '".$Nutzername."' "
                            echo 
                            "<pre>".$sql."</pre>";  // zum debuggen

                            $update mysql_query($sql) or die('Ungültige Anfrage: ' mysql_error());
                            PHP-Code:
                            <?php  

                            $Nutzername 
                            $_SESSION['Nutzername'];   


                            $aendern "UPDATE mitarbeiter SET Status = "Test" WHERE Nutzername LIKE '$Nutzername' ";  
                            echo 
                            "<pre>".$sql."</pre>";  // zum debuggen 

                            $update mysql_query($aendern) or die('Ungültige Anfrage: ' mysql_error());

                            ?>
                            Hab es jetzt mal so probiert bekomme aber immer die Fehlermeldung:
                            Parse error: syntax error, unexpected 'Test' (T_STRING) in /***/****/***/***.php on line 138

                            Und stehe total auf dem Schlauch, wo ist da der Fehler?

                            Kommentar


                            • #15
                              Warum benutzt du da denn auch doppelte Hochkommas? In der Where-Klausel machst du es doch richtig, abgesehen von der Einladung zur SQL-Injection.

                              Standardtext für die Datenbankverbindung:
                              Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
                              Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
                              Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm
                              Relax, you're doing fine.
                              RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                              Kommentar

                              Lädt...
                              X