ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
492
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    PatrikB1985 ist offline Rookie
    Registriert seit
    May 2012
    Ort
    Bochum, Germany
    Beiträge
    8
    Guten Tag liebe Community!
    Habe da ein Problem! Ich will Values von einer Select-Auswahl in der Datenbank speichern! Habe im Value eine Zahl angegeben******

    PHP-Code:
    $position1 "<select name=\"position1\">" "<optgroup label=\"Position 1\">" "<option value=\"0\">" "Keine Gruppe" "</option>" "<option value=\"1\">" "Berufsfeuerwehr" "</option>"
                 
    "<option value=\"2\">" "Rettungsdienst" "</option>" "<option value=\"3\">" "Feuerwehr und Rettungsdienst" "</option>" "</optgroup>" "</select>"
    PHP-Code:
    while ($row mysql_fetch_object($ergebnis)) {
        echo 
    "<tr>" "<td>" $row->Benutzer "</td>" "<td>" $position1 "</td>" "<td>" $position2 "</td>" "<td>" $position3 "</td>" "<td>" $position4 "</td>"
             
    "<td>" $freigabe "</td>" "</tr>";

    PHP-Code:
    if(isset($_POST['Benutzergruppenuebersicht'])) {
        
    $position_1 $_POST["position1"];
        
    $position_2 $_POST["position2"];
        
    $position_3 $_POST["position3"];
        
    $position_4 $_POST["position4"];
        
    $freigabe_0 $_POST["freigabe"];
    } else {
        echo 
    "Daten nicht gesendet!";

    PHP-Code:
    $eintrag "UPDATE login SET P1='$position1', P2='$position2', P3='$position3', P4='$position4', Freigabe='$freigabe' ORDER BY Benutzer"
    Was mache ich Falsch? Es werden die Values nicht übergeben!
    Bitte um einen Tip
    LG Patrik
     

  2. #2
    Avatar von Maniac
    Maniac ist offline Mitglied Rubin
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.283
    Schau dir mal deine Variablen an, du übergibst die String wo du deine Select-Auswahl speicherst ($position1). Die Felder allerdings stehen in "$position_1".
    Wie sieht deine Tabelle aus? Denn ein Update der Tabelle mit einem Order By scheint mir hier fehl am Platz. Sind das allgemeine Datensätze oder warum differenzierst du nicht nach einem Feld?
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  3. #3
    Avatar von tombe
    tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    4.563
    Sehe ich das richtig das es mehrere SELECT-Listen gibt (position1, position2, ...). Nur zur Sicherheit, haben diese immer einen anderen Namen?

    Wird der IF-Block "Benutzergruppenuebersicht" durchlaufen?

    Was wird ausgegeben wenn du dir den Inhalt von $eintrag mit echo am Bildschirm ausgibst?
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Beiträge bitte mit Codetags ausstatten!

    Ein Blindtext-Generator ist oft hilfreich.

    placeholder-Images: lorempixel.com

    HTML, JavaScript, CSS, ... online testen: jsfiddle.net oder jsbin.com

  4. #4
    PatrikB1985 ist offline Rookie
    Registriert seit
    May 2012
    Ort
    Bochum, Germany
    Beiträge
    8
    Ich habe eine Tabelle wo alle registrierten Mitglieder der Homepage aufgelistet werden und will ihnen Rechte verteilen!

    Brauche ich also nicht die Variablen Position1 abfangen****?
     

  5. #5
    PatrikB1985 ist offline Rookie
    Registriert seit
    May 2012
    Ort
    Bochum, Germany
    Beiträge
    8
    Zitat Zitat von tombe Beitrag anzeigen
    Sehe ich das richtig das es mehrere SELECT-Listen gibt (position1, position2, ...). Nur zur Sicherheit, haben diese immer einen anderen Namen?

    Wird der IF-Block "Benutzergruppenuebersicht" durchlaufen?

    Was wird ausgegeben wenn du dir den Inhalt von $eintrag mit echo am Bildschirm ausgibst?
    Punkt 1:
    Die SELECT-Listen haben alle 5 einen anderen Namen!

    Punkt 2:
    Keine Ahnung!

    Punkt 3:
    Er gibt das aus: Positionen wurden vergeben!UPDATE login SET P1='0', P2='0', P3='0', P4='0', Freigabe='0' ORDER BY Benutzer
     

  6. #6
    Avatar von Maniac
    Maniac ist offline Mitglied Rubin
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.283
    In "$position1" steht doch ein String, dein gesamtes Select-HTML!
    In "$position_1" steht dein Wert nach dem absenden des Formulares, da es ein Kopie von "$_POST['position1']" ist.

    Wenn du ein UPDATE auf deiner Tabelle ohne einer expliziten Zuweisung/Kennung (zb ID der Zeile) durchführst, werden ausnahmslos alle Datensätze upgedatet. Also irgendwo solltest du referenzieren welcher User das ist.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  7. #7
    PatrikB1985 ist offline Rookie
    Registriert seit
    May 2012
    Ort
    Bochum, Germany
    Beiträge
    8
    Zitat Zitat von Maniac Beitrag anzeigen
    In "$position1" steht doch ein String, dein gesamtes Select-HTML!
    In "$position_1" steht dein Wert nach dem absenden des Formulares, da es ein Kopie von "$_POST['position1']" ist.

    Wenn du ein UPDATE auf deiner Tabelle ohne einer expliziten Zuweisung/Kennung (zb ID der Zeile) durchführst, werden ausnahmslos alle Datensätze upgedatet. Also irgendwo solltest du referenzieren welcher User das ist.
    Punkt 1:
    Muss ich die Werte der SELECT-Listen mit mysql_real_escape_string(); abfangen?

    Punkt 2:
    Ich gebe jedem User eine ID die von MySQL per Auto Increment ausgegeben wird!


    Lösung:
    PHP-Code:
    while ($row mysql_fetch_object($ergebnis)) {
        
    $id $row["ID"];
        echo 
    "<tr>" "<td>" $row->Benutzer[$id] . "</td>" "<td>" $row->P1[$id] . "</td>" "<td>" $row->P2[$id] . "</td>" "<td>" $row->P3[$id] . "</td>" "<td>" $row->P4[$id] . "</td>"
             
    "<td>" $freigabe[$id] . "</td>" "</tr>";
    }
    } else {
        echo 
    "<p />";
        echo 
    "<tr>" "<td class=\"Problem\" colspan=\"6\">" "<text class=\"Text1\">" "Keine Benutzer gefunden!" "</text>" "</td>" "</tr>";

    Kann man das so machen****?
    Geändert von PatrikB1985 (08.05.12 um 14:11 Uhr) Grund: Lösung****?
     

  8. #8
    Avatar von Maniac
    Maniac ist offline Mitglied Rubin
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.283
    zu Punkt 1: nein, kannst du, musst du aber nicht, da die Werte nicht direkt vom User eingegeben werden.

    zu Punkt 2:
    Ich denke du gehst diese Sache ganz falsch an, du musst natürlich beim speichern/updaten der Tabelle auch schauen welchen User du gerade bearbeitet hast. In deinem Code ist einiges nicht ersichtlich.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  9. #9
    PatrikB1985 ist offline Rookie
    Registriert seit
    May 2012
    Ort
    Bochum, Germany
    Beiträge
    8
    Zitat Zitat von Maniac Beitrag anzeigen
    zu Punkt 2:
    Ich denke du gehst diese Sache ganz falsch an, du musst natürlich beim speichern/updaten der Tabelle auch schauen welchen User du gerade bearbeitet hast. In deinem Code ist einiges nicht ersichtlich.
    Kannst du mir da einen Tip geben? Ich lese mir gerade nebenbei ein PHP Buch durch, aber verstehen das nicht mit der ID******
     

  10. #10
    Avatar von tombe
    tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    4.563
    Wie Maniac schon schreibt, die SQL-Anweisung ist sicher nicht korrekt. So in etwa solltest du die Update-Anweisung auf einen bestimmten Benutzer begrenzen.
    PHP-Code:
    $eintrag "UPDATE login SET P1='$position1', P2='$position2', P3='$position3', P4='$position4', Freigabe='$freigabe' WHERE Benutzer = 'IRGEND_EIN_WERT'"
    Außerdem kommt doch hoffentlich auch noch irgendwo die Anweisung wo die SQL-Anweisung auch ausgeführt wird (mysql_query).

    Nochmal die Frage zu dem IF-Block. Wenn du nicht weißt ob er ausgeführt wird, dann mache doch einfach mal ein
    PHP-Code:
    echo "Ich bin hier!"
    mit rein.
    Denn wenn der Block nicht durchlaufen wird, hilft es nichts wenn der enthaltene Code stimmt.

    Code :
    1
    2
    3
    4
    
    ID | Nachname
    01 | Müller
    02 | Huber
    03 | Schmid

    Code sql:
    1
    
    UPDATE tabelle SET Nachname = 'Schmidt' WHERE ID = '03'

    So eine ID-Spalte hast du ja wohl auch. Mit diesem Wert musst du dann die SQL-Anweisung auf den entsprechenden Benutzer beschränken.

    Wenn du nur schreibst:

    Code sql:
    1
    
    UPDATE tabelle SET Nachname = 'Schmidt'

    Gibt es nachher nur noch Datensaätze mit dem Nachnamen Schmidt (und bei dir ist es im Moment so!).
    Geändert von tombe (08.05.12 um 14:24 Uhr)
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Beiträge bitte mit Codetags ausstatten!

    Ein Blindtext-Generator ist oft hilfreich.

    placeholder-Images: lorempixel.com

    HTML, JavaScript, CSS, ... online testen: jsfiddle.net oder jsbin.com

  11. #11
    Avatar von Maniac
    Maniac ist offline Mitglied Rubin
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.283
    Du hast zb eine Usertabelle wo die ID autincrement ist. Weitere Felder dieser Tabelle könnten zb. Namen, Email, PW usw... sein.
    Jetzt machst du eine weitere Tabelle mit den Rechten.
    Diese kann so aufgebaut werden:

    ID, UserId, Recht1, Recht2, usw...

    ID = autoincrement,
    UserID = Die ID welche zum referenzieren verwendet wird. sprich "User.ID == rechte.UserID"
    Hier stellst du die Beziehung zwischen den 2 Tabellen her.

    Die Rechte denk ich mal kannst du dir selbst zusammenreimen.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  12. #12
    PatrikB1985 ist offline Rookie
    Registriert seit
    May 2012
    Ort
    Bochum, Germany
    Beiträge
    8
    Zitat Zitat von Maniac Beitrag anzeigen
    Du hast zb eine Usertabelle wo die ID autincrement ist. Weitere Felder dieser Tabelle könnten zb. Namen, Email, PW usw... sein.
    Jetzt machst du eine weitere Tabelle mit den Rechten.
    Diese kann so aufgebaut werden:

    ID, UserId, Recht1, Recht2, usw...

    ID = autoincrement,
    UserID = Die ID welche zum referenzieren verwendet wird. sprich "User.ID == rechte.UserID"
    Hier stellst du die Beziehung zwischen den 2 Tabellen her.

    Die Rechte denk ich mal kannst du dir selbst zusammenreimen.
    Ich habe alles in einer Tabelle!
    ID, Benutzer, Passwort, Email usw.
    auch P1 = Position1 (bestimmte Benutzergruppen)!

    Ich weiss nur nicht wie ich auf die ID der User zugreife, da ich mir viele User anzeigen lasse!

    Kann ich das nicht mit dem Radio-Button und der Value= $row->ID machen?
    Geändert von PatrikB1985 (08.05.12 um 14:40 Uhr)
     

  13. #13
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.053
    Du siehst vor lauter Fehler nicht was wo wie läuft.
    Du musst mal debuggen um zu verstehen was da wirklich abgeht (das machen auch Profis!)
    [PHP] Debuggen mit var_dump()
    [PHP] [MySQL] Debug Queries
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

  14. #14
    PatrikB1985 ist offline Rookie
    Registriert seit
    May 2012
    Ort
    Bochum, Germany
    Beiträge
    8
    @Yaslaw
    Ich habe euch nicht den kompletten Code geschickt! Sicher habe ich auch Debug Codes eingebaut! Diese geben mir aber keine Fehler mehr aus!
     

  15. #15
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.053
    Dann versetze die var_dumps() dorthin wo du Probleme vermutest.
    Wenn du nicht weiss t ob ein if greift, dann ist das der Ort wo man vorher und nachher var_dump setzt:
    PHP-Code:
    var_dump('vor dem if()'$value);
    if(
    $value == 'foobar'){
        
    var_dump('im if()');

    Nachtrag:
    Auch HTML-Code und SQL-Syntax kann man schön und lesbar formatieren. Es hilft einiges beid er Fehlersuche wenn man den Code besser lesen kann.

    a) den SQL-Teil in PHP formatieren: Heredoc-Syntax
    b) Die Complex (Curly) Syntax anwenden um die Strings zusammenzusetzen. Das reduziert das Chaos mit öffnenden und schliessenden Anführungszeichen und den Verbindungs-Punkten
    PHP-Code:
    $eintrag = <<<SQL
        UPDATE login 
        SET 
            P1='
    {$position1}', 
            P2='
    {$position2}', 
            P3='
    {$position3}', 
            P4='
    {$position4}', 
            Freigabe='
    {$freigabe}'
        ORDER BY Benutzer;
    SQL;

    ...

    $position1 = <<<HTML
    <select name="position1">
        <optgroup label="Position 1">
            <option value="0">Keine Gruppe</option>
            <option value="1">Berufsfeuerwehr</option>
            <option value="2">Rettungsdienst</option>
            <option value="3">Feuerwehr und Rettungsdienst</option>
        </optgroup>
    </select>
    HTML;

    ...

    while (
    $row mysql_fetch_object($ergebnis)) {
        echo <<<HTML
        <tr>
            <td>
    {$row->Benutzer}</td>
            <td>
    {$position1}</td>
            <td>
    {$position2}</td>
            <td>
    {$position3}</td>
            <td>
    {$position4}</td>
            <td>
    {$freigabe}</td>
        </tr>
    HTML;

     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

Thema nicht erledigt

Ähnliche Themen

  1. oracle; plsql; select in variable speichern
    Von binfgi im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 29.08.06, 18:58
  2. Select Feld mit verschiedene Values
    Von Uli_87 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 18.07.06, 15:58
  3. select boxen in eine tabelle speichern
    Von Firzen im Forum PHP
    Antworten: 1
    Letzter Beitrag: 17.07.05, 22:15
  4. Antworten: 9
    Letzter Beitrag: 03.03.05, 09:27
  5. Select-Anfrage-Daten speichern
    Von lindin im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 23.09.04, 09:41